bisect #784
Workflow file for this run
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: Build and Test | |
on: | |
push: | |
pull_request: | |
schedule: | |
# Run Sunday at midnight | |
- cron: '0 0 * * 0' | |
concurrency: | |
group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.run_id }} | |
cancel-in-progress: true | |
jobs: | |
build-dpdk: | |
env: | |
dependencies: gcc libnuma-dev ninja-build | |
CC: gcc | |
DPDK_GIT: https://dpdk.org/git/dpdk-stable | |
DPDK_VER: 22.11.1 | |
name: dpdk gcc | |
outputs: | |
dpdk_key: ${{ steps.gen_dpdk_key.outputs.key }} | |
runs-on: ubuntu-20.04 | |
timeout-minutes: 30 | |
steps: | |
- name: checkout | |
uses: actions/checkout@v3 | |
- name: update PATH | |
run: | | |
echo "$HOME/bin" >> $GITHUB_PATH | |
echo "$HOME/.local/bin" >> $GITHUB_PATH | |
- name: create ci signature file for the dpdk cache key | |
# This will collect most of DPDK related lines, so hash will be different | |
# if something changed in a way we're building DPDK including DPDK_VER. | |
# This also allows us to use cache from any branch as long as version | |
# and a way we're building DPDK stays the same. | |
run: | | |
grep -irE 'RTE_|DPDK|meson|ninja' .ci/dpdk-* > dpdk-ci-signature | |
grep -rwE 'DPDK_GIT|DPDK_VER' .github/ >> dpdk-ci-signature | |
if [ "${DPDK_VER##refs/*/}" != "${DPDK_VER}" ]; then | |
git ls-remote --heads $DPDK_GIT $DPDK_VER >> dpdk-ci-signature | |
fi | |
cat dpdk-ci-signature | |
- name: generate ci DPDK key | |
id: gen_dpdk_key | |
env: | |
ci_key: ${{ hashFiles('dpdk-ci-signature') }} | |
run: echo 'key=dpdk-${{ env.ci_key }}' >> $GITHUB_OUTPUT | |
- name: cache | |
id: dpdk_cache | |
uses: actions/cache@v3 | |
with: | |
path: dpdk-dir | |
key: ${{ steps.gen_dpdk_key.outputs.key }} | |
- name: set up python | |
if: steps.dpdk_cache.outputs.cache-hit != 'true' | |
uses: actions/setup-python@v4 | |
with: | |
python-version: '3.9' | |
- name: update APT cache | |
if: steps.dpdk_cache.outputs.cache-hit != 'true' | |
run: sudo apt update || true | |
- name: install common dependencies | |
if: steps.dpdk_cache.outputs.cache-hit != 'true' | |
run: sudo apt install -y ${{ env.dependencies }} | |
- name: prepare | |
if: steps.dpdk_cache.outputs.cache-hit != 'true' | |
run: ./.ci/dpdk-prepare.sh | |
- name: build | |
if: steps.dpdk_cache.outputs.cache-hit != 'true' | |
run: ./.ci/dpdk-build.sh | |
build-linux: | |
needs: build-dpdk | |
env: | |
IMAGE_NAME: ghcr.io/ovn-org/ovn-tests:ubuntu | |
ARCH: ${{ matrix.cfg.arch }} | |
CC: ${{ matrix.cfg.compiler }} | |
DPDK: ${{ matrix.cfg.dpdk }} | |
LIBS: ${{ matrix.cfg.libs }} | |
OPTS: ${{ matrix.cfg.opts }} | |
TESTSUITE: ${{ matrix.cfg.testsuite }} | |
TEST_RANGE: ${{ matrix.cfg.test_range }} | |
SANITIZERS: ${{ matrix.cfg.sanitizers }} | |
name: linux ${{ join(matrix.cfg.*, ' ') }} | |
runs-on: ubuntu-latest | |
strategy: | |
fail-fast: false | |
matrix: | |
cfg: | |
- { compiler: gcc, testsuite: system-test-dpdk, dpdk: dpdk, test_range: "101-104" } | |
steps: | |
- name: checkout | |
if: github.event_name == 'push' || github.event_name == 'pull_request' | |
uses: actions/checkout@v3 | |
with: | |
submodules: recursive | |
# For weekly runs, don't update submodules | |
- name: checkout without submodule | |
if: github.event_name == 'schedule' | |
uses: actions/checkout@v3 | |
# Weekly runs test using the tip of the most recent stable OVS branch | |
# instead of the submodule. | |
- name: checkout OVS | |
if: github.event_name == 'schedule' | |
uses: actions/checkout@v3 | |
with: | |
repository: 'openvswitch/ovs' | |
fetch-depth: 0 | |
path: 'ovs' | |
- name: checkout OVS most recent stable branch. | |
if: github.event_name == 'schedule' | |
run: | | |
git checkout \ | |
$(git branch -a -l '*branch-*' | sed 's/remotes\/origin\///' | \ | |
sort -V | tail -1) | |
working-directory: ovs | |
- name: cache | |
if: matrix.cfg.dpdk != '' | |
uses: actions/cache@v3 | |
with: | |
path: dpdk-dir | |
key: ${{ needs.build-dpdk.outputs.dpdk_key }} | |
- name: build | |
if: ${{ startsWith(matrix.cfg.testsuite, 'system-test') }} | |
run: sudo -E ./.ci/ci.sh --archive-logs | |
- name: build | |
if: ${{ !startsWith(matrix.cfg.testsuite, 'system-test') }} | |
run: ./.ci/ci.sh --archive-logs | |
- name: upload logs on failure | |
if: failure() || cancelled() | |
uses: actions/upload-artifact@v3 | |
with: | |
name: logs-linux-${{ join(matrix.cfg.*, '-') }} | |
path: logs.tgz |