mirror of
https://git.vectorsigma.ru/public/k3s.git
synced 2026-07-30 00:19:05 +00:00
Placing this in the install script test, which only runs when specific files are changed, was preventing it from being run on code changes.
In addition to moving this into the integration workflow, fix codecov for Windows and upload data after running a test pod.
Signed-off-by: Brad Davidson <brad.davidson@rancher.com>
(cherry picked from commit cd4be0b8c1)
Signed-off-by: Brad Davidson <brad.davidson@rancher.com>
128 lines
4.0 KiB
YAML
128 lines
4.0 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"
|
|
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@v4
|
|
with:
|
|
fetch-depth: 1
|
|
- name: Install Go
|
|
uses: ./.github/actions/setup-go
|
|
- name: "Download k3s binary"
|
|
uses: actions/download-artifact@v4
|
|
with:
|
|
name: k3s
|
|
path: ./dist/artifacts
|
|
- name: Run Integration Tests
|
|
run: |
|
|
chmod +x ./dist/artifacts/k3s
|
|
mkdir -p $GOCOVERDIR
|
|
sudo -E env "PATH=$PATH" go test -timeout=45m ./tests/integration/${{ matrix.itest }}/... -run Integration -ginkgo.v -test.v
|
|
- 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@v4
|
|
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@v4
|
|
with: {fetch-depth: 1}
|
|
- name: Install Go
|
|
uses: ./.github/actions/setup-go
|
|
- name: Download k3s binary
|
|
uses: actions/download-artifact@v4
|
|
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)
|