northd: add router broadcast option to logical switch #179
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-linux: | |
env: | |
dependencies: | | |
automake libtool gcc bc libjemalloc2 libjemalloc-dev \ | |
libssl-dev llvm-dev libelf-dev libnuma-dev libpcap-dev \ | |
selinux-policy-dev ncat python3-scapy isc-dhcp-server \ | |
iputils-arping | |
m32_dependecies: gcc-multilib | |
CC: ${{ matrix.cfg.compiler }} | |
LIBS: ${{ matrix.cfg.libs }} | |
M32: ${{ matrix.cfg.m32 }} | |
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-20.04 | |
strategy: | |
fail-fast: false | |
matrix: | |
cfg: | |
- { compiler: gcc, opts: --disable-ssl } | |
- { compiler: clang, opts: --disable-ssl } | |
- { compiler: gcc, testsuite: test, test_range: "-500" } | |
- { compiler: gcc, testsuite: test, test_range: "501-1000" } | |
- { compiler: gcc, testsuite: test, test_range: "1001-" } | |
- { 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-900" } | |
- { compiler: clang, testsuite: test, sanitizers: sanitizers, test_range: "901-1200" } | |
- { compiler: clang, testsuite: test, sanitizers: sanitizers, test_range: "1201-" } | |
- { compiler: gcc, testsuite: test, libs: -ljemalloc, test_range: "-500" } | |
- { compiler: gcc, testsuite: test, libs: -ljemalloc, test_range: "501-1000" } | |
- { compiler: gcc, testsuite: test, libs: -ljemalloc, test_range: "1001-" } | |
- { compiler: clang, testsuite: test, libs: -ljemalloc, test_range: "-500" } | |
- { compiler: clang, testsuite: test, libs: -ljemalloc, test_range: "501-1000" } | |
- { compiler: clang, testsuite: test, libs: -ljemalloc, test_range: "1001-" } | |
- { compiler: gcc, testsuite: system-test, test_range: "-100" } | |
- { compiler: gcc, testsuite: system-test, test_range: "101-200" } | |
- { compiler: gcc, testsuite: system-test, test_range: "201-" } | |
- { compiler: clang, testsuite: system-test, sanitizers: sanitizers, test_range: "-100" } | |
- { compiler: clang, testsuite: system-test, sanitizers: sanitizers, test_range: "101-200" } | |
- { compiler: clang, testsuite: system-test, sanitizers: sanitizers, test_range: "201-" } | |
- { compiler: gcc, m32: m32, opts: --disable-ssl} | |
steps: | |
- name: checkout | |
if: github.event_name == 'push' || github.event_name == 'pull_request' | |
uses: actions/checkout@v4 | |
with: | |
submodules: recursive | |
# For weekly runs, don't update submodules | |
- name: checkout without submodule | |
if: github.event_name == 'schedule' | |
uses: actions/checkout@v4 | |
# Weekly runs test using OVS master instead of the | |
# submodule. | |
- name: checkout OVS master | |
if: github.event_name == 'schedule' | |
uses: actions/checkout@v4 | |
with: | |
repository: 'openvswitch/ovs' | |
path: 'ovs' | |
ref: 'master' | |
- name: update APT cache | |
run: sudo apt update | |
- name: remove netcat-openbsd | |
run: sudo apt remove -y netcat-openbsd | |
- name: install required dependencies | |
run: sudo apt install -y ${{ env.dependencies }} | |
- name: install libunbound libunwind | |
if: matrix.cfg.m32 == '' | |
run: sudo apt install -y libunbound-dev libunwind-dev | |
- name: install 32-bit dependencies | |
if: matrix.cfg.m32 != '' | |
run: sudo apt install -y ${{ env.m32_dependecies }} | |
- name: update PATH | |
run: | | |
echo "$HOME/bin" >> $GITHUB_PATH | |
echo "$HOME/.local/bin" >> $GITHUB_PATH | |
- name: set up python | |
uses: actions/setup-python@v5 | |
with: | |
python-version: '3.11' | |
- name: Reduce ASLR entropy | |
if: matrix.cfg.sanitizers != '' | |
# Asan in llvm 14 provided in ubuntu-22.04 is incompatible with | |
# high-entropy ASLR configured in much newer kernels that GitHub | |
# runners are using leading to random crashes: | |
# https://github.com/actions/runner-images/issues/9491 | |
run: sudo sysctl -w vm.mmap_rnd_bits=28 | |
- name: prepare | |
run: ./.ci/linux-prepare.sh | |
- name: build | |
run: ./.ci/linux-build.sh | |
- name: copy logs on failure | |
if: failure() || cancelled() | |
run: | | |
# upload-artifact@v3 throws exceptions if it tries to upload socket | |
# files and we could have some socket files in testsuite.dir. | |
# Also, upload-artifact@v3 doesn't work well enough with wildcards. | |
# So, we're just archiving everything here to avoid any issues. | |
mkdir logs | |
cp config.log ./logs/ | |
cp -r ./*/_build/sub/tests/testsuite.* ./logs/ || true | |
# System tests are run as root, need to adjust permissions. | |
sudo chmod -R +r ./tests/system-kmod-testsuite.* || true | |
cp -r ./tests/system-kmod-testsuite.* ./logs/ || true | |
tar -czvf logs.tgz logs/ | |
- name: upload logs on failure | |
if: failure() || cancelled() | |
uses: actions/upload-artifact@v4 | |
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@v4 | |
with: | |
submodules: recursive | |
# For weekly runs, don't update submodules | |
- name: checkout without submodule | |
if: github.event_name == 'schedule' | |
uses: actions/checkout@v4 | |
# Weekly runs test using OVS master instead of the | |
# submodule. | |
- name: checkout OVS master | |
if: github.event_name == 'schedule' | |
uses: actions/checkout@v4 | |
with: | |
repository: 'openvswitch/ovs' | |
path: 'ovs' | |
ref: 'master' | |
- 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@v5 | |
with: | |
python-version: '3.11' | |
- 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@v4 | |
with: | |
name: logs-osx-clang---disable-ssl | |
path: config.log |