Skip to content

readthedocs: Add the configuration file. #157

readthedocs: Add the configuration file.

readthedocs: Add the configuration file. #157

Workflow file for this run

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, opts: --disable-ssl }
- { compiler: clang, opts: --disable-ssl }
- { compiler: gcc, testsuite: test, test_range: "-300" }
- { compiler: gcc, testsuite: test, test_range: "301-600" }
- { compiler: gcc, testsuite: test, test_range: "601-" }
- { compiler: clang, testsuite: test, sanitizers: sanitizers, test_range: "-300" }
- { compiler: clang, testsuite: test, sanitizers: sanitizers, test_range: "301-600" }
- { compiler: clang, testsuite: test, sanitizers: sanitizers, test_range: "601-" }
- { compiler: gcc, testsuite: test, libs: -ljemalloc, test_range: "-300" }
- { compiler: gcc, testsuite: test, libs: -ljemalloc, test_range: "301-600" }
- { compiler: gcc, testsuite: test, libs: -ljemalloc, test_range: "601-" }
- { compiler: gcc, testsuite: system-test-dpdk, dpdk: dpdk, test_range: "-100" }
- { compiler: gcc, testsuite: system-test-dpdk, dpdk: dpdk, test_range: "101-" }
- { compiler: gcc, testsuite: system-test-userspace, test_range: "-100" }
- { compiler: gcc, testsuite: system-test-userspace, test_range: "101-" }
- { compiler: gcc, testsuite: system-test, test_range: "-100" }
- { compiler: gcc, testsuite: system-test, test_range: "101-" }
- { compiler: clang, testsuite: system-test, sanitizers: sanitizers, test_range: "-100" }
- { compiler: clang, testsuite: system-test, sanitizers: sanitizers, test_range: "101-" }
- { arch: x86, compiler: gcc, opts: --disable-ssl }
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
build-osx:
env:
CC: clang
OPTS: --disable-ssl
name: osx clang --disable-ssl
runs-on: macos-latest
strategy:
fail-fast: false
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: install dependencies
run: brew install automake libtool
- name: update PATH
run: |
echo "$HOME/bin" >> $GITHUB_PATH
echo "$HOME/.local/bin" >> $GITHUB_PATH
- name: set up python
uses: actions/setup-python@v4
with:
python-version: '3.x'
- name: prepare
run: ./.ci/osx-prepare.sh
- name: build
run: ./.ci/osx-build.sh
- name: upload logs on failure
if: failure()
uses: actions/upload-artifact@v3
with:
name: logs-osx-clang---disable-ssl
path: config.log
build-linux-rpm:
name: linux rpm fedora
runs-on: ubuntu-latest
container: fedora:latest
timeout-minutes: 30
strategy:
fail-fast: false
steps:
- name: install dependencies
run: dnf install -y dnf-plugins-core git rpm-build
- name: checkout
uses: actions/checkout@v3
with:
submodules: recursive
- name: install build dependencies
run: |
sed -e 's/@VERSION@/0.0.1/' rhel/ovn-fedora.spec.in \
> /tmp/ovn.spec
dnf builddep -y /tmp/ovn.spec
- name: configure OvS
run: ./boot.sh && ./configure
working-directory: ovs
- name: make dist OvS
run: make dist
working-directory: ovs
- name: configure OVN
run: ./boot.sh && ./configure
- name: make dist OVN
run: make dist
- name: build RPM
run: make rpm-fedora
- name: upload rpm packages
uses: actions/upload-artifact@v3
with:
name: rpm-packages
path: |
rpm/rpmbuild/SRPMS/*.rpm
rpm/rpmbuild/RPMS/*/*.rpm
retention-days: 14