name: Conformance Tests - Shared Mode on: schedule: - cron: "0 1 * * *" workflow_dispatch: permissions: contents: read env: ARCH: amd64 KUBECTL_VERSION: v1.35.3 jobs: conformance: runs-on: ubuntu-latest strategy: fail-fast: false matrix: type: - parallel - serial env: K3D_VERSION: v5.8.3 K3D_BIN_HASH_AMD64: "dbaa79a76ace7f4ca230a1ff41dc7d8a5036a8ad0309e9c54f9bf3836dbe853e" steps: - name: Checkout code uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7 with: fetch-depth: 0 fetch-tags: true - uses: actions/setup-go@b7ad1dad31e06c5925ef5d2fc7ad053ef454303e # v7 with: go-version-file: go.mod - name: Install helm uses: azure/setup-helm@9bc31f4ebc9c6b171d7bfbaa5d006ae7abdb4310 # v5 - name: Install hydrophone run: go install sigs.k8s.io/hydrophone@3de3e886a2f6f09635d8b981c195490af1584d97 #v0.7.0 - name: Install k3d # taken from github.com/rancher/rancher/.github/workflows/integration-tests.yaml run: | curl -sSfL -o k3d "https://github.com/k3d-io/k3d/releases/download/${K3D_VERSION}/k3d-linux-${ARCH}" echo "${K3D_BIN_HASH_AMD64} k3d" | shasum -a 256 --check sudo mv k3d /usr/local/bin sudo chmod +x /usr/local/bin/k3d - name: Install k3d and kubectl run: | curl -LO "https://dl.k8s.io/release/${KUBECTL_VERSION}/bin/linux/amd64/kubectl" - name: Setup Kubernetes (k3d) env: REPO_NAME: k3k-registry REPO_PORT: 12345 run: | echo "127.0.0.1 ${REPO_NAME}" | sudo tee -a /etc/hosts k3d registry create ${REPO_NAME} --port ${REPO_PORT} k3d cluster create k3k --servers 2 \ -p "30000-30010:30000-30010@server:0" \ --registry-use k3d-${REPO_NAME}:${REPO_PORT} kubectl cluster-info kubectl get nodes - name: Setup K3k env: REPO: k3k-registry:12345 run: | echo "127.0.0.1 k3k-registry" | sudo tee -a /etc/hosts make build make package make push # add k3kcli to $PATH echo "${{ github.workspace }}/bin" >> $GITHUB_PATH VERSION=$(make version) k3d image import ${REPO}/k3k:${VERSION} -c k3k --verbose k3d image import ${REPO}/k3k-kubelet:${VERSION} -c k3k --verbose make install 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 run: | kubectl create namespace k3k-mycluster cat <> $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