forked from blockchain-etl/blockchain-etl-dataflow
-
Notifications
You must be signed in to change notification settings - Fork 0
122 lines (99 loc) · 3.41 KB
/
deploy.yml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
on:
push:
branches:
- master
pull_request:
name: Deploy blockchain etl datafow into GCP
jobs:
terraform:
name: "Run Terraform"
runs-on: ubuntu-latest
environment: ${{ github.head_ref }}
permissions: write-all
steps:
- uses: hashicorp/setup-terraform@v1
with:
terraform_wrapper: false
- name: Checkout
uses: actions/checkout@v2
- id: 'auth-server'
name: 'Authenticate to Google Cloud'
if: ${{ env.ACT == '' }}
uses: 'google-github-actions/auth@v1'
with:
token_format: 'access_token'
workload_identity_provider: 'projects/953944850513/locations/global/workloadIdentityPools/github/providers/github-provider'
service_account: '[email protected]'
- name: Set env vars (dev)
if: endsWith(github.ref, '/develop')
run: |
echo "ENV=dev" >> $GITHUB_ENV
- name: Set env vars (prod)
if: endsWith(github.ref, '/master')
run: |
echo "ENV=prod" >> $GITHUB_ENV
- name: 'Set up Cloud SDK'
uses: 'google-github-actions/setup-gcloud@v1'
with:
version: '>= 363.0.0'
- name: Login to Google Artifact Repository
id: login-gar
run: |
gcloud auth configure-docker us-docker.pkg.dev
- name: Build JAR
run: mvn -e -Pdataflow-runner package -DskipTests
- name: Build, tag, and push image to Google Artifact Repository
id: build-image-ecr
run: |
make gcp.ar.push
- name: Terraform Init
working-directory: ./terraform
id: init
run: terraform init
- name: Terraform Workspace Selection
working-directory: ./terraform
id: select
run: terraform workspace select prod
- name: Terraform Validate
working-directory: ./terraform
id: validate
run: terraform validate -no-color
- name: Terraform Plan
working-directory: ./terraform
id: plan
if: github.event_name == 'pull_request'
run: |
out="$(terraform plan -no-color)"
out="${out//'%'/'%25'}"
out="${out//$'\n'/'%0A'}"
out="${out//$'\r'/'%0D'}"
echo "::set-output name=out::$out"
continue-on-error: true
- uses: actions/github-script@v6
if: github.event_name == 'pull_request'
env:
github-token: ${{ secrets.GITHUB_TOKEN }}
with:
script: |
const output = `#### Terraform Initialization ⚙️\`${{ steps.init.outcome }}\`
#### Terraform Validation 🤖\`${{ steps.validate.outcome }}\`
#### Terraform Plan 📖\`${{ steps.plan.outcome }}\`
<details><summary>Show Plan</summary>
\`\`\`terraform\n
${{ steps.plan.outputs.out }}
\n\`\`\`
</details>
*Pusher: @${{ github.actor }}, Action: \`${{ github.event_name }}\`, Workflow: \`${{ github.workflow }}\`*`;
github.rest.issues.createComment({
issue_number: context.issue.number,
owner: context.repo.owner,
repo: context.repo.repo,
body: output
})
- name: Terraform Plan Status
if: steps.plan.outcome == 'failure'
run: exit 1
- name: Terraform Apply
working-directory: ./terraform
if: github.ref == 'refs/heads/master' && github.event_name == 'push'
run: terraform apply -auto-approve -input=false