forked from rook/rook
Bumps [actions/checkout](https://github.com/actions/checkout) from 7.0.0 to 7.0.1. - [Release notes](https://github.com/actions/checkout/releases) - [Commits](https://github.com/actions/checkout/compare/v7...v7.0.1) --- updated-dependencies: - dependency-name: actions/checkout dependency-version: 7.0.1 dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] <support@github.com>
128 lines
4.8 KiB
YAML
128 lines
4.8 KiB
YAML
name: Multus integration tests
|
|
on:
|
|
push:
|
|
tags:
|
|
- v*
|
|
branches:
|
|
- master
|
|
- release-*
|
|
pull_request:
|
|
paths:
|
|
- cmd/rook/userfacing/**
|
|
- pkg/daemon/multus/**
|
|
- .github/workflows/multus.yaml
|
|
- tests/scripts/multus/**
|
|
|
|
defaults:
|
|
run:
|
|
# reference: https://docs.github.com/en/actions/reference/workflow-syntax-for-github-actions#using-a-specific-shell
|
|
shell: bash --noprofile --norc -eo pipefail -x {0}
|
|
|
|
# cancel the in-progress workflow when PR is refreshed.
|
|
concurrency:
|
|
group: ${{ github.workflow }}-${{ github.event_name == 'pull_request' && github.head_ref || github.sha }}
|
|
cancel-in-progress: true
|
|
|
|
permissions:
|
|
contents: read
|
|
|
|
jobs:
|
|
test-validation-tool:
|
|
runs-on: ubuntu-latest
|
|
strategy:
|
|
fail-fast: true
|
|
if: "!contains(github.event.pull_request.labels.*.name, 'skip-ci')"
|
|
steps:
|
|
- name: checkout
|
|
uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
|
|
with:
|
|
fetch-depth: 0
|
|
|
|
- name: Set up Go version
|
|
uses: actions/setup-go@b7ad1dad31e06c5925ef5d2fc7ad053ef454303e # v7.0.0
|
|
with:
|
|
go-version: "1.26"
|
|
|
|
- name: Create KinD Cluster
|
|
uses: helm/kind-action@ef37e7f390d99f746eb8b610417061a60e82a6cc # v1.14.0
|
|
with:
|
|
config: tests/config/multus/kind-config.yaml
|
|
cluster_name: kind
|
|
|
|
- name: consider (pre-job) debugging
|
|
uses: ./.github/workflows/tmate_debug
|
|
with:
|
|
use-tmate: ${{ secrets.USE_TMATE }}
|
|
debug-ci: ${{ contains(github.event.pull_request.labels.*.name, 'debug-ci') }}
|
|
|
|
- name: Setup multus
|
|
run: ./tests/scripts/multus/setup-multus.sh
|
|
|
|
- name: Set up multus prerequisite host routing
|
|
run: |
|
|
kubectl create -f tests/scripts/multus/host-cfg-ds.yaml
|
|
kubectl rollout status daemonset/host-net-config --timeout=120s
|
|
|
|
- name: Install public and cluster NADs in default namespace
|
|
run: kubectl create -f tests/scripts/multus/default-public-cluster-nads.yaml
|
|
|
|
- name: Quickly build Rook binary
|
|
id: build
|
|
run: go build -tags=ceph_preview -o rook cmd/rook/*.go
|
|
|
|
- name: Run CLI validation test
|
|
run: ./tests/scripts/multus/test-110-cli.sh
|
|
|
|
- name: Label kind nodes for stretch cluster tests
|
|
id: label
|
|
# tests that require labels are independent from previous tests
|
|
if: steps.build.outcome == 'success' && !cancelled()
|
|
run: ./tests/scripts/multus/test-200-stretch-label-nodes.sh
|
|
# nodes are purposefully not tainted yet for overlap test
|
|
|
|
- name: Run stretch cluster overlap test
|
|
id: overlap
|
|
# independent from other tests as long as nodes are labeled
|
|
if: steps.label.outcome == 'success' && !cancelled()
|
|
run: ./tests/scripts/multus/test-210-stretch-overlap.sh
|
|
|
|
- name: Run cleanup test
|
|
# cleanup relies on overlap test to be successful
|
|
if: steps.overlap.outcome == 'success' && !cancelled()
|
|
run: ./tests/scripts/multus/test-211-stretch-cleanup.sh
|
|
|
|
- name: Taint kind nodes for remaining stretch cluster tests
|
|
id: taint
|
|
# tests that require taints+labels are independent from previous tests
|
|
if: steps.label.outcome == 'success' && !cancelled()
|
|
run: ./tests/scripts/multus/test-200-stretch-taint-nodes.sh
|
|
|
|
- name: Run stretch cluster test with public and cluster networks
|
|
# independent from other tests as long as nodes are tainted and labeled
|
|
if: steps.taint.outcome == 'success' && !cancelled()
|
|
run: ./tests/scripts/multus/test-220-stretch-pub-and-cluster.sh
|
|
|
|
- name: Run stretch cluster test with public network only
|
|
# independent from other tests as long as nodes are tainted and labeled
|
|
if: steps.taint.outcome == 'success' && !cancelled()
|
|
run: ./tests/scripts/multus/test-230-stretch-pub-only.sh
|
|
|
|
- name: Run stretch cluster test with cluster network only
|
|
# independent from other tests as long as nodes are tainted and labeled
|
|
if: steps.taint.outcome == 'success' && !cancelled()
|
|
run: ./tests/scripts/multus/test-240-stretch-cluster-only.sh
|
|
|
|
- name: dump cluster state on failure
|
|
if: failure()
|
|
run: |
|
|
kubectl get nodes -o wide || true
|
|
kubectl get pods -A -o wide || true
|
|
kubectl -n kube-system describe daemonset kube-multus-ds install-cni-plugins whereabouts || true
|
|
kubectl get events -A --sort-by=.lastTimestamp | tail -60 || true
|
|
kubectl -n kube-system logs -l name=multus --all-containers --tail=30 || true
|
|
|
|
- name: consider (post-job) debugging
|
|
uses: ./.github/workflows/upterm_debug
|
|
with:
|
|
debug-ci: ${{ contains(github.event.pull_request.labels.*.name, 'debug-ci') }}
|