Run EKS addon Integration Tests #248
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
# Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. | ||
# SPDX-License-Identifier: Apache-2.0 | ||
name: Run EKS addon Integration Tests | ||
env: | ||
TERRAFORM_AWS_ASSUME_ROLE: ${{ secrets.TERRAFORM_AWS_ASSUME_ROLE }} | ||
on: | ||
workflow_dispatch: | ||
inputs: | ||
addon_name: | ||
required: true | ||
type: string | ||
description: "EKS addon name" | ||
addon_version: | ||
required: true | ||
type: string | ||
description: "EKS addon version" | ||
run_in_beta: | ||
required: true | ||
type: boolean | ||
description: "Run in EKS Addon Beta environment" | ||
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))" | ||
- name: Echo test plan matrix | ||
run: | | ||
echo "eks_addon_matrix: ${{ steps.set-matrix.outputs.eks_addon_matrix }}" | ||
echo "Addon name ${{ github.event.inputs.addon_name }}, addon version ${{ github.event.inputs.addon_version }} " | ||
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: Confirm EKS Version Support | ||
run: | | ||
if [[ | ||
$(go list -m k8s.io/client-go | cut -d ' ' -f 2 | cut -d '.' -f 2) -lt $( echo ${{ matrix.arrays.k8sVersion }} | cut -d '.' -f 2) | ||
|| $(go list -m k8s.io/apimachinery | cut -d ' ' -f 2 | cut -d '.' -f 2) -lt $( echo ${{ matrix.arrays.k8sVersion }} | cut -d '.' -f 2) | ||
|| $(go list -m k8s.io/component-base | cut -d ' ' -f 2 | cut -d '.' -f 2) -lt $( echo ${{ matrix.arrays.k8sVersion }} | cut -d '.' -f 2) | ||
|| $(go list -m k8s.io/kubectl | cut -d ' ' -f 2 | cut -d '.' -f 2) -lt $( echo ${{ matrix.arrays.k8sVersion }} | cut -d '.' -f 2) | ||
]]; then | ||
echo k8s.io/client-go $(go list -m k8s.io/client-go) is less than ${{ matrix.arrays.k8sVersion }} | ||
echo or k8s.io/apimachinery $(go list -m k8s.io/apimachinery) is less than ${{ matrix.arrays.k8sVersion }} | ||
echo or k8s.io/component-base $(go list -m k8s.io/component-base) is less than ${{ matrix.arrays.k8sVersion }} | ||
echo or k8s.io/kubectl $(go list -m k8s.io/kubectl) is less than ${{ matrix.arrays.k8sVersion }} | ||
echo "[WARNING] Kubernetes dependencies are lower than the latest Kubernetes cluster version. Please check changelog to ensure no breaking changes: https://kubernetes.io/releases/" | ||
fi | ||
- name: Verify Terraform version | ||
run: terraform --version | ||
- 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: | | ||
Check failure on line 107 in .github/workflows/eks-add-on-integ-test.yml GitHub Actions / Run EKS addon Integration TestsInvalid workflow file
|
||
addon_name="${{ github.event.inputs.addon_name || 'amazon-cloudwatch-observability' }}" | ||
addon_version="${{ github.event.inputs.addon_version || 'latest' }}" | ||
run_in_beta="${{ github.event.inputs.run_in_beta == true || github.event.inputs.run_in_beta == 'true' || false }}" | ||
# If the addon_version is 'latest', get the most recent version of the add-on from AWS | ||
if [ "$addon_version" == "latest" ]; then | ||
addon_version=$(aws eks describe-addon-versions --addon-name "$addon_name" --query='addons[].addonVersions[0].addonVersion' --region=us-west-2 | jq -r '.[0]') | ||
fi | ||
cd integration-tests/terraform/eks | ||
terraform init | ||
if terraform apply -var="beta=${{ run_in_beta }}" -var="addon_name=${{ addon_name }}" -var="addon_version=${{ addon_version }}" -var="k8s_version=${{ matrix.arrays.k8sVersion }}" --auto-approve; then | ||
terraform destroy -var="beta=${{ run_in_beta }}" -auto-approve | ||
else | ||
terraform destroy -var="beta=${{ run_in_beta }}" -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: | | ||
run_in_beta="${{ github.event.inputs.run_in_beta == true || github.event.inputs.run_in_beta == 'true' || false }}" | ||
cd integration-tests/terraform/eks | ||
terraform destroy -var="beta=${{ run_in_beta }}" --auto-approve |