Skip to content

tests, branch:28/merge, triggered by @programmer04 #89

tests, branch:28/merge, triggered by @programmer04

tests, branch:28/merge, triggered by @programmer04 #89

Workflow file for this run

name: tests
run-name: tests, branch:${{ github.ref_name }}, triggered by @${{ github.actor }}
concurrency:
# Run only for most recent commit in PRs but for all tags and commits on main
# Ref: https://docs.github.com/en/actions/using-jobs/using-concurrency
group: ${{ github.workflow }}-${{ github.head_ref || github.sha }}
cancel-in-progress: true
on:
pull_request:
branches:
- '*'
push:
branches:
- 'main'
tags:
- '*'
workflow_dispatch: {}
jobs:
lint:
runs-on: ubuntu-latest
steps:
- name: Checkout repository
uses: actions/checkout@v4
with:
fetch-depth: 0
- name: Setup go
uses: actions/setup-go@v5
with:
go-version-file: go.mod
- name: run lint
env:
# Our .golangci.yaml has fix: true, but we don't want that in CI therefore the below override.
GOLANGCI_LINT_FLAGS: "--fix=false"
run: make lint
verify:
runs-on: ubuntu-latest
steps:
- name: Checkout repository
uses: actions/checkout@v4
with:
fetch-depth: 0
- name: Setup go
uses: actions/setup-go@v5
with:
go-version-file: go.mod
- name: Verify manifests consistency
run: make verify.manifests
- name: Verify generators consistency
uses: nick-fields/retry@v3
with:
timeout_minutes: 3
max_attempts: 3
command: make verify.generators
install-with-kustomize:
runs-on: ubuntu-latest
steps:
- name: Checkout repository
uses: actions/checkout@v4
with:
fetch-depth: 0
- name: Setup go
uses: actions/setup-go@v5
with:
go-version-file: go.mod
- name: Create k8s KinD Cluster
uses: helm/kind-action@v1.9.0
- name: Verify installing CRDs via kustomize works
run: make install
- name: Verify deploying operator via kustomize works
run: make deploy
- name: Verify that undeploying operator via kustomize works
run: make undeploy
- name: Verify that uninstalling operator CRDs via kustomize works
run: make uninstall
build:
runs-on: ubuntu-latest
steps:
- name: checkout repository
uses: actions/checkout@v4
with:
fetch-depth: 0
- name: setup golang
uses: actions/setup-go@v5
with:
go-version-file: go.mod
- run: make build.operator
unit-tests:
runs-on: ubuntu-latest
steps:
- name: checkout repository
uses: actions/checkout@v4
with:
fetch-depth: 0
- name: setup golang
uses: actions/setup-go@v5
with:
go-version-file: go.mod
- name: run unit tests
run: make test.unit
env:
GOTESTSUM_JUNITFILE: "unit-tests.xml"
- name: collect test coverage
uses: actions/upload-artifact@v3
with:
name: coverage
path: coverage.unit.out
- name: collect test report
if: ${{ always() }}
uses: actions/upload-artifact@v3
with:
name: tests-report
path: unit-tests.xml
# TODO: https://github.com/Kong/gateway-operator/issues/1411
# conformance-tests:
# runs-on: ubuntu-latest
# steps:
# - name: checkout repository
# uses: actions/checkout@v4
# with:
# fetch-depth: 0
# - name: setup golang
# uses: actions/setup-go@v5
# with:
# go-version-file: go.mod
# - name: run conformance tests
# run: make test.conformance
# env:
# GOTESTSUM_JUNITFILE: "conformance-tests.xml"
# - name: upload diagnostics
# if: ${{ always() }}
# uses: actions/upload-artifact@v3
# with:
# name: diagnostics-conformance
# path: /tmp/ktf-diag*
# if-no-files-found: ignore
# - name: collect test report
# if: ${{ always() }}
# uses: actions/upload-artifact@v3
# with:
# name: tests-report
# path: conformance-tests.xml
integration-tests:
runs-on: ubuntu-latest
strategy:
fail-fast: true
matrix:
webhook-enabled:
- "true"
- "false"
name: "integration-tests (WEBHOOK_ENABLED=${{ matrix.webhook-enabled }})"
steps:
- name: checkout repository
uses: actions/checkout@v4
with:
fetch-depth: 0
- name: setup golang
uses: actions/setup-go@v5
with:
go-version-file: go.mod
- name: run integration tests
run: make test.integration
env:
WEBHOOK_ENABLED: ${{ matrix.webhook-enabled }}
KONG_CONTROLLER_OUT: stdout
GOTESTSUM_JUNITFILE: integration-tests-webhook-enabled-${{ matrix.webhook-enabled }}.xml
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
- name: upload diagnostics
if: ${{ always() }}
uses: actions/upload-artifact@v3
with:
name: diagnostics-integration
path: /tmp/ktf-diag*
if-no-files-found: ignore
- name: collect test coverage
uses: actions/upload-artifact@v3
with:
name: coverage
path: coverage.integration.out
- name: collect test report
if: ${{ always() }}
uses: actions/upload-artifact@v3
with:
name: tests-report
path: integration-tests-webhook-enabled-${{ matrix.webhook-enabled }}.xml
integration-tests-bluegreen:
runs-on: ubuntu-latest
strategy:
fail-fast: true
matrix:
webhook-enabled:
- "true"
- "false"
name: "integration-tests-bluegreen (WEBHOOK_ENABLED=${{ matrix.webhook-enabled }})"
steps:
- name: checkout repository
uses: actions/checkout@v4
with:
fetch-depth: 0
- name: setup golang
uses: actions/setup-go@v5
with:
go-version-file: go.mod
- name: run integration tests
run: make test.integration_bluegreen
env:
WEBHOOK_ENABLED: ${{ matrix.webhook-enabled }}
KONG_CONTROLLER_OUT: stdout
GOTESTSUM_JUNITFILE: integration-tests-bluegreen-webhook-enabled-${{ matrix.webhook-enabled }}.xml
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
- name: upload diagnostics
if: always()
uses: actions/upload-artifact@v3
with:
name: diagnostics-integration
path: /tmp/ktf-diag*
if-no-files-found: ignore
- name: collect test coverage
uses: actions/upload-artifact@v3
with:
name: coverage
path: coverage.integration-bluegreen.out
- name: collect test report
if: always()
uses: actions/upload-artifact@v3
with:
name: tests-report
path: integration-tests-bluegreen-webhook-enabled-${{ matrix.webhook-enabled }}.xml
# Test reconciling Gateway with provisioning DataPlane failures.
# This test introduces a wrong gateway that will have errors on validation all `DataPlane`s, so it should run isolated.
integration-tests-provision-fail:
runs-on: ubuntu-latest
strategy:
fail-fast: true
name: integration-tests-provision-dataplane-fail
steps:
- name: checkout repository
uses: actions/checkout@v4
with:
fetch-depth: 0
- name: setup golang
uses: actions/setup-go@v5
with:
go-version-file: go.mod
- name: run integration tests
run: make test.integration_provision_dataplane_fail
env:
KONG_CONTROLLER_OUT: stdout
GOTESTSUM_JUNITFILE: integration-tests-provision-dataplane-fail.xml
- name: upload diagnostics
if: always()
uses: actions/upload-artifact@v3
with:
name: diagnostics-integration
path: /tmp/ktf-diag*
if-no-files-found: ignore
- name: collect test coverage
uses: actions/upload-artifact@v3
with:
name: coverage
path: coverage.integration-provision-dataplane-fail.out
- name: collect test report
if: always()
uses: actions/upload-artifact@v3
with:
name: tests-report
path: integration-tests-provision-dataplane-fai.xml
e2e-tests:
runs-on: ubuntu-latest
steps:
- name: checkout repository
uses: actions/checkout@v4
with:
fetch-depth: 0
- name: setup golang
uses: actions/setup-go@v5
with:
go-version-file: go.mod
- name: build docker image
env:
IMG: gateway-operator
TAG: e2e-${{ github.sha }}
run: make docker.build
- name: run e2e tests
run: make test.e2e
env:
KONG_TEST_GATEWAY_OPERATOR_IMAGE_LOAD: gateway-operator:e2e-${{ github.sha }}
GOTESTSUM_JUNITFILE: "e2e-tests.xml"
- name: upload diagnostics
if: ${{ always() }}
uses: actions/upload-artifact@v3
with:
name: diagnostics-e2e
path: /tmp/ktf-diag*
if-no-files-found: ignore
- name: collect test report
if: ${{ always() }}
uses: actions/upload-artifact@v3
with:
name: tests-report
path: e2e-tests.xml
buildpulse-report:
needs:
- unit-tests
- integration-tests
# https://github.com/Kong/gateway-operator/issues/11#issuecomment-1514712925
# - conformance-tests
- e2e-tests
if: ${{ always() }}
runs-on: ubuntu-latest
steps:
- name: checkout repository
uses: actions/checkout@v4
with:
fetch-depth: 0
- name: download tests report
id: download-coverage
uses: actions/download-artifact@v3
with:
name: tests-report
path: report
- name: Upload test results to BuildPulse for flaky test detection
if: ${{ !cancelled() }}
uses: buildpulse/buildpulse-action@v0.11.0
with:
account: 962416
repository: 477814940
path: report/*.xml
key: ${{ secrets.BUILDPULSE_ACCESS_KEY_ID }}
secret: ${{ secrets.BUILDPULSE_SECRET_ACCESS_KEY }}
# We need this step to fail the workflow if any of the previous steps failed or were cancelled.
# It allows to use this particular job as a required check for PRs.
# Ref: https://github.com/orgs/community/discussions/26822#discussioncomment-3305794
passed:
runs-on: ubuntu-latest
needs:
- lint
- verify
- install-with-kustomize
- build
- unit-tests
# - conformance-tests
- integration-tests
- integration-tests-bluegreen
- integration-tests-provision-fail
- e2e-tests
- buildpulse-report
if: always()
steps:
- if: contains(needs.*.result, 'failure') || contains(needs.*.result, 'cancelled')
run: |
echo "Some jobs failed or were cancelled."
exit 1