northd: add router broadcast option to logical switch #131
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: ovn-kubernetes | |
on: | |
push: | |
pull_request: | |
workflow_dispatch: | |
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 | |
env: | |
GO_VERSION: "1.18.4" | |
K8S_VERSION: v1.24.0 | |
OVNKUBE_COMMIT: "master" | |
LIBOVSDB_COMMIT: "a6a173993830" | |
KIND_CLUSTER_NAME: ovn | |
KIND_INSTALL_INGRESS: true | |
KIND_ALLOW_SYSTEM_WRITES: true | |
# This skips tests tagged as Serial | |
# Current Serial tests are not relevant for OVN | |
PARALLEL: true | |
jobs: | |
build: | |
name: Build | |
runs-on: ubuntu-20.04 | |
steps: | |
- name: Check out ovn | |
uses: actions/checkout@v4 | |
with: | |
submodules: recursive | |
- name: Build ovn-kubernetes container | |
run: | | |
docker build --build-arg OVNKUBE_COMMIT=${{ env.OVNKUBE_COMMIT }} \ | |
--build-arg LIBOVSDB_COMMIT=${{ env.LIBOVSDB_COMMIT }} \ | |
-t ovn-daemonset-f:dev -f .ci/ovn-kubernetes/Dockerfile . | |
mkdir /tmp/_output | |
docker save ovn-daemonset-f:dev > /tmp/_output/image.tar | |
- uses: actions/upload-artifact@v4 | |
with: | |
name: test-image | |
path: /tmp/_output/image.tar | |
e2e: | |
name: e2e | |
if: github.event_name != 'schedule' | |
runs-on: ubuntu-20.04 | |
timeout-minutes: 220 | |
strategy: | |
fail-fast: false | |
matrix: | |
# Valid options are: | |
# target: ["shard-conformance", "control-plane" ] | |
# shard-conformance: hybrid-overlay = multicast-enable = emptylb-enable = false | |
# control-plane: hybrid-overlay = multicast-enable = emptylb-enable = true | |
# gateway-mode: ["local", "shared"] | |
# ipfamily: ["ipv4", "ipv6", "dualstack"] | |
# disable-snat-multiple-gws: ["noSnatGW", "snatGW"] | |
include: | |
- {"target": "shard-conformance", "ha": "HA", "gateway-mode": "local", "ipfamily": "ipv6", "disable-snat-multiple-gws": "snatGW"} | |
- {"target": "shard-conformance", "ha": "HA", "gateway-mode": "local", "ipfamily": "dualstack", "disable-snat-multiple-gws": "snatGW"} | |
- {"target": "shard-conformance", "ha": "HA", "gateway-mode": "shared", "ipfamily": "ipv4", "disable-snat-multiple-gws": "snatGW"} | |
- {"target": "shard-conformance", "ha": "HA", "gateway-mode": "shared", "ipfamily": "ipv6", "disable-snat-multiple-gws": "snatGW"} | |
- {"target": "control-plane", "ha": "HA", "gateway-mode": "shared", "ipfamily": "ipv4", "disable-snat-multiple-gws": "noSnatGW"} | |
- {"target": "control-plane", "ha": "HA", "gateway-mode": "shared", "ipfamily": "ipv4", "disable-snat-multiple-gws": "snatGW"} | |
needs: [build] | |
env: | |
JOB_NAME: "${{ matrix.target }}-${{ matrix.ha }}-${{ matrix.gateway-mode }}-${{ matrix.ipfamily }}-${{ matrix.disable-snat-multiple-gws }}-${{ matrix.second-bridge }}" | |
OVN_HYBRID_OVERLAY_ENABLE: "${{ matrix.target == 'control-plane' }}" | |
KIND_INSTALL_METALLB: "${{ matrix.target == 'control-plane' }}" | |
OVN_MULTICAST_ENABLE: "${{ matrix.target == 'control-plane' }}" | |
OVN_EMPTY_LB_EVENTS: "${{ matrix.target == 'control-plane' }}" | |
OVN_HA: "true" | |
OVN_DISABLE_SNAT_MULTIPLE_GWS: "${{ matrix.disable-snat-multiple-gws == 'noSnatGW' }}" | |
OVN_GATEWAY_MODE: "${{ matrix.gateway-mode }}" | |
KIND_IPV4_SUPPORT: "${{ matrix.ipfamily == 'IPv4' || matrix.ipfamily == 'dualstack' }}" | |
KIND_IPV6_SUPPORT: "${{ matrix.ipfamily == 'IPv6' || matrix.ipfamily == 'dualstack' }}" | |
steps: | |
- name: Free up disk space | |
run: sudo eatmydata apt-get remove --auto-remove -y aspnetcore-* dotnet-* libmono-* mono-* msbuild php-* php7* ghc-* zulu-* | |
- name: Set up Go | |
uses: actions/setup-go@v5 | |
with: | |
go-version: ${{ env.GO_VERSION }} | |
id: go | |
- name: Check out ovn | |
uses: actions/checkout@v4 | |
- name: Check out ovn-kubernetes | |
uses: actions/checkout@v4 | |
with: | |
path: src/github.com/ovn-org/ovn-kubernetes | |
repository: ovn-org/ovn-kubernetes | |
- name: Prepare | |
run: | | |
.ci/ovn-kubernetes/prepare.sh src/github.com/ovn-org/ovn-kubernetes | |
- name: Set up environment | |
run: | | |
export GOPATH=$(go env GOPATH) | |
echo "GOPATH=$GOPATH" >> $GITHUB_ENV | |
echo "$GOPATH/bin" >> $GITHUB_PATH | |
- name: Disable ufw | |
# For IPv6 and Dualstack, ufw (Uncomplicated Firewall) should be disabled. | |
# Not needed for KIND deployments, so just disable all the time. | |
run: | | |
sudo ufw disable | |
- uses: actions/download-artifact@v4 | |
with: | |
name: test-image | |
- name: Load docker image | |
run: | | |
docker load --input image.tar | |
- name: kind setup | |
run: | | |
export OVN_IMAGE="ovn-daemonset-f:dev" | |
make -C test install-kind | |
working-directory: src/github.com/ovn-org/ovn-kubernetes | |
- name: Run Tests | |
# e2e tests take ~60 minutes normally, 120 should be more than enough | |
# set 180 for control-plane tests as these might take a while | |
timeout-minutes: ${{ matrix.target == 'control-plane' && 180 || 120 }} | |
run: | | |
make -C test ${{ matrix.target }} | |
working-directory: src/github.com/ovn-org/ovn-kubernetes | |
- name: Upload Junit Reports | |
if: always() | |
uses: actions/upload-artifact@v4 | |
with: | |
name: kind-junit-${{ env.JOB_NAME }}-${{ github.run_id }} | |
path: 'src/github.com/ovn-org/ovn-kubernetes/test/_artifacts/*.xml' | |
- name: Export logs | |
if: always() | |
run: | | |
mkdir -p /tmp/kind/logs | |
kind export logs --name ${KIND_CLUSTER_NAME} --loglevel=debug /tmp/kind/logs | |
working-directory: src/github.com/ovn-org/ovn-kubernetes | |
- name: Upload logs | |
if: always() | |
uses: actions/upload-artifact@v4 | |
with: | |
name: kind-logs-${{ env.JOB_NAME }}-${{ github.run_id }} | |
path: /tmp/kind/logs |