diff --git a/.github/workflows/deploy-sandbox.yml b/.github/workflows/deploy-sandbox.yml index c7fe5a2..cd3aacd 100644 --- a/.github/workflows/deploy-sandbox.yml +++ b/.github/workflows/deploy-sandbox.yml @@ -4,63 +4,13 @@ on: pull_request: branches: [ "**" ] -permissions: - id-token: write - contents: read - jobs: build-matrix: - runs-on: ubuntu-latest - outputs: - matrix: ${{ steps.build-matrix.outputs.matrix }} - steps: - - uses: actions/checkout@09d2acae674a48949e3602304ab46fd20ae0c42f - - name: Build Environment Matrix - id: build-matrix - shell: python - env: - PLATFORM_ENVIRONMENT: "sandbox" - run: | - from pathlib import Path - import os - import json - - def discover_environments(platform_path: Path = Path("platform")) -> list[Path]: - return [d for d in platform_path.iterdir() if d.is_dir()] - - def discover_regions(environment_path: Path) -> list[Path]: - return [d for d in environment_path.iterdir() if d.is_dir()] - - def discover_instances(region_path: Path) -> list[Path]: - return [d for d in region_path.iterdir() if d.is_dir()] - - try: - ENVIRONMENT = os.environ['PLATFORM_ENVIRONMENT'] - except KeyError as ke: - raise ValueError("Environment variable named PLATFORM_ENVIRONMENT was not found. This variable must be supplied so that a matrix of environments can be built!") - - if len(ENVIRONMENT) == 0: - raise ValueError("Environment variable PLATFORM_ENVIRONMENT was empty. This variable must be supplied so that a matrix of environments can be built!") - - all_environments = discover_environments() - matrix = {"terragrunt_environment": []} - try: - selected_environment = list(filter(lambda x: x.name == ENVIRONMENT, all_environments))[0] - except Exception: - raise ValueError(f"Expected environment '{ENVIRONMENT}' not found in {all_environments}") - - regions = discover_regions(environment_path=selected_environment) - - for region_path in regions: - region_instances = discover_instances(region_path=region_path) - for instance in region_instances: - matrix["terragrunt_environment"].append({"environment": selected_environment.name, "region": region_path.name, "instance": instance.name}) - - print("Generated the following environment matrix:") - print(json.dumps(matrix, indent=4)) - - with open(os.environ["GITHUB_OUTPUT"], "a") as f: - f.write(f"matrix={json.dumps(matrix, separators=(',', ':'))}") + permissions: + contents: read + uses: launchbynttdata/launch-workflows/.github/workflows/reusable-github-matrix-tg.yml@0.1.3 + with: + platform_environment: sandbox call-terragrunt-deploy: needs: build-matrix @@ -71,7 +21,7 @@ jobs: fail-fast: false matrix: ${{ fromJson(needs.build-matrix.outputs.matrix) }} - uses: launchbynttdata/launch-workflows/.github/workflows/reusable-terragrunt-deploy.yml@v0.1.0 + uses: launchbynttdata/launch-workflows/.github/workflows/reusable-terragrunt-deploy.yml@0.1.3 with: tf_version: '1.5.5' tg_version: '0.54.11' diff --git a/.github/workflows/release-published.yml b/.github/workflows/release-published.yml index 1330cb9..b201e36 100644 --- a/.github/workflows/release-published.yml +++ b/.github/workflows/release-published.yml @@ -5,63 +5,13 @@ on: name: Deploy to Production -permissions: - contents: read - - jobs: build-matrix: - runs-on: ubuntu-latest - outputs: - matrix: ${{ steps.build-matrix.outputs.matrix }} - steps: - - uses: actions/checkout@09d2acae674a48949e3602304ab46fd20ae0c42f - - name: Build Environment Matrix - id: build-matrix - shell: python - env: - PLATFORM_ENVIRONMENT: "production" - run: | - from pathlib import Path - import os - import json - - def discover_environments(platform_path: Path = Path("platform")) -> list[Path]: - return [d for d in platform_path.iterdir() if d.is_dir()] - - def discover_regions(environment_path: Path) -> list[Path]: - return [d for d in environment_path.iterdir() if d.is_dir()] - - def discover_instances(region_path: Path) -> list[Path]: - return [d for d in region_path.iterdir() if d.is_dir()] - - try: - ENVIRONMENT = os.environ['PLATFORM_ENVIRONMENT'] - except KeyError as ke: - raise ValueError("Environment variable named PLATFORM_ENVIRONMENT was not found. This variable must be supplied so that a matrix of environments can be built!") - - if len(ENVIRONMENT) == 0: - raise ValueError("Environment variable PLATFORM_ENVIRONMENT was empty. This variable must be supplied so that a matrix of environments can be built!") - - all_environments = discover_environments() - matrix = {"terragrunt_environment": []} - try: - selected_environment = list(filter(lambda x: x.name == ENVIRONMENT, all_environments))[0] - except Exception: - raise ValueError(f"Expected environment '{ENVIRONMENT}' not found in {all_environments}") - - regions = discover_regions(environment_path=selected_environment) - - for region_path in regions: - region_instances = discover_instances(region_path=region_path) - for instance in region_instances: - matrix["terragrunt_environment"].append({"environment": selected_environment.name, "region": region_path.name, "instance": instance.name}) - - print("Generated the following environment matrix:") - print(json.dumps(matrix, indent=4)) - - with open(os.environ["GITHUB_OUTPUT"], "a") as f: - f.write(f"matrix={json.dumps(matrix, separators=(',', ':'))}") + permissions: + contents: read + uses: launchbynttdata/launch-workflows/.github/workflows/reusable-github-matrix-tg.yml@0.1.3 + with: + platform_environment: production call-terragrunt-deploy: needs: build-matrix @@ -72,12 +22,11 @@ jobs: fail-fast: false matrix: ${{ fromJson(needs.build-matrix.outputs.matrix) }} - uses: launchbynttdata/launch-workflows/.github/workflows/reusable-terragrunt-deploy.yml@v0.1.0 + uses: launchbynttdata/launch-workflows/.github/workflows/reusable-terragrunt-deploy.yml@0.1.3 with: tf_version: '1.5.5' tg_version: '0.54.11' environment: ${{ matrix.terragrunt_environment.environment }} region: ${{ matrix.terragrunt_environment.region }} env_id: ${{ matrix.terragrunt_environment.instance }} - secrets: inherit diff --git a/src/function/app.py b/src/function/app.py index 2d196e8..250693a 100644 --- a/src/function/app.py +++ b/src/function/app.py @@ -6,5 +6,5 @@ def lambda_handler(event, context): return { "statusCode": 200, - "body": f"Hello from a sample Python Lambda! Payload: {PAYLOAD}", + "body": f"Hello from a sample Python Lambda Function! Payload: {PAYLOAD}", } diff --git a/test/unit/test_app.py b/test/unit/test_app.py index 4912fb8..8ae6210 100644 --- a/test/unit/test_app.py +++ b/test/unit/test_app.py @@ -6,7 +6,7 @@ def test_primary_handler(): result = app.lambda_handler(None, None) assert result["statusCode"] == 200 - assert result["body"] == "Hello from a sample Python Lambda! Payload: None" + assert result["body"] == "Hello from a sample Python Lambda Function! Payload: None" def test_primary_handler_with_payload(): @@ -14,5 +14,6 @@ def test_primary_handler_with_payload(): result = app.lambda_handler(None, None) assert result["statusCode"] == 200 assert ( - result["body"] == "Hello from a sample Python Lambda! Payload: test_payload" + result["body"] + == "Hello from a sample Python Lambda Function! Payload: test_payload" )