-
Notifications
You must be signed in to change notification settings - Fork 0
164 lines (163 loc) · 4.88 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
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
name: Deploy all resources to DEV and PROD
run-name: DEV/PROD deploy - @${{ github.actor }}
on:
workflow_dispatch:
push:
branches:
- main
jobs:
test-unit:
runs-on: ubuntu-latest
name: Run Unit Tests
steps:
- uses: actions/checkout@v3
- name: Set up Python 3.11 for testing
uses: actions/setup-python@v5
with:
python-version: 3.11
- name: Setup Node LTS
uses: actions/setup-node@v4
with:
node-version: 18
- name: Run unit testing
run: make test_unit
deploy-aws-dev:
runs-on: ubuntu-latest
needs:
- test-unit
concurrency:
group: resume-book-aws-dev
cancel-in-progress: false
environment: "AWS DEV"
name: Deploy to AWS DEV
steps:
- uses: actions/checkout@v3
- uses: aws-actions/setup-sam@v2
with:
use-installer: true
- uses: aws-actions/configure-aws-credentials@v2
with:
aws-access-key-id: ${{ secrets.AWS_ACCESS_KEY_ID }}
aws-secret-access-key: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
aws-region: us-east-1
- run: make deploy_dev
deploy-cf-pages-dev:
runs-on: ubuntu-latest
needs:
- test-unit
concurrency:
group: resume-book-cf-pages-dev
cancel-in-progress: false
permissions:
contents: read
deployments: write
name: Deploy to Cloudflare Pages DEV
environment: "Cloudflare Pages - Dev"
steps:
- name: Checkout
uses: actions/checkout@v3
- name: Setup Node LTS
uses: actions/setup-node@v4
with:
node-version: 18
- name: Build
run: cd clientv2 && corepack enable && yarn && yarn run build
env:
VITE_AAD_CLIENT_ID: 251efa82-f589-42e1-9ebb-e214a4f40a0f
VITE_API_URL: https://resumes.aws.qa.acmuiuc.org/api/v1
VITE_KINDE_CLIENT_ID: 9dfcd7977da347f3ab55fbb909a4d5cf
VITE_RUN_ENVIRONMENT: dev
- name: Publish
uses: cloudflare/pages-action@v1
with:
apiToken: ${{ secrets.CLOUDFLARE_API_TOKEN }}
accountId: ${{ secrets.CLOUDFLARE_ACCOUNT_ID }}
projectName: resume-book-dev
directory: clientv2/dist/
gitHubToken: ${{ secrets.GITHUB_TOKEN }}
test-dev:
runs-on: ubuntu-latest
needs:
- deploy-aws-dev
- deploy-cf-pages-dev
name: Perform live testing
steps:
- uses: actions/checkout@v3
- name: Set up Python 3.11 for testing
uses: actions/setup-python@v5
with:
python-version: 3.11
- name: Setup Node LTS
uses: actions/setup-node@v4
with:
node-version: 18
- name: Run integration testing
run: make test_live_integration
env:
RB_JWT_SECRET: ${{ secrets.RB_JWT_SECRET }}
deploy-aws-prod:
runs-on: ubuntu-latest
name: Deploy to AWS PROD
concurrency:
group: resume-book-aws-prod
cancel-in-progress: false
needs:
- test-dev
- deploy-aws-dev
environment: "AWS PROD"
steps:
- uses: actions/checkout@v3
- uses: aws-actions/setup-sam@v2
with:
use-installer: true
- uses: aws-actions/configure-aws-credentials@v2
with:
aws-access-key-id: ${{ secrets.AWS_ACCESS_KEY_ID }}
aws-secret-access-key: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
aws-region: us-east-1
- run: make deploy_prod
deploy-cf-pages-prod:
runs-on: ubuntu-latest
needs:
- test-dev
permissions:
contents: read
deployments: write
concurrency:
group: resume-book-cf-pages-prod
cancel-in-progress: false
name: Deploy to Cloudflare Pages Prod
environment: "Cloudflare Pages - Prod"
steps:
- name: Checkout
uses: actions/checkout@v3
- name: Setup Node LTS
uses: actions/setup-node@v4
with:
node-version: 18
- name: Build
run: cd clientv2 && corepack enable && yarn && yarn run build
env:
VITE_AAD_CLIENT_ID: 5178a6b1-f46d-40a2-b550-1389b9316446
VITE_API_URL: https://resumes.aws.acmuiuc.org/api/v1
VITE_KINDE_CLIENT_ID: fdacad7aea554755844105f5606da0f6
VITE_RUN_ENVIRONMENT: prod
- name: Publish
uses: cloudflare/pages-action@v1
with:
apiToken: ${{ secrets.CLOUDFLARE_API_TOKEN }}
accountId: ${{ secrets.CLOUDFLARE_ACCOUNT_ID }}
projectName: resume-book-prod
directory: clientv2/dist/
gitHubToken: ${{ secrets.GITHUB_TOKEN }}
health-check-prod:
runs-on: ubuntu-latest
name: Confirm services healthy
needs:
- deploy-aws-prod
- deploy-cf-pages-prod
steps:
- name: Call the API healthz endpoint
run: curl -f https://resumes.aws.acmuiuc.org/api/v1/healthz
- name: Call the base UI endpoint
run: curl -f https://resumes.acm.illinois.edu