Skip to content

Tests: E2E

Tests: E2E #349

Workflow file for this run

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