From e0b6ebe252ab7d5361d6309451234b78b2ae453a Mon Sep 17 00:00:00 2001 From: Harsh Mishra Date: Wed, 23 Apr 2025 23:49:13 +0530 Subject: [PATCH 1/4] add a CI workflow to test Terraform deployments --- .github/workflows/integration-test.yml | 81 +++++++++++++++++++++++++- 1 file changed, 80 insertions(+), 1 deletion(-) diff --git a/.github/workflows/integration-test.yml b/.github/workflows/integration-test.yml index 9890482..a6ddc55 100644 --- a/.github/workflows/integration-test.yml +++ b/.github/workflows/integration-test.yml @@ -26,7 +26,86 @@ on: jobs: - run-it-tests-job: + run-terraform-deployment: + name: Run Terraform Deployment + runs-on: ${{ inputs.runner-os || 'ubuntu-latest' }} + steps: + - name: Checkout + uses: actions/checkout@v4 + + - name: Set up Python 3.11 + id: setup-python + uses: actions/setup-python@v2 + with: + python-version: 3.11 + + - name: Install Terraform + uses: hashicorp/setup-terraform@v2 + + - name: Install Terraform Local + run: | + pip install --upgrade terraform-local + + - name: Set up Project + run: | + pip install -r requirements-dev.txt + + - name: Start LocalStack + uses: LocalStack/setup-localstack@v0.2.4 + with: + image-tag: 'latest' + use-pro: 'true' + configuration: LS_LOG=trace + install-awslocal: 'true' + env: + LOCALSTACK_AUTH_TOKEN: ${{ secrets.LOCALSTACK_AUTH_TOKEN }} + + - name: Build lambdas + run: | + bin/build_lambdas.sh + + - name: Deploy infrastructure + run: | + cd deployment/terraform + tflocal init + tflocal apply --auto-approve + + - name: Run tests + run: | + pytest tests + + - name: Show localstack logs + if: always() + run: | + localstack logs + + - name: Send a Slack notification + if: failure() || github.event_name != 'pull_request' + uses: ravsamhq/notify-slack-action@v2 + with: + status: ${{ job.status }} + token: ${{ secrets.GITHUB_TOKEN }} + notification_title: "{workflow} has {status_message}" + message_format: "{emoji} *{workflow}* {status_message} in <{repo_url}|{repo}>" + footer: "Linked Repo <{repo_url}|{repo}> | <{run_url}|View Workflow run>" + notify_when: "failure" + env: + SLACK_WEBHOOK_URL: ${{ secrets.SLACK_WEBHOOK_URL }} + + - name: Generate a Diagnostic Report + if: failure() + run: | + curl -s localhost:4566/_localstack/diagnose | gzip -cf > diagnose.json.gz + + - name: Upload the Diagnostic Report + if: failure() + uses: actions/upload-artifact@v4 + with: + name: diagnose.json.gz + path: ./diagnose.json.gz + + run-integration-tests-job: + name: Run Integration Tests runs-on: ${{ inputs.runner-os || 'ubuntu-latest' }} steps: - name: Checkout From a7f36a40f29d605770951660bed4f0180b187ffa Mon Sep 17 00:00:00 2001 From: Harsh Mishra Date: Wed, 23 Apr 2025 23:52:52 +0530 Subject: [PATCH 2/4] fix yaml --- .github/workflows/integration-test.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/integration-test.yml b/.github/workflows/integration-test.yml index a6ddc55..d6896ea 100644 --- a/.github/workflows/integration-test.yml +++ b/.github/workflows/integration-test.yml @@ -46,7 +46,7 @@ jobs: run: | pip install --upgrade terraform-local - - name: Set up Project + - name: Set up Project run: | pip install -r requirements-dev.txt From b1544a5784c78aa0cfa70f77107bb5587d5dc8e3 Mon Sep 17 00:00:00 2001 From: Harsh Mishra Date: Wed, 23 Apr 2025 23:55:19 +0530 Subject: [PATCH 3/4] attempt to fix --- deployment/terraform/main.tf | 16 +--------------- 1 file changed, 1 insertion(+), 15 deletions(-) diff --git a/deployment/terraform/main.tf b/deployment/terraform/main.tf index a70c437..c647b4b 100644 --- a/deployment/terraform/main.tf +++ b/deployment/terraform/main.tf @@ -1,17 +1,3 @@ -terraform { - required_providers { - aws = { - source = "hashicorp/aws" - version = "<= 5.72.1" - } - } -} - -provider "aws" { - region = "us-east-1" - skip_requesting_account_id = true -} - locals { # TO-DO: The environment variable STAGE is required for Lambdas to connect to LocalStack endpoints. # The environment variable can be removed once Lambdas are adapted to support transparent endpoint injection. @@ -335,4 +321,4 @@ output "list_lambda_function_url" { output "cloudfront_url" { value = "Now open the Web app under: http://${aws_cloudfront_distribution.cdn.domain_name}" -} \ No newline at end of file +} From 4ad1a4e859cb2f7f6e20086480b77e7af39fe3bb Mon Sep 17 00:00:00 2001 From: Harsh Mishra Date: Wed, 23 Apr 2025 23:58:59 +0530 Subject: [PATCH 4/4] another attempt to fix --- .github/workflows/integration-test.yml | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/.github/workflows/integration-test.yml b/.github/workflows/integration-test.yml index d6896ea..edefbb3 100644 --- a/.github/workflows/integration-test.yml +++ b/.github/workflows/integration-test.yml @@ -40,7 +40,7 @@ jobs: python-version: 3.11 - name: Install Terraform - uses: hashicorp/setup-terraform@v2 + uses: hashicorp/setup-terraform@v3 - name: Install Terraform Local run: | @@ -70,10 +70,6 @@ jobs: tflocal init tflocal apply --auto-approve - - name: Run tests - run: | - pytest tests - - name: Show localstack logs if: always() run: |