Skip to content

Commit

Permalink
DO-NOT-MERGE: mptcp: add CI support
Browse files Browse the repository at this point in the history
Currently supported:

- Github Actions:
  - build-validation: check different combinations of validation
  - IRC: send notifications to the IRC channel
  - Update TopGit tree: sync with net-next and then override the export
    branch.

- Cirrus:
  - Run tests in a KVM: selftests, kunit, packetdrill, etc.

Signed-off-by: Matthieu Baerts <matthieu.baerts@tessares.net>
  • Loading branch information
matttbe authored and jenkins-tessares committed Oct 21, 2021
1 parent 5440262 commit f8299ef
Show file tree
Hide file tree
Showing 4 changed files with 487 additions and 0 deletions.
48 changes: 48 additions & 0 deletions .cirrus.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,48 @@

# Launch 2 jobs in //: with and without debug
task:
name: KVM validation
only_if: $CIRRUS_TAG != '' ## only tags
timeout_in: 90m

container:
image: mptcp/mptcp-upstream-virtme-docker
kvm: true ## Needed for the tests
cpu: 4 ## Max 16 per project, even number with kvm
memory: 4G ## Max 4 per CPU

env:
CIRRUS_CLONE_DEPTH: 1 ## no need to have a full clone
CIRRUS_LOG_TIMESTAMP: true ## useful
INPUT_CCACHE_MAXSIZE: 1G
matrix:
MATRIX_JOB: normal
MATRIX_JOB: debug

ccache_cache:
folder: ".virtme/ccache"
reupload_on_changes: true
fingerprint_script:
- echo ${MATRIX_JOB}

test_script: /entrypoint.sh expect-${MATRIX_JOB}

on_failure:
vmlinux_artifacts:
path: "vmlinux.zstd"

always:
conclusion_artifacts:
path: "conclusion.txt"
type: text/plain
summary_artifacts:
path: "summary.txt"
type: text/plain
tap_result_artifacts:
path: "*.tap"
type: text/plain
# JUnit format is for the moment only useful for PR but publish them just in case for later
junit_artifacts:
path: "*.tap.xml"
type: text/xml
format: junit
44 changes: 44 additions & 0 deletions .github/workflows/build-validation.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,44 @@
name: "MPTCP Upstream Build Validation"
on:
push:
branches-ignore:
- 'archived/**' # previous branches
- 't/**' # TopGit tree
- 'net-next' # part of the TopGit tree
- 'for-review' # part of the TopGit tree
- 'export' # part of the TopGit tree
tags:
- 'export/**' # the CI create a new tag once there is a new export
- 'patchew/**' # patchew is using tags

jobs:
build:
name: "Build (matrix)"
runs-on: ubuntu-latest
strategy:
fail-fast: false
matrix:
defconfig: ['x86_64', 'i386']
ipv6: ['with_ipv6', 'without_ipv6']
mptcp: ['with_mptcp', 'without_mptcp']
steps:
- name: "Checkout"
uses: actions/checkout@v2
with:
fetch-depth: 100 # we should not have more commits on top of net-next/export
- name: "Setup cache for CCache"
uses: actions/cache@v2
with:
path: ${{ github.workspace }}/.ccache
key: ${{ runner.os }}-build-${{ matrix.defconfig }}-${{ matrix.ipv6 }}-${{ matrix.mptcp }}-${{ github.run_id }}${{ github.sha }}
restore-keys: |
${{ runner.os }}-build-${{ matrix.defconfig }}-${{ matrix.ipv6 }}-${{ matrix.mptcp }}-
- name: "Build Validation"
uses: multipath-tcp/mptcp-upstream-validate-export-action@main
with:
# we want to validate each commits on top of net-next/export except for stable
each_commit: ${{ ! startswith(github.ref, 'refs/heads/stable/') }}
ccache_maxsize: 620M ## 5/2^3=625: 5GB = project limit ; 2^3 = matrix
defconfig: ${{ matrix.defconfig }}
ipv6: ${{ matrix.ipv6 }}
mptcp: ${{ matrix.mptcp }}
Loading

0 comments on commit f8299ef

Please sign in to comment.