Untitled

 avatar
unknown
plain_text
6 months ago
4.4 kB
3
Indexable
on:
  workflow_call:
    inputs:
      aws-environment:
        description: The AWS environment to synth for, one of [dev, staging, prod]
        type: string
        required: true
      aws-account:
        description: The AWS account to use while synthesizing stacks
        type: string
        required: true
      aws-primary-region:
        description: The primary AWS region to synthesize stacks for
        type: string
        required: true
      aws-secondary-region:
        description: The secondary AWS region to synthesize stacks for
        type: string
        required: true
      working-dir:
        description: The working directory for synth
        type: string
        required: false
        default: infra/cdk
      node-version:
        description: Node Version
        type: number
        required: false
        default: 18
      python-version:
        description: python version
        type: string
        required: false
        default: '3.9'

jobs:
  synth:
    name: synth-${{ inputs.aws-environment }}
    runs-on: ubuntu-latest
    steps:
      - name: checkout
        uses: actions/checkout@v3

      - name: Setup python
        uses: principalglobalassetmanagement-emu/pgam-github-actions-shared/python/python-setup@master
        with:
          python-version: ${{ inputs.python-version }}
          working-dir: ${{ inputs.working-dir }}
          PFG_ARTIFACTORY_USERNAME: ${{ secrets.PFG_ARTIFACTORY_USERNAME }}
          PFG_ARTIFACTORY_PASSWORD: ${{ secrets.PFG_ARTIFACTORY_PASSWORD }}

      - uses: actions/setup-node@v3
        with:
          node-version: ${{ inputs.node-version }}

      - name: Install CDK
        run: sudo npm install -g aws-cdk

      - name: Configure ${{ inputs.aws-environment }} Primary AWS Credentials
        uses: aws-actions/configure-aws-credentials@v4
        with:
          role-to-assume: arn:aws:iam::${{ inputs.aws-account }}:role/${{ secrets.AWS_CI_BUILD_ROLE }}
          aws-region: ${{ inputs.aws-primary-region }}

      - name: CDK Synth ${{ inputs.aws-environment }} ${{ inputs.aws-primary-region }}
        shell: bash
        env:
          AWS_ACCOUNT_ID: ${{ inputs.aws-account }}
          AWS_PRIMARY_REGION: ${{ inputs.aws-primary-region }}
          AWS_SECONDARY_REGION: ${{ inputs.aws-secondary-region }}
          AWS_ENVIRONMENT: ${{ inputs.aws-environment }}
        run: |
          pip install -q --upgrade pip
          cdk synth --output cdk.out/${{ inputs.aws-environment }}/${{ inputs.aws-primary-region }}
        working-directory: ${{ inputs.working-dir }}

      - name: Configure ${{ inputs.aws-environment }} Secondary AWS Credentials
        uses: aws-actions/configure-aws-credentials@v4
        with:
          role-to-assume: arn:aws:iam::${{ inputs.aws-account }}:role/${{ secrets.AWS_CI_BUILD_ROLE }}
          aws-region: ${{ inputs.aws-secondary-region }}

      - name: CDK Synth ${{ inputs.aws-environment }} ${{ inputs.aws-secondary-region }}
        shell: bash
        env:
          AWS_ACCOUNT_ID: ${{ inputs.aws-account }}
          AWS_PRIMARY_REGION: ${{ inputs.aws-primary-region }}
          AWS_SECONDARY_REGION: ${{ inputs.aws-secondary-region }}
          AWS_ENVIRONMENT: ${{ inputs.aws-environment }}
        run: |
          pip install -q --upgrade pip
          cdk synth --output cdk.out/${{ inputs.aws-environment }}/${{ inputs.aws-secondary-region }}
        working-directory: ${{ inputs.working-dir }}

      - name: Run CFN Lint
        uses: principalfinancialgroup-emu/common-actions-prinam-cdk-lint@v2
        with:
          working-dir: ${{ inputs.working-dir }}

      - name: Run CFN NAG
        uses: principalfinancialgroup-emu/common-actions-prinam-cdk-nag@v1
        with:
          working-dir: ${{ inputs.working-dir }}

      - name: Zip CDK Output
        shell: bash
        run: |
          zip -r cdk-${{ inputs.aws-environment }}.zip ./cdk.out/${{ inputs.aws-environment }}
        working-directory: ${{ inputs.working-dir }}

      - name: Archive CDK Output
        uses: actions/upload-artifact@v4
        with:
          name: cdk-${{ inputs.aws-environment }}-synth-output
          path: ${{ inputs.working-dir }}/cdk-${{ inputs.aws-environment }}.zip
Editor is loading...
Leave a Comment