aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--.github/workflows/ci-pipeline.yml260
-rwxr-xr-xscripts/ci/coverage.sh2
2 files changed, 260 insertions, 2 deletions
diff --git a/.github/workflows/ci-pipeline.yml b/.github/workflows/ci-pipeline.yml
new file mode 100644
index 000000000..b47528977
--- /dev/null
+++ b/.github/workflows/ci-pipeline.yml
@@ -0,0 +1,260 @@
+name: CI
+
+on: [push, pull_request]
+env:
+ ARCH: x86_64
+ CC: gcc
+ CONTAINER_NAMESPACE: ghcr.io/opendataplane/odp-docker-images
+ OS: ubuntu_18.04
+
+jobs:
+ Checkpatch:
+ runs-on: ubuntu-18.04
+ steps:
+ - uses: actions/checkout@v2
+ with:
+ fetch-depth: 0
+
+ - name: Install dependencies
+ run: sudo apt install codespell
+
+ - name: Check pull request
+ if: github.event_name == 'pull_request'
+ env:
+ CHECKPATCH_COMMAND: ./scripts/checkpatch.pl
+ uses: webispy/checkpatch-action@v7
+
+ - name: Check push
+ if: github.event_name == 'push'
+ run: |
+ AFTER=${{ github.event.after }}
+ BEFORE=${{ github.event.before }}
+ if [ -z "${BEFORE}" ] || [ -z "${AFTER}" ]; then
+ COMMIT_RANGE=""
+ else
+ COMMIT_RANGE="${BEFORE}..${AFTER}"
+ fi
+ ./scripts/ci-checkpatches.sh ${COMMIT_RANGE}
+
+ Documentation:
+ runs-on: ubuntu-18.04
+ steps:
+ - uses: actions/checkout@v2
+
+ - name: Install dependencies
+ run: |
+ sudo apt install doxygen asciidoctor libconfig-dev libssl-dev mscgen cmake graphviz libdpdk-dev
+ sudo gem install asciidoctor
+ - name: Build
+ shell: bash
+ run: |
+ ./bootstrap
+ ./configure --enable-user-guides
+ pushd doc
+ make
+ popd
+ touch ./doxygen.log
+ # Doxygen does not trap on warnings, check for them here.
+ make doxygen-doc 2>&1 | tee ./doxygen.log
+ ! fgrep -rq warning ./doxygen.log
+
+ Build_x86_64:
+ runs-on: ubuntu-18.04
+ env:
+ ARCH: x86_64
+ strategy:
+ fail-fast: false
+ matrix:
+ cc: [gcc, clang]
+ conf: ['', 'CFLAGS=-O3', 'CFLAGS=-O0 --enable-debug --enable-debug-print', '--enable-lto', '--enable-lto --disable-abi-compat', '--enable-pcapng-support']
+ exclude:
+ - cc: clang
+ conf: '--enable-lto'
+ - cc: clang
+ conf: '--enable-lto --disable-abi-compat'
+ steps:
+ - uses: actions/checkout@v2
+ - run: sudo docker run -i -v `pwd`:/odp --privileged --shm-size 8g -e CC="${{matrix.cc}}"
+ -e CONF="${{matrix.conf}}" $CONTAINER_NAMESPACE/odp-ci-${OS}-${ARCH} /odp/scripts/ci/build_${ARCH}.sh
+
+ Build_arm64:
+ runs-on: ubuntu-18.04
+ env:
+ ARCH: arm64
+ strategy:
+ fail-fast: false
+ matrix:
+ cc: [gcc, clang]
+ steps:
+ - uses: actions/checkout@v2
+
+ - name: Minimal
+ run: sudo docker run -i -v `pwd`:/odp --privileged --shm-size 8g -e CC="${{matrix.cc}}"
+ -e CONF="${CONF}" $CONTAINER_NAMESPACE/odp-ci-${OS}-${ARCH} /odp/scripts/ci/build_${ARCH}.sh
+
+ - name: --disable-abi-compat
+ env:
+ CONF: "--disable-abi-compat"
+ run: sudo docker run -i -v `pwd`:/odp --privileged --shm-size 8g -e CC="${{matrix.cc}}"
+ -e CONF="${CONF}" $CONTAINER_NAMESPACE/odp-ci-${OS}-${ARCH} /odp/scripts/ci/build_${ARCH}.sh
+
+ - name: Ubuntu 20.04
+ env:
+ OS: ubuntu_20.04
+ run: sudo docker run -i -v `pwd`:/odp --privileged --shm-size 8g -e CC="${{matrix.compiler}}"
+ -e CONF="${CONF}" $CONTAINER_NAMESPACE/odp-ci-${OS}-${ARCH} /odp/scripts/ci/build_${ARCH}.sh
+
+ Build_ppc64el:
+ runs-on: ubuntu-18.04
+ env:
+ ARCH: ppc64el
+ strategy:
+ fail-fast: false
+ matrix:
+ conf: ['', '--disable-abi-compat']
+ steps:
+ - uses: actions/checkout@v2
+ - run: sudo docker run -i -v `pwd`:/odp --privileged --shm-size 8g -e CC="${CC}"
+ -e CONF="${{matrix.conf}}" $CONTAINER_NAMESPACE/odp-ci-${OS}-${ARCH} /odp/scripts/ci/build_${ARCH}.sh
+
+ Build_i386:
+ runs-on: ubuntu-18.04
+ env:
+ ARCH: i386
+ strategy:
+ fail-fast: false
+ matrix:
+ cc: [gcc, clang]
+ conf: ['', '--disable-abi-compat']
+ steps:
+ - uses: actions/checkout@v2
+ - run: sudo docker run -i -v `pwd`:/odp --privileged --shm-size 8g -e CC="${{matrix.cc}}"
+ -e CONF="${{matrix.conf}}" $CONTAINER_NAMESPACE/odp-ci-${OS}-${ARCH} /odp/scripts/ci/build_${ARCH}.sh
+
+ Build_OS:
+ runs-on: ubuntu-18.04
+ env:
+ ARCH: x86_64
+ strategy:
+ fail-fast: false
+ matrix:
+ cc: [gcc, clang]
+ os: ['centos_7', 'centos_8']
+ steps:
+ - uses: actions/checkout@v2
+ - run: sudo docker run -i -v `pwd`:/odp --privileged --shm-size 8g -e CC="${{matrix.cc}}"
+ -e CONF="${CONF}" $CONTAINER_NAMESPACE/odp-ci-${{matrix.os}}-${ARCH} /odp/scripts/ci/build_${ARCH}.sh
+
+ Build_gcc-10:
+ runs-on: ubuntu-18.04
+ env:
+ ARCH: x86_64
+ CC: gcc-10
+ OS: ubuntu_20.04
+ strategy:
+ fail-fast: false
+ matrix:
+ conf: ['', '--enable-lto']
+ steps:
+ - uses: actions/checkout@v2
+ - run: sudo docker run -i -v `pwd`:/odp --privileged --shm-size 8g -e CC="${CC}" -e CXX=g++-10
+ -e CONF="${{matrix.conf}}" $CONTAINER_NAMESPACE/odp-ci-${OS}-${ARCH} /odp/scripts/ci/build_${ARCH}.sh
+
+ Build_out-of-tree:
+ runs-on: ubuntu-18.04
+ steps:
+ - uses: actions/checkout@v2
+ - run: sudo docker run -i -v `pwd`:/odp --privileged --shm-size 8g -e CC="${CC}"
+ -e CONF="${CONF}" $CONTAINER_NAMESPACE/odp-ci-${OS}-${ARCH} /odp/scripts/ci/out_of_tree.sh
+
+ Build_linux-generic:
+ runs-on: ubuntu-18.04
+ env:
+ CONF: "--with-platform=linux-generic"
+ steps:
+ - uses: actions/checkout@v2
+ - run: sudo docker run -i -v `pwd`:/odp --privileged --shm-size 8g -e CC="${CC}" -e ODP_LIB_NAME="libodp-linux"
+ -e CONF="${CONF}" $CONTAINER_NAMESPACE/odp-ci-${OS}-${ARCH} /odp/scripts/ci/build_${ARCH}.sh
+
+ Run_coverage:
+ runs-on: ubuntu-18.04
+ steps:
+ - uses: actions/checkout@v2
+ - run: sudo docker run -i -v `pwd`:/odp --privileged --shm-size 8g -e CC="${CC}"
+ -e CONF="${CONF}" $CONTAINER_NAMESPACE/odp-ci-${OS}-${ARCH} /odp/scripts/ci/coverage.sh
+ - name: Failure log
+ if: ${{ failure() }}
+ run: find . -name "*.trs" | xargs grep -l '^.test-result. FAIL' | while read trs ; do echo FAILURE detected at $trs; cat ${trs%%.trs}.log ; done
+ - name: Upload to Codecov
+ uses: codecov/codecov-action@v1.0.15
+
+ Run_distcheck:
+ runs-on: ubuntu-18.04
+ strategy:
+ fail-fast: false
+ matrix:
+ conf: ['--enable-user-guides', '--enable-user-guides --disable-abi-compat']
+ steps:
+ - uses: actions/checkout@v2
+ # Ignore distcheck failure (caused by the first 'make check' run unmounting huge pages)
+ - run: sudo docker run -i -v `pwd`:/odp --privileged --shm-size 8g -e CC="${{matrix.cc}}"
+ -e CONF="${{matrix.conf}}" $CONTAINER_NAMESPACE/odp-ci-${OS}-${ARCH} /odp/scripts/ci/distcheck.sh || true
+ - name: Failure log
+ if: ${{ failure() }}
+ run: find . -name "*.trs" | xargs grep -l '^.test-result. FAIL' | while read trs ; do echo FAILURE detected at $trs; cat ${trs%%.trs}.log ; done
+
+ Run_x86_64:
+ runs-on: ubuntu-18.04
+ env:
+ ARCH: x86_64
+ strategy:
+ fail-fast: false
+ matrix:
+ cc: [gcc, clang]
+ conf: ['', '--disable-abi-compat', '--enable-deprecated', '--disable-static-applications', '--disable-host-optimization', '--disable-host-optimization --disable-abi-compat', '--without-openssl --without-pcap']
+ steps:
+ - uses: actions/checkout@v2
+ - run: sudo docker run -i -v `pwd`:/odp --privileged --shm-size 8g -e CC="${{matrix.cc}}"
+ -e CXX=g++-10 -e CONF="${{matrix.conf}}" $CONTAINER_NAMESPACE/odp-ci-${OS}-${ARCH} /odp/scripts/ci/check.sh
+ - name: Failure log
+ if: ${{ failure() }}
+ run: find . -name "*.trs" | xargs grep -l '^.test-result. FAIL' | while read trs ; do echo FAILURE detected at $trs; cat ${trs%%.trs}.log ; done
+
+ Run_OS:
+ runs-on: ubuntu-18.04
+ strategy:
+ fail-fast: false
+ matrix:
+ cc: [gcc, clang]
+ os: ['ubuntu_16.04', 'ubuntu_20.04']
+ steps:
+ - uses: actions/checkout@v2
+ - run: sudo docker run -i -v `pwd`:/odp --privileged --shm-size 8g -e CC="${{matrix.cc}}"
+ -e CONF="${CONF}" $CONTAINER_NAMESPACE/odp-ci-${{matrix.os}}-${ARCH} /odp/scripts/ci/check.sh
+ - name: Failure log
+ if: ${{ failure() }}
+ run: find . -name "*.trs" | xargs grep -l '^.test-result. FAIL' | while read trs ; do echo FAILURE detected at $trs; cat ${trs%%.trs}.log ; done
+
+ Run_scheduler:
+ runs-on: ubuntu-18.04
+ strategy:
+ fail-fast: false
+ matrix:
+ scheduler: ['sp']
+ steps:
+ - uses: actions/checkout@v2
+ - run: sudo docker run -i -v `pwd`:/odp --privileged --shm-size 8g -e CC="${CC}"
+ -e CONF="${CONF}" -e ODP_SCHEDULER=${{matrix.scheduler}} $CONTAINER_NAMESPACE/odp-ci-${OS}-${ARCH} /odp/scripts/ci/check.sh
+ - name: Failure log
+ if: ${{ failure() }}
+ run: find . -name "*.trs" | xargs grep -l '^.test-result. FAIL' | while read trs ; do echo FAILURE detected at $trs; cat ${trs%%.trs}.log ; done
+
+ Run_dpdk-18_11:
+ runs-on: ubuntu-18.04
+ steps:
+ - uses: actions/checkout@v2
+ - run: sudo docker run -i -v `pwd`:/odp --privileged --shm-size 8g -e CC="${CC}"
+ -e CONF="${CONF}" $CONTAINER_NAMESPACE/odp-ci-${OS}-${ARCH}-dpdk_18.11 /odp/scripts/ci/check.sh
+ - name: Failure log
+ if: ${{ failure() }}
+ run: find . -name "*.trs" | xargs grep -l '^.test-result. FAIL' | while read trs ; do echo FAILURE detected at $trs; cat ${trs%%.trs}.log ; done
diff --git a/scripts/ci/coverage.sh b/scripts/ci/coverage.sh
index dc0d8cfc7..bffc85854 100755
--- a/scripts/ci/coverage.sh
+++ b/scripts/ci/coverage.sh
@@ -19,5 +19,3 @@ export CI="true"
ODP_SCHEDULER=basic make check
ODP_SCHEDULER=sp make check
-
-bash <(curl -s https://codecov.io/bash) -X coveragepy