Skip to content

feat(container-insights): Add k8staints processor to all pipelines #212

feat(container-insights): Add k8staints processor to all pipelines

feat(container-insights): Add k8staints processor to all pipelines #212

# Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
# SPDX-License-Identifier: Apache-2.0
name: Integration Test for Amazon CloudWatch Observability
on:
push:
branches:
- main
pull_request:
types: [ opened, reopened, synchronize, ready_for_review ]
branches:
- main
- release-*
workflow_dispatch:
concurrency:
group: ${{ github.workflow }}-${{ github.ref_name }}
cancel-in-progress: true
permissions:
id-token: write
contents: read
env:
TERRAFORM_AWS_ASSUME_ROLE: ${{ secrets.TERRAFORM_AWS_ASSUME_ROLE }}
AWS_DEFAULT_REGION: us-west-2
jobs:
Build:
name: Build
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@f43a0e5ff2bd294095638e18286ca9a3d1956744 # v3.6.0
- name: Build
run: make all
Minikube-IntegrationTests:
name: Minikube
needs: [ Build ]
runs-on: ubuntu-latest
timeout-minutes: 30
strategy:
matrix:
# TODO: add webhooks-disabled
scenario:
- default
- appsignals-disabled
- appsignals-disabled-multi-agents
- appsignals-enabled-multi-agents
- appsignals-unsupported
- webhooks-partially-enabled
- webhooks-configured
- deployment-rolling-enabled
- deployment-rolling-disabled
- certificate-recreate-enabled
- certificate-recreate-disabled
- dualstack-endpoint-enabled
- dualstack-endpoint-with-custom-endpoint
- configmap-permission-scoping
- feature-targeted-default
- feature-targeted-appsignals-disabled
- feature-targeted-ci-disabled
- feature-targeted-ci-and-appsignals-disabled
- feature-targeted-otlp-disabled
- feature-targeted-multi-agent
- feature-targeted-split-features
- feature-targeted-custom-otel-config
- feature-targeted-user-config-override
- feature-targeted-agent-config-override
- otlp-custom-otel-config
- otlp-disabled
- otlp-logs-disabled
- otlp-hybrid-metrics-fluentbit
- otlp-logs-dual-publish
- otlp-logs-otel-only
- agent-config-merge-isolation
steps:
- uses: actions/checkout@f43a0e5ff2bd294095638e18286ca9a3d1956744 # v3.6.0
- name: Start minikube
uses: medyagh/setup-minikube@e9e035a86bbc3caea26a450bd4dbf9d0c453682e # v0.0.21
with:
driver: docker
- name: Install Terraform
uses: hashicorp/setup-terraform@b9cd54a3c349d3f38e8881555d616ced269862dd # v3.1.2
with:
terraform_version: "1.1.7"
- name: Run scenario test
run: |
cd integration-tests/amazon-cloudwatch-observability/terraform/minikube/scenarios/${{ matrix.scenario }}
terraform init
terraform apply -auto-approve
terraform destroy -auto-approve
- name: Cleanup on failure
if: ${{ cancelled() || failure() }}
run: |
cd integration-tests/amazon-cloudwatch-observability/terraform/minikube/scenarios/${{ matrix.scenario }}
terraform destroy -auto-approve || true
EKS-IntegrationTest:
name: EKS-IntegrationTest
needs: [ Minikube-IntegrationTests ]
runs-on: ubuntu-latest
timeout-minutes: 60
steps:
- uses: actions/checkout@f43a0e5ff2bd294095638e18286ca9a3d1956744 # v3.6.0
with:
fetch-depth: 0
- name: Generate testing id
run: echo TESTING_ID="${{ github.run_id }}-${{ github.run_number }}" >> $GITHUB_ENV
- name: Configure AWS Credentials
uses: aws-actions/configure-aws-credentials@5fd3084fc36e372ff1fff382a39b10d03659f355 # v2.2.0
with:
role-to-assume: ${{ env.TERRAFORM_AWS_ASSUME_ROLE }}
aws-region: ${{ env.AWS_DEFAULT_REGION }}
# local directory to store the kubernetes config
- name: Create kubeconfig directory
run: mkdir -p ${{ github.workspace }}/../../../.kube
- name: Set KUBECONFIG environment variable
run: echo KUBECONFIG="${{ github.workspace }}/../../../.kube/config" >> $GITHUB_ENV
- name: Install Terraform
uses: hashicorp/setup-terraform@b9cd54a3c349d3f38e8881555d616ced269862dd # v3.1.2
with:
terraform_version: "1.1.7"
- name: Verify Terraform version
run: terraform --version
- name: Terraform apply
uses: nick-fields/retry@14672906e672a08bd6eeb15720e9ed3ce869cdd4 # v2.9.0
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/amazon-cloudwatch-observability/terraform/eks
terraform init
if terraform apply -auto-approve \
-var="kube_dir=${{ github.workspace }}/../../../.kube"; then
terraform destroy -auto-approve
else
terraform destroy -auto-approve && exit 1
fi
- name: Terraform destroy
if: ${{ cancelled() || failure() }}
uses: nick-fields/retry@14672906e672a08bd6eeb15720e9ed3ce869cdd4 # v2.9.0
with:
max_attempts: 3
timeout_minutes: 8
retry_wait_seconds: 5
command: |
cd integration-tests/amazon-cloudwatch-observability/terraform/eks
terraform destroy --auto-approve
EKS-IntegrationTest-Win2022:
name: EKS-IntegrationTest-Win2022
needs: [ Minikube-IntegrationTests ]
runs-on: ubuntu-latest
timeout-minutes: 60
steps:
- uses: actions/checkout@f43a0e5ff2bd294095638e18286ca9a3d1956744 # v3.6.0
with:
fetch-depth: 0
- name: Generate testing id
run: echo TESTING_ID="${{ github.run_id }}-${{ github.run_number }}" >> $GITHUB_ENV
- name: Configure AWS Credentials
uses: aws-actions/configure-aws-credentials@5fd3084fc36e372ff1fff382a39b10d03659f355 # v2.2.0
with:
role-to-assume: ${{ env.TERRAFORM_AWS_ASSUME_ROLE }}
aws-region: ${{ env.AWS_DEFAULT_REGION }}
# local directory to store the kubernetes config
- name: Create kubeconfig directory
run: mkdir -p ${{ github.workspace }}/../../../.kube
- name: Set KUBECONFIG environment variable
run: echo KUBECONFIG="${{ github.workspace }}/../../../.kube/config" >> $GITHUB_ENV
- name: Install Terraform
uses: hashicorp/setup-terraform@b9cd54a3c349d3f38e8881555d616ced269862dd # v3.1.2
with:
terraform_version: "1.1.7"
- name: Verify Terraform version
run: terraform --version
- name: Terraform apply
uses: nick-fields/retry@14672906e672a08bd6eeb15720e9ed3ce869cdd4 # v2.9.0
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/amazon-cloudwatch-observability/terraform/eks/windows
terraform init
if terraform apply -auto-approve \
-var="windows_os_version=WINDOWS_CORE_2022_x86_64" -var="kube_dir=${{ github.workspace }}/../../../.kube"; then
terraform destroy -auto-approve
else
terraform destroy -auto-approve && exit 1
fi
- name: Terraform destroy
if: ${{ cancelled() || failure() }}
uses: nick-fields/retry@14672906e672a08bd6eeb15720e9ed3ce869cdd4 # v2.9.0
with:
max_attempts: 3
timeout_minutes: 8
retry_wait_seconds: 5
command: |
cd integration-tests/amazon-cloudwatch-observability/terraform/eks/windows
terraform destroy --auto-approve
EKS-IntegrationTest-Win2019:
name: EKS-IntegrationTest-Win2019
needs: [ Minikube-IntegrationTests ]
runs-on: ubuntu-latest
timeout-minutes: 60
steps:
- uses: actions/checkout@f43a0e5ff2bd294095638e18286ca9a3d1956744 # v3.6.0
with:
fetch-depth: 0
- name: Generate testing id
run: echo TESTING_ID="${{ github.run_id }}-${{ github.run_number }}" >> $GITHUB_ENV
- name: Configure AWS Credentials
uses: aws-actions/configure-aws-credentials@5fd3084fc36e372ff1fff382a39b10d03659f355 # v2.2.0
with:
role-to-assume: ${{ env.TERRAFORM_AWS_ASSUME_ROLE }}
aws-region: ${{ env.AWS_DEFAULT_REGION }}
# local directory to store the kubernetes config
- name: Create kubeconfig directory
run: mkdir -p ${{ github.workspace }}/../../../.kube
- name: Set KUBECONFIG environment variable
run: echo KUBECONFIG="${{ github.workspace }}/../../../.kube/config" >> $GITHUB_ENV
- name: Install Terraform
uses: hashicorp/setup-terraform@b9cd54a3c349d3f38e8881555d616ced269862dd # v3.1.2
with:
terraform_version: "1.1.7"
- name: Verify Terraform version
run: terraform --version
- name: Terraform apply
uses: nick-fields/retry@14672906e672a08bd6eeb15720e9ed3ce869cdd4 # v2.9.0
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/amazon-cloudwatch-observability/terraform/eks/windows
terraform init
if terraform apply -auto-approve \
-var="windows_os_version=WINDOWS_CORE_2019_x86_64" -var="kube_dir=${{ github.workspace }}/../../../.kube"; then
terraform destroy -auto-approve
else
terraform destroy -auto-approve && exit 1
fi
- name: Terraform destroy
if: ${{ cancelled() || failure() }}
uses: nick-fields/retry@14672906e672a08bd6eeb15720e9ed3ce869cdd4 # v2.9.0
with:
max_attempts: 3
timeout_minutes: 8
retry_wait_seconds: 5
command: |
cd integration-tests/amazon-cloudwatch-observability/terraform/eks/windows
terraform destroy --auto-approve