diff --git a/.github/workflows/eks-add-on-canary-test.yml b/.github/workflows/eks-add-on-canary-test.yml new file mode 100644 index 000000000..98a4a434a --- /dev/null +++ b/.github/workflows/eks-add-on-canary-test.yml @@ -0,0 +1,93 @@ +# Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. +# SPDX-License-Identifier: Apache-2.0 + +name: Run EKS addon Canary Tests +env: + TERRAFORM_AWS_ASSUME_ROLE: ${{ secrets.TERRAFORM_AWS_ASSUME_ROLE }} + +on: + schedule: + - cron: '0 10 * * *' # triggers the workflow every day at 10:00 hours + +concurrency: + group: ${{ github.workflow }}-${{ github.ref_name }} + cancel-in-progress: true + +permissions: + id-token: write + contents: read + +jobs: + GenerateTestMatrix: + name: 'GenerateTestMatrix' + runs-on: ubuntu-latest + outputs: + eks_addon_matrix: ${{ steps.set-matrix.outputs.eks_addon_matrix }} + steps: + - uses: actions/checkout@v3 + with: + fetch-depth: 0 + + - name: Configure AWS Credentials + uses: aws-actions/configure-aws-credentials@v2 + with: + role-to-assume: ${{ env.TERRAFORM_AWS_ASSUME_ROLE }} + aws-region: us-west-2 + + - name: Generate matrix + id: set-matrix + run: | + echo "::set-output name=eks_addon_matrix::$(echo $(cat integration-tests/generator/k8s_versions_matrix.json))" + + EKSAddOnIntegrationTest: + needs: [GenerateTestMatrix] + name: EKSAddOnIntegrationTest + runs-on: ubuntu-latest + strategy: + fail-fast: false + matrix: + arrays: ${{ fromJson(needs.GenerateTestMatrix.outputs.eks_addon_matrix) }} + permissions: + id-token: write + contents: read + steps: + - uses: actions/checkout@v3 + with: + fetch-depth: 0 + + - name: Configure AWS Credentials + uses: aws-actions/configure-aws-credentials@v2 + with: + role-to-assume: ${{ env.TERRAFORM_AWS_ASSUME_ROLE }} + aws-region: us-west-2 + + - name: Terraform apply + uses: nick-fields/retry@v2 + with: + max_attempts: 1 + timeout_minutes: 60 # EKS takes about 20 minutes to spin up a cluster and service on the cluster + retry_wait_seconds: 5 + command: | + cd integration-tests/terraform/eks + + terraform init + latest_version=$(aws eks describe-addon-versions --addon-name=amazon-cloudwatch-observability \ + --query='addons[].addonVersions[0].addonVersion' --region=us-west-2 | jq -r '.[0]') + echo $latest_version + if terraform apply -var "addon_version=$latest_version" -var="k8s_version=${{ matrix.arrays.k8sVersion }}" --auto-approve; then + terraform destroy -auto-approve + else + terraform destroy -auto-approve && exit 1 + fi + + - name: Terraform destroy + if: ${{ cancelled() || failure() }} + uses: nick-fields/retry@v2 + with: + max_attempts: 3 + timeout_minutes: 8 + retry_wait_seconds: 5 + command: | + cd integration-tests/terraform/eks + + terraform destroy --auto-approve \ No newline at end of file diff --git a/.github/workflows/eks-add-on-integ-test.yml b/.github/workflows/eks-add-on-integ-test.yml index d16388c77..7065c0342 100644 --- a/.github/workflows/eks-add-on-integ-test.yml +++ b/.github/workflows/eks-add-on-integ-test.yml @@ -125,4 +125,4 @@ jobs: command: | cd integration-tests/terraform/eks - terraform destroy -var="beta=${{ github.event.inputs.run_in_beta }}" --auto-approve + terraform destroy -var="beta=${{ github.event.inputs.run_in_beta }}" --auto-approve \ No newline at end of file