Run Integration Tests #1509
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: MIT | |
name: Run Integration Tests | |
env: | |
PRIVATE_KEY: ${{ secrets.AWS_PRIVATE_KEY }} | |
TERRAFORM_AWS_ASSUME_ROLE: ${{ vars.TERRAFORM_AWS_ASSUME_ROLE }} | |
TERRAFORM_AWS_ASSUME_ROLE_CN: ${{ vars.TERRAFORM_AWS_ASSUME_ROLE_CN }} | |
TERRAFORM_AWS_ASSUME_ROLE_ITAR: ${{ vars.TERRAFORM_AWS_ASSUME_ROLE_ITAR }} | |
TERRAFORM_AWS_ASSUME_ROLE_DURATION: 14400 # 4 hours | |
S3_INTEGRATION_BUCKET: ${{ vars.S3_INTEGRATION_BUCKET }} | |
S3_INTEGRATION_BUCKET_CN: ${{ vars.S3_INTEGRATION_BUCKET_CN }} | |
S3_INTEGRATION_BUCKET_ITAR: ${{ vars.S3_INTEGRATION_BUCKET_ITAR }} | |
KEY_NAME: ${{ secrets.KEY_NAME }} | |
CF_IAM_ROLE: ${{ secrets.CF_IAM_ROLE }} | |
CF_KEY_NAME: ${{ secrets.CF_KEY_NAME }} | |
ECR_INTEGRATION_TEST_REPO: "cwagent-integration-test" | |
CWA_GITHUB_TEST_REPO_NAME: "aws/amazon-cloudwatch-agent-test" | |
CWA_GITHUB_TEST_REPO_URL: "https://github.com/aws/amazon-cloudwatch-agent-test.git" | |
CWA_GITHUB_TEST_REPO_BRANCH: "sky333999/test-mod" | |
on: | |
workflow_dispatch: | |
inputs: | |
build_run_id: | |
description: 'The ID of the build-test-artifacts workflow run' | |
type: number | |
required: true | |
build_sha: | |
description: 'The SHA of the build-test-artifacts workflow run' | |
type: string | |
required: true | |
concurrency: | |
group: ${{ github.workflow }}-${{ github.ref_name }} | |
cancel-in-progress: true | |
jobs: | |
MakeAndUploadVendor: | |
name: 'MakeAndUploadVendor' | |
runs-on: ubuntu-latest | |
permissions: | |
id-token: write | |
contents: read | |
steps: | |
- uses: actions/checkout@v3 | |
with: | |
repository: ${{env.CWA_GITHUB_TEST_REPO_NAME}} | |
ref: ${{env.CWA_GITHUB_TEST_REPO_BRANCH}} | |
- name: Set up Go 1.x | |
uses: actions/setup-go@v4 | |
with: | |
go-version: ~1.22.2 | |
- name: Run go mod vendor | |
run: | | |
go version | |
go mod tidy | |
go mod vendor | |
go mod verify | |
- name: Compress vendor directory | |
run: tar -czf vendor.tar.gz vendor go.mod go.sum | |
- 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 | |
role-duration-seconds: ${{ env.TERRAFORM_AWS_ASSUME_ROLE_DURATION }} | |
- name: Upload to Commercial S3 | |
run: | | |
echo "BucketKey: ${{ vars.S3_INTEGRATION_BUCKET }}/integration-test/test-vendor/${{ github.sha }}" | |
aws s3 cp vendor.tar.gz s3://${{ vars.S3_INTEGRATION_BUCKET }}/integration-test/test-vendor/${{ github.sha }}/vendor.tar.gz | |
- name: Configure China AWS Credentials | |
uses: aws-actions/configure-aws-credentials@v2 | |
env: | |
AWS_DEFAULT_REGION: ${{ null }} | |
AWS_REGION: ${{ null }} | |
AWS_ACCESS_KEY_ID: ${{ null }} | |
AWS_SECRET_ACCESS_KEY: ${{ null }} | |
AWS_SESSION_TOKEN: ${{ null }} | |
with: | |
role-to-assume: ${{ env.TERRAFORM_AWS_ASSUME_ROLE_CN }} | |
aws-region: cn-north-1 | |
role-duration-seconds: ${{ env.TERRAFORM_AWS_ASSUME_ROLE_DURATION }} | |
- name: Upload to China S3 | |
run: | | |
echo "BucketKey: ${{ vars.S3_INTEGRATION_BUCKET_CN }}/integration-test/test-vendor/${{ github.sha }}" | |
aws s3 cp vendor.tar.gz s3://${{ vars.S3_INTEGRATION_BUCKET_CN }}/integration-test/test-vendor/${{ github.sha }}/vendor.tar.gz | |
- name: Configure ITAR AWS Credentials | |
uses: aws-actions/configure-aws-credentials@v2 | |
env: | |
AWS_DEFAULT_REGION: ${{ null }} | |
AWS_REGION: ${{ null }} | |
AWS_ACCESS_KEY_ID: ${{ null }} | |
AWS_SECRET_ACCESS_KEY: ${{ null }} | |
AWS_SESSION_TOKEN: ${{ null }} | |
with: | |
role-to-assume: ${{ env.TERRAFORM_AWS_ASSUME_ROLE_ITAR }} | |
aws-region: us-gov-east-1 | |
role-duration-seconds: ${{ env.TERRAFORM_AWS_ASSUME_ROLE_DURATION }} | |
- name: Upload to ITAR S3 | |
run: | | |
echo "BucketKey: ${{ vars.S3_INTEGRATION_BUCKET_ITAR }}/integration-test/test-vendor/${{ github.sha }}" | |
aws s3 cp vendor.tar.gz s3://${{ vars.S3_INTEGRATION_BUCKET_ITAR }}/integration-test/test-vendor/${{ github.sha }}/vendor.tar.gz | |
GenerateTestMatrix: | |
name: 'GenerateTestMatrix' | |
runs-on: ubuntu-latest | |
outputs: | |
ec2_linux_matrix: ${{ steps.set-matrix.outputs.ec2_linux_matrix }} | |
steps: | |
- uses: actions/checkout@v3 | |
with: | |
repository: ${{env.CWA_GITHUB_TEST_REPO_NAME}} | |
ref: ${{env.CWA_GITHUB_TEST_REPO_BRANCH}} | |
- name: Set up Go 1.x | |
uses: actions/setup-go@v4 | |
with: | |
go-version: ~1.22.2 | |
- name: Generate matrix | |
id: set-matrix | |
run: | | |
go run --tags=generator generator/test_case_generator.go | |
echo "::set-output name=ec2_linux_matrix::$(echo $(cat generator/resources/ec2_linux_complete_test_matrix.json))" | |
- name: Echo test plan matrix | |
run: | | |
echo "ec2_linux_matrix: ${{ steps.set-matrix.outputs.ec2_linux_matrix }}" | |
# StartLocalStackCN: | |
# name: 'StartLocalStackCN' | |
# needs: [ OutputEnvVariables ] | |
# uses: ./.github/workflows/start-localstack.yml | |
# secrets: inherit | |
# permissions: | |
# id-token: write | |
# contents: read | |
# with: | |
# region: cn-north-1 | |
# test_repo_name: ${{ needs.OutputEnvVariables.outputs.CWA_GITHUB_TEST_REPO_NAME }} | |
# test_repo_branch: ${{ needs.OutputEnvVariables.outputs.CWA_GITHUB_TEST_REPO_BRANCH }} | |
# terraform_assume_role: ${{ vars.TERRAFORM_AWS_ASSUME_ROLE_CN }} | |
# test_repo_url: ${{ needs.OutputEnvVariables.outputs.CWA_GITHUB_TEST_REPO_URL }} | |
# github_sha: ${{github.sha}} | |
# s3_integration_bucket: ${{ vars.S3_INTEGRATION_BUCKET_CN }} | |
OutputEnvVariables: | |
name: 'OutputEnvVariables' | |
runs-on: ubuntu-latest | |
outputs: | |
CWA_GITHUB_TEST_REPO_NAME: ${{ steps.set-outputs.outputs.CWA_GITHUB_TEST_REPO_NAME }} | |
CWA_GITHUB_TEST_REPO_URL: ${{ steps.set-outputs.outputs.CWA_GITHUB_TEST_REPO_URL }} | |
CWA_GITHUB_TEST_REPO_BRANCH: ${{ steps.set-outputs.outputs.CWA_GITHUB_TEST_REPO_BRANCH }} | |
steps: | |
- uses: actions/checkout@v3 | |
with: | |
repository: ${{env.CWA_GITHUB_TEST_REPO_NAME}} | |
ref: ${{env.CWA_GITHUB_TEST_REPO_BRANCH}} | |
- name: Set up Go 1.x | |
uses: actions/setup-go@v4 | |
with: | |
go-version: ~1.22.2 | |
- name: SetOutputs | |
id: set-outputs | |
run: | | |
echo "::set-output name=CWA_GITHUB_TEST_REPO_NAME::${{ env.CWA_GITHUB_TEST_REPO_NAME }}" | |
echo "::set-output name=CWA_GITHUB_TEST_REPO_URL::${{ env.CWA_GITHUB_TEST_REPO_URL }}" | |
echo "::set-output name=CWA_GITHUB_TEST_REPO_BRANCH::${{ env.CWA_GITHUB_TEST_REPO_BRANCH }}" | |
- name: Echo test variables | |
run: | | |
echo "CWA_GITHUB_TEST_REPO_NAME: ${{ steps.set-outputs.outputs.CWA_GITHUB_TEST_REPO_NAME }}" | |
echo "CWA_GITHUB_TEST_REPO_URL: ${{ steps.set-outputs.outputs.CWA_GITHUB_TEST_REPO_URL }}" | |
echo "CWA_GITHUB_TEST_REPO_BRANCH: ${{ steps.set-outputs.outputs.CWA_GITHUB_TEST_REPO_BRANCH }}" | |
EC2LinuxIntegrationTest: | |
needs: [ GenerateTestMatrix, OutputEnvVariables, MakeAndUploadVendor ] | |
name: 'EC2Linux' | |
uses: ./.github/workflows/ec2-integration-test.yml | |
with: | |
github_sha: ${{github.sha}} | |
test_dir: terraform/ec2/linux | |
job_id: ec2-linux-integration-test | |
test_props: ${{needs.GenerateTestMatrix.outputs.ec2_linux_matrix}} | |
test_repo_name: ${{ needs.OutputEnvVariables.outputs.CWA_GITHUB_TEST_REPO_NAME }} | |
test_repo_url: ${{ needs.OutputEnvVariables.outputs.CWA_GITHUB_TEST_REPO_URL }} | |
test_repo_branch: ${{ needs.OutputEnvVariables.outputs.CWA_GITHUB_TEST_REPO_BRANCH }} | |
region: us-west-2 | |
terraform_assume_role: ${{ vars.TERRAFORM_AWS_ASSUME_ROLE }} | |
s3_integration_bucket: ${{ vars.S3_INTEGRATION_BUCKET }} | |
secrets: inherit | |
EC2LinuxIntegrationTestCN: | |
needs: [ GenerateTestMatrix, OutputEnvVariables, MakeAndUploadVendor ] | |
name: 'EC2LinuxCN' | |
uses: ./.github/workflows/ec2-integration-test.yml | |
with: | |
github_sha: ${{github.sha}} | |
test_dir: terraform/ec2/linux | |
job_id: ec2-linux-integration-test | |
test_props: ${{needs.GenerateTestMatrix.outputs.ec2_linux_china_matrix}} | |
test_repo_name: ${{ needs.OutputEnvVariables.outputs.CWA_GITHUB_TEST_REPO_NAME }} | |
test_repo_url: ${{ needs.OutputEnvVariables.outputs.CWA_GITHUB_TEST_REPO_URL }} | |
test_repo_branch: ${{ needs.OutputEnvVariables.outputs.CWA_GITHUB_TEST_REPO_BRANCH }} | |
localstack_host: ${{needs.StartLocalStackCN.outputs.local_stack_host_name}} | |
region: cn-north-1 | |
terraform_assume_role: ${{ vars.TERRAFORM_AWS_ASSUME_ROLE_CN }} | |
s3_integration_bucket: ${{ vars.S3_INTEGRATION_BUCKET_CN }} | |
secrets: inherit | |
# StopLocalStackCN: | |
# name: 'StopLocalStackCN' | |
# if: ${{ always() && needs.StartLocalStackCN.result == 'success' }} | |
# needs: [ StartLocalStackCN, EC2LinuxIntegrationTestCN ] | |
# uses: ./.github/workflows/stop-localstack.yml | |
# secrets: inherit | |
# permissions: | |
# id-token: write | |
# contents: read | |
# with: | |
# region: cn-north-1 | |
# test_repo_name: ${{ needs.OutputEnvVariables.outputs.CWA_GITHUB_TEST_REPO_NAME }} | |
# test_repo_branch: ${{ needs.OutputEnvVariables.outputs.CWA_GITHUB_TEST_REPO_BRANCH }} | |
# terraform_assume_role: ${{ vars.TERRAFORM_AWS_ASSUME_ROLE_CN }} | |
# github_sha: ${{github.sha}} | |
# s3_integration_bucket: ${{ vars.S3_INTEGRATION_BUCKET_CN }} |