mirror of
https://github.com/rancher/k3k.git
synced 2026-04-20 17:46:46 +00:00
* Added missing k3k pod logs export * fix env variables * bump codecov action to v6 (node 24 support) * remove azure/setup-helm dependency, fixed k3s image * fix shasum * fix helm check * added kubernetes version matrix * requested changes, and small fixes
160 lines
5.2 KiB
YAML
160 lines
5.2 KiB
YAML
name: Conformance Tests - Virtual Mode
|
|
|
|
on:
|
|
schedule:
|
|
- cron: "0 1 * * *"
|
|
workflow_dispatch:
|
|
|
|
permissions:
|
|
contents: read
|
|
|
|
env:
|
|
HELM_VERSION: v4.1.3
|
|
HELM_BIN_HASH_AMD64: 02ce9722d541238f81459938b84cf47df2fdf1187493b4bfb2346754d82a4700
|
|
|
|
jobs:
|
|
conformance:
|
|
runs-on: ubuntu-latest
|
|
env:
|
|
KUBERNETES_VERSION: ${{ matrix.k8s_version }}
|
|
|
|
strategy:
|
|
fail-fast: false
|
|
matrix:
|
|
k8s_version:
|
|
- v1.34.6
|
|
- v1.35.3
|
|
type:
|
|
- parallel
|
|
- serial
|
|
|
|
steps:
|
|
- name: Checkout code
|
|
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6
|
|
with:
|
|
fetch-depth: 0
|
|
fetch-tags: true
|
|
|
|
- uses: actions/setup-go@4a3601121dd01d1626a1e23e37211e3254c1c06c # v6
|
|
with:
|
|
go-version-file: go.mod
|
|
|
|
- name: Install helm
|
|
run: |
|
|
curl -sSfL -o helm.tar.gz https://get.helm.sh/helm-${{ env.HELM_VERSION }}-linux-amd64.tar.gz
|
|
echo "${{ env.HELM_BIN_HASH_AMD64 }} helm.tar.gz" | sha256sum --check
|
|
tar -xvzf helm.tar.gz --strip-components=1 -C /tmp/
|
|
sudo mv /tmp/helm /usr/local/bin
|
|
sudo chmod +x /usr/local/bin/helm
|
|
|
|
- name: Install hydrophone
|
|
run: go install sigs.k8s.io/hydrophone@3de3e886a2f6f09635d8b981c195490af1584d97 #v0.7.0
|
|
|
|
- name: Install k3s
|
|
env:
|
|
KUBECONFIG: /etc/rancher/k3s/k3s.yaml
|
|
K3S_HOST_VERSION: ${{ env.KUBERNETES_VERSION }}+k3s1
|
|
run: |
|
|
curl -sfL https://get.k3s.io | INSTALL_K3S_VERSION=${K3S_HOST_VERSION} INSTALL_K3S_EXEC="--write-kubeconfig-mode=777" sh -s -
|
|
|
|
kubectl cluster-info
|
|
kubectl get nodes
|
|
|
|
- name: Build, package and setup K3k
|
|
env:
|
|
KUBECONFIG: /etc/rancher/k3s/k3s.yaml
|
|
run: |
|
|
export REPO=ttl.sh/$(uuidgen)
|
|
export VERSION=1h
|
|
|
|
make build
|
|
make package
|
|
make push
|
|
make install
|
|
|
|
# add k3kcli to $PATH
|
|
echo "${{ github.workspace }}/bin" >> $GITHUB_PATH
|
|
|
|
echo "Wait for K3k controller to be available"
|
|
kubectl wait -n k3k-system pod --for condition=Ready -l "app.kubernetes.io/name=k3k" --timeout=5m
|
|
|
|
- name: Check k3kcli
|
|
run: k3kcli -v
|
|
|
|
- name: Create virtual cluster
|
|
env:
|
|
KUBECONFIG: /etc/rancher/k3s/k3s.yaml
|
|
run: |
|
|
k3kcli cluster create --mode=virtual --servers=2 mycluster
|
|
|
|
export KUBECONFIG=${{ github.workspace }}/k3k-mycluster-mycluster-kubeconfig.yaml
|
|
|
|
kubectl cluster-info
|
|
kubectl get nodes
|
|
kubectl get pods -A
|
|
|
|
- name: Run conformance tests (parallel)
|
|
if: matrix.type == 'parallel'
|
|
run: |
|
|
# Run conformance tests in parallel mode (skipping serial)
|
|
hydrophone --conformance --parallel 4 --skip='\[Serial\]' \
|
|
--kubeconfig ${{ github.workspace }}/k3k-mycluster-mycluster-kubeconfig.yaml \
|
|
--output-dir /tmp
|
|
|
|
- name: Run conformance tests (serial)
|
|
if: matrix.type == 'serial'
|
|
run: |
|
|
# Run serial conformance tests
|
|
hydrophone --focus='\[Serial\].*\[Conformance\]' \
|
|
--kubeconfig ${{ github.workspace }}/k3k-mycluster-mycluster-kubeconfig.yaml \
|
|
--output-dir /tmp
|
|
|
|
- name: Export logs
|
|
if: always()
|
|
env:
|
|
KUBECONFIG: /etc/rancher/k3s/k3s.yaml
|
|
run: |
|
|
journalctl -u k3s -o cat --no-pager > /tmp/k3s.log
|
|
kubectl logs -n k3k-system -l "app.kubernetes.io/name=k3k" --tail=-1 > /tmp/k3k.log
|
|
|
|
- name: Archive K3s logs
|
|
uses: actions/upload-artifact@bbbca2ddaa5d8feaa63e36b76fdaad77386f024f # v7
|
|
if: always()
|
|
with:
|
|
name: k3s-${{ matrix.k8s_version }}-${{ matrix.type }}-logs
|
|
path: /tmp/k3s.log
|
|
|
|
- name: Archive K3k logs
|
|
uses: actions/upload-artifact@bbbca2ddaa5d8feaa63e36b76fdaad77386f024f # v7
|
|
if: always()
|
|
with:
|
|
name: k3k-${{ matrix.k8s_version }}-${{ matrix.type }}-logs
|
|
path: /tmp/k3k.log
|
|
|
|
- name: Archive conformance logs
|
|
uses: actions/upload-artifact@bbbca2ddaa5d8feaa63e36b76fdaad77386f024f # v7
|
|
if: always()
|
|
with:
|
|
name: conformance-${{ matrix.k8s_version }}-${{ matrix.type }}-logs
|
|
path: /tmp/e2e.log
|
|
|
|
- name: Job Summary
|
|
if: always()
|
|
run: |
|
|
echo '## 📊 Conformance Tests Results (${{ matrix.k8s_version }} - ${{ matrix.type }})' >> $GITHUB_STEP_SUMMARY
|
|
echo '| Passed | Failed | Pending | Skipped |' >> $GITHUB_STEP_SUMMARY
|
|
echo '|---|---|---|---|' >> $GITHUB_STEP_SUMMARY
|
|
|
|
RESULTS=$(tail -10 /tmp/e2e.log | grep -E "Passed .* Failed .* Pending .* Skipped" | cut -d '-' -f 3)
|
|
RESULTS=$(echo $RESULTS | grep -oE '[0-9]+' | xargs | sed 's/ / | /g')
|
|
echo "| $RESULTS |" >> $GITHUB_STEP_SUMMARY
|
|
|
|
# only include failed tests section if there are any
|
|
if grep -q '\[FAIL\]' /tmp/e2e.log; then
|
|
echo '' >> $GITHUB_STEP_SUMMARY
|
|
echo '### Failed Tests' >> $GITHUB_STEP_SUMMARY
|
|
echo '```' >> $GITHUB_STEP_SUMMARY
|
|
grep '\[FAIL\]' /tmp/e2e.log >> $GITHUB_STEP_SUMMARY
|
|
echo '```' >> $GITHUB_STEP_SUMMARY
|
|
fi
|