[backport] gateway2: allow child policies to always set fields unset on the parent #938
Workflow file for this run
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: Kubernetes Tests | |
on: | |
pull_request: | |
types: [opened, synchronize, reopened, ready_for_review] | |
env: | |
VERSION: '1.0.0-ci1' | |
GITHUB_TOKEN: ${{ github.token }} | |
jobs: | |
prepare_env: | |
name: Prepare Environment | |
runs-on: ubuntu-22.04 | |
timeout-minutes: 5 | |
outputs: | |
should-auto-succeed-kube-tests: ${{ steps.run-strategy.outputs.auto_succeed }} | |
steps: | |
- name: Cancel Previous Actions | |
uses: styfle/[email protected] | |
with: | |
access_token: ${{ github.token }} | |
- id: checkout-code | |
uses: actions/checkout@v4 | |
with: | |
# We require gathering the branch and tag history since we rely on a `git diff` | |
# which compares the state of two branches | |
fetch-depth: 0 | |
- id: process-skip-directives | |
uses: ./.github/workflows/composite-actions/process-skip-directives | |
with: | |
base-ref: ${{ github.base_ref }} | |
- id: run-strategy | |
name: Determine Test Run Strategy | |
run: | | |
skip_kube_tests=${{ steps.process-skip-directives.outputs.skip-kube-tests }} | |
if [[ ! -z $skip_kube_tests && $skip_kube_tests = true ]] ; then | |
echo "auto_succeed=true" >> $GITHUB_OUTPUT | |
fi | |
end_to_end_tests: | |
name: End-to-End (${{ matrix.test.cluster-name }}) | |
needs: prepare_env | |
runs-on: ubuntu-22.04 | |
timeout-minutes: 60 | |
if: ${{ !github.event.pull_request.draft }} | |
strategy: | |
fail-fast: false | |
matrix: | |
# We intentionally set an upper threshold of 25 minutes for our End-to-End tests | |
# Our goal is to load balance tests in a way that allows quick iteration on PRs | |
# If tests are exceeding the 25-minute limit, please see: | |
# /test/kubernetes/e2e/load_balancing_tests.md | |
test: | |
# September 19, 2024: 22 minutes | |
- cluster-name: 'cluster-one' | |
go-test-args: '-v -timeout=25m' | |
go-test-run-regex: '^TestK8sGateway$$/^RouteDelegation$$|^TestK8sGateway$$/^Services$$|^TestGlooctlGlooGatewayEdgeGateway$$|^TestGlooctlK8sGateway$$' | |
# September 19, 2024: 16 minutes | |
- cluster-name: 'cluster-two' | |
go-test-args: '-v -timeout=25m' | |
go-test-run-regex: '^TestK8sGatewayIstioRevision$$|^TestRevisionIstioRegression$$|^TestK8sGateway$$/^Deployer$$|^TestK8sGateway$$/^RouteOptions$$|^TestK8sGateway$$/^VirtualHostOptions$$|^TestK8sGateway$$/^Upstreams$$|^TestK8sGateway$$/^HeadlessSvc$$|^TestK8sGateway$$/^PortRouting$$|^TestK8sGatewayMinimalDefaultGatewayParameters$$' | |
# September 19, 2024: 22 minutes | |
- cluster-name: 'cluster-three' | |
go-test-args: '-v -timeout=25m' | |
go-test-run-regex: '(^TestK8sGatewayIstioAutoMtls$$|^TestAutomtlsIstioEdgeApisGateway$$|^TestIstioEdgeApiGateway$$|^TestIstioRegression$$)' | |
# September 19, 2024: 22 minutes | |
- cluster-name: 'cluster-four' | |
go-test-args: '-v -timeout=25m' | |
go-test-run-regex: '(^TestK8sGatewayIstio$$|^TestGlooGatewayEdgeGateway$$|^TestGlooctlIstioInjectEdgeApiGateway$$|^TestK8sGatewayNoValidation$$)' | |
# September 19, 2024: 22 minutes | |
- cluster-name: 'cluster-five' | |
go-test-args: '-v -timeout=25m' | |
go-test-run-regex: '^TestWatchNamespaceSelector$$|^TestValidationStrict$$|^TestValidationAlwaysAccept$$|^TestTransformationValidationDisabled$$|^TestGloomtlsGatewayEdgeGateway$$' | |
# In our PR tests, we run the suite of tests using the upper ends of versions that we claim to support | |
# The versions should mirror: https://docs.solo.io/gloo-edge/latest/reference/support/ | |
version-files: | |
- file: './.github/workflows/.env/pr-tests/versions.env' | |
steps: | |
- id: auto-succeed-tests | |
if: needs.prepare_env.outputs.should-auto-succeed-kube-tests == 'true' | |
run: | | |
echo "Regression tests auto-succeeded" | |
- uses: actions/checkout@v4 | |
- name: Prep Go Runner | |
uses: ./.github/workflows/composite-actions/prep-go-runner | |
if: needs.prepare_env.outputs.should-auto-succeed-kube-tests != 'true' | |
# The dotenv action is used to load key-value pairs from files. | |
# In this case, the file is specified in the matrix and will contain the versions of the tools to use | |
- name: Dotenv Action | |
uses: falti/[email protected] | |
if: needs.prepare_env.outputs.should-auto-succeed-kube-tests != 'true' | |
id: dotenv | |
with: | |
path: ${{ matrix.version-files.file }} | |
log-variables: true | |
- id: setup-kind-cluster | |
name: Setup KinD Cluster | |
if: needs.prepare_env.outputs.should-auto-succeed-kube-tests != 'true' | |
uses: ./.github/workflows/composite-actions/setup-kind-cluster | |
with: | |
cluster-name: ${{ matrix.test.cluster-name }} | |
kind-node-version: ${{ steps.dotenv.outputs.node_version }} | |
kind-version: ${{ steps.dotenv.outputs.kind_version }} | |
kubectl-version: ${{ steps.dotenv.outputs.kubectl_version }} | |
helm-version: ${{ steps.dotenv.outputs.helm_version }} | |
istio-version: ${{ steps.dotenv.outputs.istio_version }} | |
- id: run-tests | |
if: needs.prepare_env.outputs.should-auto-succeed-kube-tests != 'true' | |
uses: ./.github/workflows/composite-actions/kubernetes-e2e-tests | |
with: | |
cluster-name: ${{ matrix.test.cluster-name }} | |
test-args: ${{ matrix.test.go-test-args }} | |
run-regex: ${{ matrix.test.go-test-run-regex }} | |
istio-version: ${{ steps.dotenv.outputs.istio_version }} |