Files
my-rook-config/.github/workflows/multus.yaml
T
harshitasao fb697fb0f7 ci: github action pin dependencies
The openSSF scorecard report warns that the github actions are not pinned by hash.

This PR aims at improving this by pinning the github actions by hash.

Signed-off-by: harshitasao <harshitasao@gmail.com>
2024-08-15 19:06:30 +05:30

112 lines
3.9 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
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')"
env:
NUMBER_OF_COMPUTE_NODES: 5
steps:
- name: checkout
uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7
with:
fetch-depth: 0
- name: Set up Go version
uses: actions/setup-go@0a12ed9d6a96ab950c8f026ed9f722fe0da7ef32 # v5.0.2
with:
go-version: "1.22"
- name: Create KinD Cluster
uses: helm/kind-action@0025e74a8c7512023d06dc019c617aa3cf561fde # v1.10.0
with:
config: tests/scripts/multus/kind-config.yaml
cluster_name: kind
- name: consider debugging
uses: ./.github/workflows/tmate_debug
with:
use-tmate: ${{ secrets.USE_TMATE }}
- 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
- 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 -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