Tests: E2E #349
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
name: "Tests: E2E" | |
concurrency: # This is required to ensure that only a single job or workflow using the same concurrency group will run at a time. | |
group: ${{ github.workflow }} | |
cancel-in-progress: false | |
defaults: | |
run: | |
shell: bash | |
env: | |
AWS_PROFILE: default | |
AWS_REGION: us-west-2 | |
NAMESPACE: tftest | |
IZE_PLAIN_TEXT: true | |
IZE_VERSION: 0.0.0-dev | |
on: | |
workflow_dispatch: | |
pull_request: | |
jobs: | |
build: | |
strategy: | |
matrix: | |
os: | |
- ubuntu-latest | |
# TODO: re-enable other platforms after Ubuntu is working fine | |
# - macos-latest | |
# - windows-latest | |
runs-on: ${{ matrix.os }} | |
steps: | |
- name: Install Go | |
uses: actions/setup-go@v5 | |
with: | |
go-version: 1.22.x | |
- name: Checkout Code | |
uses: actions/checkout@v2 | |
- name: Build | |
run: | | |
go mod download | |
make bin | |
- name: Upload Artifact | |
uses: actions/upload-artifact@v3 | |
with: | |
name: ize-${{ matrix.os }}-${{ github.sha }} | |
path: ${{ github.workspace }}/bin/ize | |
e2e: | |
runs-on: ubuntu-latest | |
timeout-minutes: 60 | |
needs: [build] | |
strategy: | |
fail-fast: false | |
max-parallel: 1 # VPCs are limited | |
matrix: | |
os: | |
- ubuntu-latest | |
# - windows-latest | |
# - macos-latest | |
include: | |
# - name: bastion-tunnel-monorepo | |
# env: e2eize01 | |
# tags: e2e bastion_tunnel | |
- name: ecs-apps-monorepo | |
env: e2eize02 | |
tags: e2e ecs_apps | |
# - name: sls-apps-monorepo | |
# env: e2eize03 | |
# tags: e2e terraform | |
# - name: ecs-app-single | |
# env: e2eize04 | |
# test_name: e2e ecs_apps_single | |
# - name: multistack-monorepo | |
# env: e2eize05 | |
# test_name: e2e multistack_monorepo | |
env: | |
ENV: ${{ matrix.env }} | |
IZE_EXAMPLES_PATH: "${{ github.workspace }}/examples/${{ matrix.name }}" | |
steps: | |
- name: Configure Environment Variables | |
run: | | |
echo "$GITHUB_PATH" | |
echo "${{ github.workspace }}/bin/" >> $GITHUB_PATH | |
- name: Install Go | |
uses: actions/setup-go@v5 | |
with: | |
go-version: 1.22.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_PROD }} | |
aws-secret-access-key: ${{ secrets.AWS_SECRET_ACCESS_KEY_PROD }} | |
aws-region: ${{ env.AWS_REGION }} | |
- name: Generate Test SSH Key | |
run: | | |
ssh-keygen -q -f ~/.ssh/id_rsa -t rsa -N '' | |
ssh-keygen -q -f ~/.ssh/id_rsa_tunnel_test -t rsa -N '' | |
chmod 600 ~/.ssh/id_rsa_tunnel_test | |
chmod 600 ~/.ssh/id_rsa_tunnel_test.pub | |
cat ~/.ssh/id_rsa_tunnel_test.pub | |
ls -ld ~/.ssh/* | |
- uses: actions/download-artifact@v3 | |
with: | |
name: ize-${{ matrix.os }}-${{ github.sha }} | |
path: bin | |
- name: Make Executable | |
run: | | |
chmod +rx "${{ github.workspace }}/bin/ize" | |
- name: IZE init | |
run: | | |
ize init | |
ize gen aws-profile | |
ize gen tfenv | |
# Clone existing "testnut" environment as an environment for a current test | |
- name: Prepare Environment | |
working-directory: "examples/${{ matrix.name }}/.ize/env/" | |
run: | | |
cp -R "testnut" "${{ env.ENV }}" | |
- name: Run Tests | |
run: | | |
go test -v --timeout 0 --tags="${{ matrix.tags }}" ./tests/e2e | |
- name: Cleanup Infra | |
if: ${{ always() }} | |
run: | | |
cd "${{ env.IZE_EXAMPLES_PATH }}" | |
ize down --auto-approve | |
# - name: Test Summary | |
# uses: test-summary/action@v2 | |
# with: | |
# paths: | | |
# test/results/**/*.xml | |
# test/results/*.xml | |
# | |
# if: always() | |
# | |
# - name: Upload test summary | |
# uses: actions/upload-artifact@v3 | |
# with: | |
# name: test-summary-${{ matrix.test_name }} | |
# path: test/test-summary-${{ matrix.test_name }}.md | |
# if: always() | |
# | |
# - name: Upload Go test results | |
# uses: actions/upload-artifact@v4 | |
# with: | |
# name: coverage-${{ matrix.test_name }} | |
# path: test/coverage-${{ matrix.test_name }}.out | |
# if: always() | |
# | |
# - name: Upload coverage reports to Codecov | |
# uses: codecov/[email protected] | |
# with: | |
# files: test/coverage-${{ matrix.test_name }}.out | |
# token: ${{ secrets.CODECOV_TOKEN }} | |
# verbose: true | |
# name: ${{ matrix.test_name }} | |
# test-ecs-apps: | |
# name: ECS Apps Monorepo | |
# needs: build | |
# strategy: | |
# max-parallel: 1 | |
# matrix: | |
# os: | |
# - ubuntu-latest | |
## - windows-latest | |
## - macos-latest | |
# runs-on: ${{ matrix.os }} | |
# env: | |
# IZE_EXAMPLES_PATH: ${{ github.workspace }}/examples/ecs-apps-monorepo | |
# steps: | |
# - name: Configure Environment Variables | |
# run: | | |
# echo "${{ github.workspace }}/bin/" >> $GITHUB_PATH | |
# echo "ENV=${{ github.job }}-$(echo $GITHUB_SHA | cut -c 1-6)" >> $GITHUB_ENV | |
# | |
# - name: Configure AWS Credentials | |
# uses: aws-actions/configure-aws-credentials@v4 | |
# with: | |
# aws-access-key-id: ${{ secrets.AWS_ACCESS_KEY_ID_PROD }} | |
# aws-secret-access-key: ${{ secrets.AWS_SECRET_ACCESS_KEY_PROD }} | |
# aws-region: ${{ env.AWS_REGION }} | |
# env: | |
# AWS_PROFILE: # This is required due to a bug https://stackoverflow.com/a/77731682 | |
# | |
# - name: Install Go | |
# uses: actions/setup-go@v5 | |
# with: | |
# go-version: 1.22.x | |
# | |
# - name: Checkout Code | |
# uses: actions/checkout@v2 | |
# | |
# - name: Prepare Test Environment | |
# run: mv "${{ env.IZE_EXAMPLES_PATH }}/.ize/env/testnut" "${{ env.IZE_EXAMPLES_PATH }}/.ize/env/${{ env.ENV }}" | |
# | |
# - uses: actions/download-artifact@v3 | |
# with: | |
# name: ize-${{ matrix.os }}-${{ github.sha }} | |
# path: bin | |
# | |
# - name: Make Executable | |
# run: | | |
# chmod +rx "${{ github.workspace }}/bin/ize" | |
# ize --version | |
# | |
# - name: Create AWS Profile | |
# run: ize gen aws-profile | |
# | |
# - name: Generate Test SSH Key | |
# run: ssh-keygen -q -f ~/.ssh/id_rsa | |
# | |
# - name: Run Tests | |
# run: | | |
# go test -v --timeout 0 --tags="e2e ecs_apps" ./tests/e2e | |
# | |
# - name: Cleanup Infra | |
# if: ${{ always() }} | |
# run: | | |
# cd "${{ env.IZE_EXAMPLES_PATH }}" | |
# ize down --auto-approve | |
# | |
# test-tunnel: | |
# name: Bastion Tunnel Monorepo | |
# needs: build | |
# strategy: | |
# max-parallel: 1 | |
# matrix: | |
# os: | |
# - ubuntu-latest | |
## TODO: re-enable other platforms after Ubuntu is working fine | |
## - windows-latest | |
## - macos-latest | |
# runs-on: ${{ matrix.os }} | |
# env: | |
# IZE_EXAMPLES_PATH: ${{ github.workspace }}/examples/bastion-tunnel-monorepo | |
# steps: | |
# - name: Configure Environment Variables | |
# run: | | |
# echo "${{ github.workspace }}/bin/" >> $GITHUB_PATH | |
# echo "ENV=${{ github.job }}-$(echo $GITHUB_SHA | cut -c 1-6)" >> $GITHUB_ENV | |
# | |
# - name: Configure AWS Credentials | |
# uses: aws-actions/configure-aws-credentials@v4 | |
# with: | |
# aws-access-key-id: ${{ secrets.AWS_ACCESS_KEY_ID_PROD }} | |
# aws-secret-access-key: ${{ secrets.AWS_SECRET_ACCESS_KEY_PROD }} | |
# aws-region: ${{ env.AWS_REGION }} | |
# env: | |
# AWS_PROFILE: # This is required due to a bug https://stackoverflow.com/a/77731682 | |
# | |
# - name: Install Go | |
# uses: actions/setup-go@v5 | |
# with: | |
# go-version: 1.22.x | |
# | |
# - name: Checkout Code | |
# uses: actions/checkout@v2 | |
# | |
# - name: Prepare Test Environment | |
# run: mv "${{ env.IZE_EXAMPLES_PATH }}/.ize/env/testnut" "${{ env.IZE_EXAMPLES_PATH }}/.ize/env/${{ env.ENV }}" | |
# | |
# - uses: actions/download-artifact@v3 | |
# with: | |
# name: ize-${{ matrix.os }}-${{ github.sha }} | |
# path: bin | |
# | |
# - name: Make Executable | |
# run: | | |
# chmod +rx "${{ github.workspace }}/bin/ize" | |
# ize --version | |
# | |
# - name: Create AWS Profile | |
# run: ize gen aws-profile | |
# | |
# - name: Generate Test SSH Key | |
# run: | | |
# ssh-keygen -q -f ~/.ssh/id_rsa -t rsa -N '' | |
# ssh-keygen -q -f ~/.ssh/id_rsa_tunnel_test -t rsa -N '' | |
# chmod 600 ~/.ssh/id_rsa_tunnel_test | |
# chmod 600 ~/.ssh/id_rsa_tunnel_test.pub | |
# cat ~/.ssh/id_rsa_tunnel_test.pub | |
# ls -ld ~/.ssh/* | |
# | |
# - name: Run Tests | |
# run: | | |
# go test -v --timeout 0 --tags="e2e bastion_tunnel" ./tests/e2e | |
# | |
# - name: Cleanup Infra | |
# if: ${{ always() }} | |
# run: | | |
# cd "${{ env.IZE_EXAMPLES_PATH }}" | |
# ize down --auto-approve | |
# | |
# test-terraform: | |
# name: Terraform Commands | |
# needs: build | |
# strategy: | |
# max-parallel: 1 | |
# matrix: | |
# os: | |
# - ubuntu-latest | |
## TODO: re-enable other platforms after Ubuntu is working fine | |
## - macos-latest | |
## - windows-latest | |
# | |
# runs-on: ${{ matrix.os }} | |
# env: | |
# IZE_EXAMPLES_PATH: ${{ github.workspace }}/examples/sls-apps-monorepo | |
# steps: | |
# - name: Configure Environment Variables | |
# run: | | |
# echo "${{ github.workspace }}/bin/" >> $GITHUB_PATH | |
# echo "ENV=${{ github.job }}-$(echo $GITHUB_SHA | cut -c 1-6)" >> $GITHUB_ENV | |
# | |
# - name: Configure AWS Credentials | |
# uses: aws-actions/configure-aws-credentials@v4 | |
# with: | |
# aws-access-key-id: ${{ secrets.AWS_ACCESS_KEY_ID_PROD }} | |
# aws-secret-access-key: ${{ secrets.AWS_SECRET_ACCESS_KEY_PROD }} | |
# aws-region: ${{ env.AWS_REGION }} | |
# env: | |
# AWS_PROFILE: # This is required due to a bug https://stackoverflow.com/a/77731682 | |
# | |
# - name: Install Go | |
# uses: actions/setup-go@v5 | |
# with: | |
# go-version: 1.22.x | |
# | |
# - name: Checkout Code | |
# uses: actions/checkout@v2 | |
# | |
# - name: Prepare Test Environment | |
# run: mv "${{ env.IZE_EXAMPLES_PATH }}/.ize/env/testnut" "${{ env.IZE_EXAMPLES_PATH }}/.ize/env/${{ env.ENV }}" | |
# | |
# - uses: actions/download-artifact@v3 | |
# with: | |
# name: ize-${{ matrix.os }}-${{ github.sha }} | |
# path: bin | |
# | |
# - name: Make Executable | |
# run: | | |
# chmod +rx "${{ github.workspace }}/bin/ize" | |
# ize --version | |
# | |
# - name: Create AWS Profile | |
# run: ize gen aws-profile | |
# | |
# - name: Generate Test SSH Key | |
# run: ssh-keygen -q -f ~/.ssh/id_rsa | |
# | |
# - name: Run Tests | |
# run: | | |
# go test -v --timeout 0 --tags="e2e terraform" ./tests/e2e |