diff --git a/.github/workflows/conformance-tests.yaml b/.github/workflows/conformance-tests.yaml new file mode 100644 index 0000000..dbf227b --- /dev/null +++ b/.github/workflows/conformance-tests.yaml @@ -0,0 +1,97 @@ +name: E2E Tests + +permissions: {} + +on: + workflow_dispatch: {} + pull_request: + branches: + - "main" + +concurrency: + group: ${{ github.workflow }}-${{ github.ref }} + cancel-in-progress: true + +jobs: + required: + strategy: + fail-fast: false + matrix: + k8s-version: + - name: v1.26 + version: v1.26.6 + - name: v1.27 + version: v1.27.3 + - name: v1.28 + version: v1.28.0 + - name: v1.29 + version: v1.29.0 + tests: + - ^reports$ + runs-on: ubuntu-latest + name: ${{ matrix.k8s-version.name }} - ${{ matrix.tests }} + steps: + - name: Checkout + uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1 + - name: Checkout kyverno/kyverno + uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1 + with: + repository: kyverno/kyverno + path: kyverno + - name: Setup Go + uses: actions/setup-go@0c52d547c9bc32b1aa3301fd7a9cb496313a4491 # v5.0.0 + with: + go-version: ~1.21.1 + - name: Install Tools + run: | + set -e + curl -LO "https://dl.k8s.io/release/${{ matrix.k8s-version.version }}/bin/linux/amd64/kubectl" + sudo install -o root -g root -m 0755 kubectl /usr/local/bin/kubectl + - name: Install kind + shell: bash + run: | + set -e + # For AMD64 / x86_64 + [ $(uname -m) = x86_64 ] && curl -Lo ./kind https://kind.sigs.k8s.io/dl/v0.20.0/kind-linux-amd64 + # For ARM64 + [ $(uname -m) = aarch64 ] && curl -Lo ./kind https://kind.sigs.k8s.io/dl/v0.20.0/kind-linux-arm64 + chmod +x ./kind + sudo mv ./kind /usr/local/bin/kind + - name: Create kind cluster + run: | + set -e + kind create cluster --image kindest/node:${{ matrix.k8s-version.version }} --config ./.github/kind.yml + - name: Install report server testing + run: | + set -e + kubectl create ns reports-server + kubectl create -f ./config/debug.yaml + - name: Wait for report server ready + run: | + set -e + kubectl wait --namespace reports-server --for=condition=ready pod --selector '!job-name' --timeout=120s + - name: Install latest kyverno + run: | + set -e + kubectl create -f https://github.com/kyverno/kyverno/raw/main/config/install-latest-testing.yaml + - name: Wait for kyverno ready + run: | + set -e + kubectl wait --namespace kyverno --for=condition=ready pod --selector '!job-name' --timeout=60s + - name: API Service status + run: | + set -e + kubectl get apiservices v1alpha2.wgpolicyk8s.io v1.reports.kyverno.io + - name: Install Chainsaw + uses: kyverno/action-install-chainsaw@56be3cb4ec65a987b6ef4d7ab3a55ee17760a57c # v0.1.2 + with: + release: v0.0.9 + - name: Test with Chainsaw + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + run: | + set -e + cd ./kyverno/test/conformance/chainsaw && chainsaw test --config ./../../../../.chainsaw.yaml --include-test-regex '^chainsaw$/${{ matrix.tests }}' --no-color=false + - name: Debug failure + if: failure() + uses: ./.github/actions/failure-logs