|
13 | 13 | ci: |
14 | 14 | runs-on: ubuntu-latest |
15 | 15 | env: |
16 | | - WORKING_DIR: infrastructure/ |
17 | | - ARM_CLIENT_ID: ${{secrets.TF_ARM_CLIENT_ID}} |
18 | | - ARM_CLIENT_SECRET: ${{secrets.TF_ARM_CLIENT_SECRET}} |
19 | | - ARM_SUBSCRIPTION_ID: ${{secrets.TF_ARM_SUBSCRIPTION_ID}} |
20 | | - ARM_TENANT_ID: ${{secrets.TF_ARM_TENANT_ID}} |
21 | 16 | AWS_ACCESS_KEY_ID: ${{secrets.AWS_ACCESS_KEY_ID}} |
22 | 17 | AWS_SECRET_ACCESS_KEY: ${{secrets.AWS_SECRET_ACCESS_KEY}} |
23 | 18 |
|
|
27 | 22 | - name: Checkout |
28 | 23 | uses: actions/checkout@v3 |
29 | 24 |
|
30 | | - - name: Authenticate with the TF modules repository |
31 | | - uses: webfactory/[email protected] |
32 | | - with: |
33 | | - ssh-private-key: ${{ secrets.INFRA_TERRAFORM_MODULES_SSH_PRIV_KEY }} |
34 | | - |
35 | 25 | - name: build docker |
36 | 26 | run: make build |
37 | 27 |
|
|
43 | 33 | env: |
44 | 34 | CODECOV_TOKEN: ${{ secrets.CODECOV_TOKEN }} |
45 | 35 | run: bash <(curl -s https://codecov.io/bash) |
46 | | - |
47 | | - - name: Setup terraform |
48 | | - uses: hashicorp/setup-terraform@v1 |
49 | | - with: |
50 | | - terraform_version: 1.1.9 |
51 | | - |
52 | | - - name: 'Terraform Init' |
53 | | - id: init |
54 | | - working-directory: ./${{ env.WORKING_DIR }} |
55 | | - run: terraform init |
56 | | - |
57 | | - - name: 'Terraform validate' |
58 | | - id: validate |
59 | | - working-directory: ./${{ env.WORKING_DIR }} |
60 | | - run: terraform validate |
61 | | - |
62 | | - - name: Terraform Plan Stage |
63 | | - id: plan-stage |
64 | | - run: terraform plan -var-file=${{ env.TF_WORKSPACE }}.tfvars -var image_tag=latest -no-color |
65 | | - continue-on-error: true |
66 | | - working-directory: ./${{ env.WORKING_DIR }} |
67 | | - env: |
68 | | - TF_WORKSPACE: stage |
69 | | - |
70 | | - - name: Terraform Plan Prod |
71 | | - id: plan-prod |
72 | | - run: terraform plan -var-file=${{ env.TF_WORKSPACE }}.tfvars -var image_tag=latest -no-color |
73 | | - continue-on-error: true |
74 | | - working-directory: ./${{ env.WORKING_DIR }} |
75 | | - env: |
76 | | - TF_WORKSPACE: prod |
77 | | - |
78 | | - - name: Update Pull Request with Stage Plan |
79 | | - |
80 | | - if: github.event_name == 'pull_request' |
81 | | - env: |
82 | | - PLAN: "terraform\n${{ steps.plan-stage.outputs.stdout }}" |
83 | | - TF_WORKSPACE: stage |
84 | | - with: |
85 | | - github-token: ${{ secrets.GITHUB_TOKEN }} |
86 | | - script: | |
87 | | - const output = `#### [${{ env.WORKING_DIR }}][${{ env.TF_WORKSPACE }}] Terraform Plan 📖 \`${{ steps.plan-stage.outcome }}\` |
88 | | - <details><summary>Show Plan</summary> |
89 | | - \`\`\`\n |
90 | | - ${process.env.PLAN} |
91 | | - \`\`\` |
92 | | - </details> |
93 | | - *Pusher: @${{ github.actor }}, Action: \`${{ github.event_name }}\`*`; |
94 | | - github.issues.createComment({ |
95 | | - issue_number: context.issue.number, |
96 | | - owner: context.repo.owner, |
97 | | - repo: context.repo.repo, |
98 | | - body: output |
99 | | - }) |
100 | | -
|
101 | | - - name: Update Pull Request with Prod Plan |
102 | | - |
103 | | - if: github.event_name == 'pull_request' |
104 | | - env: |
105 | | - PLAN: "terraform\n${{ steps.plan-prod.outputs.stdout }}" |
106 | | - TF_WORKSPACE: prod |
107 | | - with: |
108 | | - github-token: ${{ secrets.GITHUB_TOKEN }} |
109 | | - script: | |
110 | | - const output = `#### [${{ env.WORKING_DIR }}][${{ env.TF_WORKSPACE }}] Terraform Plan 📖 \`${{ steps.plan-prod.outcome }}\` |
111 | | - <details><summary>Show Plan</summary> |
112 | | - \`\`\`\n |
113 | | - ${process.env.PLAN} |
114 | | - \`\`\` |
115 | | - </details> |
116 | | - *Pusher: @${{ github.actor }}, Action: \`${{ github.event_name }}\`*`; |
117 | | - github.issues.createComment({ |
118 | | - issue_number: context.issue.number, |
119 | | - owner: context.repo.owner, |
120 | | - repo: context.repo.repo, |
121 | | - body: output |
122 | | - }) |
123 | | - - name: Terraform Plan Stage Status |
124 | | - if: steps.plan-stage.outcome == 'failure' |
125 | | - run: exit 1 |
126 | | - |
127 | | - - name: Terraform Plan Prod Status |
128 | | - if: steps.plan-prod.outcome == 'failure' |
129 | | - run: exit 1 |
0 commit comments