diff options
-rw-r--r-- | .github/workflows/ci-pipeline.yml | 260 | ||||
-rwxr-xr-x | scripts/ci/coverage.sh | 2 |
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 |