Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[CORE-718] Switch to matrix runner #48

Merged
merged 2 commits into from
Jun 10, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
315 changes: 58 additions & 257 deletions .github/workflows/run.e2e-tests.yml
Original file line number Diff line number Diff line change
Expand Up @@ -9,29 +9,51 @@ defaults:

env:
AWS_REGION: us-west-2
AWS_PROFILE: default
NAMESPACE: tftest
IZE_LOG_LEVEL: debug
IZE_PREFER_RUNTIME: native
IZE_PLAIN_TEXT: true
IZE_VERSION: 1.1.9
IZE_VERSION: 0.0.0-dev
AWS_PROFILE: debug

on:
workflow_dispatch:
pull_request:

jobs:
complete-worker:
e2e:
runs-on: ubuntu-latest
timeout-minutes: 60
strategy:
fail-fast: false
max-parallel: 2 # VPCs are limited
matrix:
include:
- name: complete-worker
env: e2e01
test_name: TestExamplesCompleteWorker
- name: worker-scheduled
env: e2e02
test_name: TestExamplesWorkerSchedule
- name: complete-web
env: e2e03
test_name: TestExamplesCompleteWeb
- name: web-nginx-proxy
env: e2e04
test_name: TestExamplesWebProxy
- name: worker-scheduled-autoscale
env: e2e05
test_name: TestExamplesWorkerAutoScheduled
- name: complete-worker-ec2
env: e2e06
test_name: TestExamplesWorkerEc2
env:
ENV: examples1
ENV: ${{ matrix.env }}

steps:
- name: Install Go
uses: actions/setup-go@v2
uses: actions/setup-go@v5
with:
go-version: 1.18.x
go-version: 1.22.x

- name: Checkout Code
uses: actions/checkout@v2
Expand All @@ -47,7 +69,7 @@ jobs:
run: ssh-keygen -q -f ~/.ssh/id_rsa

- name: IZE setup
uses: hazelops/action-setup-ize@0.0.1
uses: hazelops/action-setup-ize@1.0.1
with:
version: ${{ env.IZE_VERSION }}

Expand All @@ -62,267 +84,46 @@ jobs:

- name: Copy generated files
run: |
cp -R .ize/env/${{ env.ENV }}/*.* examples/${{ github.job }}/
cp -R .ize/env/${{ env.ENV }}/*.* examples/${{ matrix.name }}/

- name: Go TF Test
working-directory: test
run: |
cd test
go install github.com/gruntwork-io/terratest/cmd/terratest_log_parser@latest
go mod tidy
go test -v -timeout 60m -run TestExamplesCompleteWorker
go test -v -timeout 60m -run ${{ matrix.test_name }} -coverprofile=coverage-${{ matrix.test_name }}.out -race -covermode=atomic | tee test_output.log
terratest_log_parser -testlog test_output.log -outputdir results
ls -la


worker-scheduled:
runs-on: ubuntu-latest
timeout-minutes: 60
env:
ENV: examples2
needs:
- complete-worker
- web-nginx-proxy

steps:
- name: Install Go
uses: actions/setup-go@v2
with:
go-version: 1.18.x

- name: Checkout Code
uses: actions/checkout@v2

- name: Configure AWS Credentials
uses: aws-actions/configure-aws-credentials@v1
with:
aws-access-key-id: ${{ secrets.AWS_ACCESS_KEY_ID_SA }}
aws-secret-access-key: ${{ secrets.AWS_SECRET_ACCESS_KEY_SA }}
aws-region: ${{ env.AWS_REGION }}

- name: Generate Test SSH Key
run: ssh-keygen -q -f ~/.ssh/id_rsa

- name: IZE setup
uses: hazelops/[email protected]
with:
version: ${{ env.IZE_VERSION }}

- name: IZE init
run: ize init

- name: IZE create AWS Profile
run: ize gen aws-profile

- name: IZE gen tfenv
run: ize gen tfenv

- name: Copy generated files
run: |
cp -R .ize/env/${{ env.ENV }}/*.* examples/${{ github.job }}/

- name: Go TF Test
run: |
cd test
go mod tidy
go test -v -timeout 60m -run TestExamplesWorkerSchedule


complete-web:
runs-on: ubuntu-latest
timeout-minutes: 60
env:
ENV: examples3
needs:
- complete-worker
- web-nginx-proxy

steps:
- name: Install Go
uses: actions/setup-go@v2
with:
go-version: 1.18.x

- name: Checkout Code
uses: actions/checkout@v2

- name: Configure AWS Credentials
uses: aws-actions/configure-aws-credentials@v1
with:
aws-access-key-id: ${{ secrets.AWS_ACCESS_KEY_ID_SA }}
aws-secret-access-key: ${{ secrets.AWS_SECRET_ACCESS_KEY_SA }}
aws-region: ${{ env.AWS_REGION }}

- name: Generate Test SSH Key
run: ssh-keygen -q -f ~/.ssh/id_rsa

- name: IZE setup
uses: hazelops/[email protected]
with:
version: ${{ env.IZE_VERSION }}

- name: IZE init
run: ize init

- name: IZE create AWS Profile
run: ize gen aws-profile

- name: IZE gen tfenv
run: ize gen tfenv

- name: Copy generated files
run: |
cp -R .ize/env/${{ env.ENV }}/*.* examples/${{ github.job }}/

- name: Go TF Test
run: |
cd test
go mod tidy
go test -v -timeout 60m -run TestExamplesCompleteWeb


web-nginx-proxy:
runs-on: ubuntu-latest
env:
ENV: examples5
timeout-minutes: 60

steps:
- name: Install Go
uses: actions/setup-go@v2
with:
go-version: 1.18.x

- name: Checkout Code
uses: actions/checkout@v2

- name: Configure AWS Credentials
uses: aws-actions/configure-aws-credentials@v1
- name: Test Summary
uses: test-summary/action@v2
with:
aws-access-key-id: ${{ secrets.AWS_ACCESS_KEY_ID_SA }}
aws-secret-access-key: ${{ secrets.AWS_SECRET_ACCESS_KEY_SA }}
aws-region: ${{ env.AWS_REGION }}

- name: Generate Test SSH Key
run: ssh-keygen -q -f ~/.ssh/id_rsa

- name: IZE setup
uses: hazelops/[email protected]
with:
version: ${{ env.IZE_VERSION }}

- name: IZE init
run: ize init

- name: IZE create AWS Profile
run: ize gen aws-profile

- name: IZE gen tfenv
run: ize gen tfenv

- name: Copy generated files
run: |
cp -R .ize/env/${{ env.ENV }}/*.* examples/${{ github.job }}/

- name: Go TF Test
run: |
cd test
go mod tidy
go test -v -timeout 60m -run TestExamplesWebProxy

worker-scheduled-autoscale:
runs-on: ubuntu-latest
timeout-minutes: 60
env:
ENV: examples4
needs:
- worker-scheduled

steps:
- name: Install Go
uses: actions/setup-go@v2
with:
go-version: 1.18.x

- name: Checkout Code
uses: actions/checkout@v2

- name: Configure AWS Credentials
uses: aws-actions/configure-aws-credentials@v1
with:
aws-access-key-id: ${{ secrets.AWS_ACCESS_KEY_ID_SA }}
aws-secret-access-key: ${{ secrets.AWS_SECRET_ACCESS_KEY_SA }}
aws-region: ${{ env.AWS_REGION }}

- name: Generate Test SSH Key
run: ssh-keygen -q -f ~/.ssh/id_rsa

- name: IZE setup
uses: hazelops/[email protected]
with:
version: ${{ env.IZE_VERSION }}
paths: |
test/results/**/*.xml
test/results/*.xml

- name: IZE init
run: ize init

- name: IZE create AWS Profile
run: ize gen aws-profile

- name: IZE gen tfenv
run: ize gen tfenv

- name: Copy generated files
run: |
cp -R .ize/env/${{ env.ENV }}/*.* examples/${{ github.job }}/
if: always()

- name: Go TF Test
run: |
cd test
go mod tidy
go test -v -timeout 60m -run TestExamplesWorkerAutoScheduled

complete-worker-ec2:
runs-on: ubuntu-latest
timeout-minutes: 60
env:
ENV: examples6
needs:
- worker-scheduled-autoscale
steps:
- name: Install Go
uses: actions/setup-go@v2
- name: Upload test summary
uses: actions/upload-artifact@v3
with:
go-version: 1.18.x

- name: Checkout Code
uses: actions/checkout@v2
name: test-summary-${{ matrix.test_name }}
path: test/test-summary-${{ matrix.test_name }}.md
if: always()

- name: Configure AWS Credentials
uses: aws-actions/configure-aws-credentials@v1
- name: Upload Go test results
uses: actions/upload-artifact@v4
with:
aws-access-key-id: ${{ secrets.AWS_ACCESS_KEY_ID_SA }}
aws-secret-access-key: ${{ secrets.AWS_SECRET_ACCESS_KEY_SA }}
aws-region: ${{ env.AWS_REGION }}

- name: Generate Test SSH Key
run: ssh-keygen -q -f ~/.ssh/id_rsa
name: coverage-${{ matrix.test_name }}
path: test/coverage-${{ matrix.test_name }}.out
if: always()

- name: IZE setup
uses: hazelops/action-setup-ize@0.0.1
- name: Upload coverage reports to Codecov
uses: codecov/codecov-action@v4.0.1
with:
version: ${{ env.IZE_VERSION }}

- name: IZE init
run: ize init

- name: IZE create AWS Profile
run: ize gen aws-profile

- name: IZE gen tfenv
run: ize gen tfenv
files: test/coverage-${{ matrix.test_name }}.out
token: ${{ secrets.CODECOV_TOKEN }}
verbose: true
name: ${{ matrix.test_name }}

- name: Copy generated files
run: |
cp -R .ize/env/${{ env.ENV }}/*.* examples/${{ github.job }}/

- name: Go TF Test
run: |
cd test
go mod tidy
go test -v -timeout 60m -run TestExamplesCompleteWorkerEc2
4 changes: 2 additions & 2 deletions examples/complete-worker-ec2/main.tf
Original file line number Diff line number Diff line change
Expand Up @@ -75,13 +75,13 @@ resource "aws_key_pair" "root" {
module "ecs" {
source = "registry.terraform.io/terraform-aws-modules/ecs/aws"
version = "~> 4.0"
cluster_name = "${var.env}-${var.namespace}"
cluster_name = "${var.env}-${var.namespace}-worker-ec2"
}

module "worker_complete" {
source = "../.."

name = "worker"
name = "worker-ec2"
app_type = "worker"
env = var.env

Expand Down
Loading
Loading