k3s/.github/workflows/integration.yaml
dependabot[bot] 68749aac76
Some checks failed
Scorecard supply-chain security / Scorecard analysis (push) Waiting to run
Install Script / build (push) Has been cancelled
Install Script / Smoke Test (push) Has been cancelled
Bump actions/checkout from 5 to 6 (#13256)
Bumps [actions/checkout](https://github.com/actions/checkout) from 5 to 6.
- [Release notes](https://github.com/actions/checkout/releases)
- [Commits](https://github.com/actions/checkout/compare/v5...v6)

---
updated-dependencies:
- dependency-name: actions/checkout
  dependency-version: '6'
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-11-24 11:32:03 -08:00

136 lines
4.3 KiB
YAML

name: Integration Test Coverage
on:
push:
paths-ignore:
- "**.md"
- "channel.yaml"
- "install.sh"
- "tests/**"
- "!tests/integration**"
- ".github/**"
- "!.github/workflows/integration.yaml"
pull_request:
paths-ignore:
- "**.md"
- "channel.yaml"
- "install.sh"
- "tests/**"
- "!tests/integration**"
- "!tests/e2e**"
- ".github/**"
- "!.github/workflows/integration.yaml"
- "!.github/workflows/build-k3s.yaml"
workflow_dispatch: {}
permissions:
contents: read
env:
GOCOVERDIR: /tmp/k3scov
jobs:
build:
uses: ./.github/workflows/build-k3s.yaml
with:
os: linux
build-windows:
uses: ./.github/workflows/build-k3s.yaml
with:
os: windows
itest:
needs: build
name: Integration Tests
runs-on: ubuntu-latest
timeout-minutes: 45
strategy:
fail-fast: false
matrix:
itest: [certrotation, cacertrotation, etcdrestore, localstorage, startup, custometcdargs, etcdsnapshot, kubeflags, longhorn, secretsencryption, flannelnone]
max-parallel: 3
steps:
- name: Checkout
uses: actions/checkout@v6
with:
fetch-depth: 1
- name: Install Go
uses: ./.github/actions/setup-go
- name: "Download k3s binary"
uses: actions/download-artifact@v6
with:
name: k3s-amd64
path: ./dist/artifacts
- name: Run Integration Tests
run: |
chmod +x ./dist/artifacts/k3s
mkdir -p $GOCOVERDIR
cd tests/integration/${{ matrix.itest }}
sudo -E env "PATH=$PATH" go test -timeout=45m ./... -run Integration -ginkgo.v -test.v
- name: On Failure, Upload Logs
uses: actions/upload-artifact@v5
if: ${{ failure() }}
with:
name: integration-${{ matrix.itest }}-logs
path: tests/integration/${{ matrix.itest }}/*log.txt
retention-days: 30
- name: On Failure, Launch Debug Session
uses: lhotari/action-upterm@v1
if: ${{ failure() }}
with:
## If no one connects after 5 minutes, shut down server.
wait-timeout-minutes: 5
- name: Generate coverage report
run: go tool covdata textfmt -i $GOCOVERDIR -o ${{ matrix.itest }}.out
- name: Upload Results To Codecov
uses: codecov/codecov-action@v5
with:
token: ${{ secrets.CODECOV_TOKEN }}
files: ./${{ matrix.itest }}.out
flags: inttests # optional
verbose: true # optional (default = false)
itest-windows:
name: Integration Tests (windows)
needs: build-windows
runs-on: windows-2022
timeout-minutes: 10
env:
GOCOVERDIR: "D:/tmp/k3scov"
steps:
- name: Checkout
uses: actions/checkout@v6
with: {fetch-depth: 1}
- name: Install Go
uses: ./.github/actions/setup-go
- name: Download k3s binary
uses: actions/download-artifact@v6
with:
name: k3s-windows
path: dist/artifacts/
- name: Run K3s
timeout-minutes: 5
env:
CONTAINERD_LOG_LEVEL: "debug"
run: |
$ErrorActionPreference = "Continue"
$PSNativeCommandUseErrorActionPreference = $true
New-Item -Type Directory -Force $Env:GOCOVERDIR | Out-Null
$Server = Start-Job -ScriptBlock { ./dist/artifacts/k3s.exe server --token=token --debug --disable=metrics-server }
Start-Sleep -Seconds 15
D:/var/lib/rancher/k3s/data/current/bin/k3s.exe kubectl apply -f ./tests/integration/startup/testdata/agnhost.yaml
D:/var/lib/rancher/k3s/data/current/bin/k3s.exe kubectl wait --for=jsonpath='{.status.phase}'=Running --timeout=5m pod/agnhost
D:/var/lib/rancher/k3s/data/current/bin/k3s.exe crictl ps
D:/var/lib/rancher/k3s/data/current/bin/k3s.exe kubectl get pod -A -o wide
D:/var/lib/rancher/k3s/data/current/bin/k3s.exe kubectl get node -o wide
$RET = $LASTEXITCODE
Stop-Job -Job $Server
Receive-Job -Wait -Job $Server
Remove-Job -Job $Server
exit $RET
- name: Generate coverage report
run: go tool covdata textfmt -i $Env:GOCOVERDIR -o windows.out
- name: Upload Results To Codecov
uses: codecov/codecov-action@v5
with:
token: ${{ secrets.CODECOV_TOKEN }}
files: ./windows.out
flags: inttests # optional
verbose: true # optional (default = false)