-
Notifications
You must be signed in to change notification settings - Fork 5
178 lines (149 loc) · 5 KB
/
test.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
165
166
167
168
169
170
171
172
173
174
175
176
177
178
name: test
on:
pull_request:
branches:
- main
types:
- opened
- reopened
- ready_for_review
- synchronize
jobs:
unit-tests:
name: Unit Tests
runs-on: ubuntu-latest
environment: dev
permissions:
id-token: write
contents: read
actions: read
steps:
- name: ⬇️ Checkout Code
uses: actions/checkout@v4
- name: ⚒️ Setup Node
uses: actions/setup-node@v4
with:
node-version: 20
- name: 🔑 Configure AWS credentials
uses: aws-actions/configure-aws-credentials@v4
with:
role-to-assume: ${{ secrets.AWS_SERVICE_ROLE_ARN }}
aws-region: us-east-1
- name: 👀 Env
run: |
echo "Event name: ${{ github.event_name }}"
echo "Git ref: ${{ github.ref }}"
echo "GH actor: ${{ github.actor }}"
echo "SHA: ${{ github.sha }}"
VER=`node --version`; echo "Node ver: $VER"
VER=`npm --version`; echo "npm ver: $VER"
- name: 📥 Install Backend and Sources
uses: ./.github/actions/backend
- name: 🚧 Build AppSync
run: |
npm run build-appsync
working-directory: backend
- name: 🔭 Run CDK Unit Tests
run: npm run test
working-directory: backend
integration-tests:
name: Integration Tests
runs-on: ubuntu-latest
environment: dev
permissions:
id-token: write
contents: read
actions: read
steps:
- name: ⬇️ Checkout Code
uses: actions/checkout@v4
- name: ⚒️ Setup Node
uses: actions/setup-node@v4
with:
node-version: 20
- name: 👀 Env
run: |
echo "Event name: ${{ github.event_name }}"
echo "Git ref: ${{ github.ref }}"
echo "GH actor: ${{ github.actor }}"
echo "SHA: ${{ github.sha }}"
VER=`node --version`; echo "Node ver: $VER"
VER=`npm --version`; echo "npm ver: $VER"
# Should not need to deploy to run tests
# - name: 📥 Install CDK Dependencies
# run: npm install
# working-directory: infrastructure
- name: 📥 Install Frontend
uses: ./.github/actions/frontend
# TODO Once there are Cypress frontend tests
# - name: Run Cypress Frontend Tests
# run: npx cypress run --env username=${{ secrets.CYPRESS_USERNAME }},password=${{ secrets.CYPRESS_PASSWORD }}
# working-directory: frontend
deploy-dev:
name: Deploy Dev
runs-on: ubuntu-latest
environment: dev
needs: [unit-tests, integration-tests]
permissions:
actions: write
contents: read
id-token: write
steps:
- name: 🚫 Cancel Previous Runs
uses: styfle/[email protected]
- name: ⬇️ Checkout Code
uses: actions/checkout@v4
- name: ⚒️ Setup Node
uses: actions/setup-node@v4
with:
node-version: 20
- name: 🔑 Configure AWS credentials
uses: aws-actions/configure-aws-credentials@v4
with:
role-to-assume: ${{ secrets.AWS_SERVICE_ROLE_ARN }}
aws-region: us-east-1
- name: 👀 Env
run: |
echo "Event name: ${{ github.event_name }}"
echo "Git ref: ${{ github.ref }}"
echo "GH actor: ${{ github.actor }}"
echo "SHA: ${{ github.sha }}"
VER=`node --version`; echo "Node ver: $VER"
VER=`npm --version`; echo "npm ver: $VER"
- name: 📥 Install Backend and Sources
uses: ./.github/actions/backend
- name: 📥 Install Frontend
uses: ./.github/actions/frontend
- name: 🏗 Build Frontend
run: npm run build-frontend
working-directory: backend
env:
NEXT_PUBLIC_USER_POOL_ID: ${{ secrets.USER_POOL_ID }}
NEXT_PUBLIC_USER_POOL_CLIENT_ID: ${{ secrets.USER_POOL_CLIENT_ID }}
NEXT_PUBLIC_APPSYNC_API_ENDPOINT: ${{ secrets.APPSYNC_API_ENDPOINT }}
NEXT_PUBLIC_APPSYNC_REGION: ${{ secrets.REGION }}
- name: 🚧 Build AppSync
run: |
npm run build-appsync
working-directory: backend
- name: 🚧 Build Backend
run: |
find ./src/lambda -mindepth 2 -maxdepth 2 -type f -name 'package.json' |
while IFS= read -r file; do
echo "🚧 Building $file"
cd "$(dirname "$file")"
npm run build
cd - >/dev/null
done
working-directory: backend
- name: 🚀 Deploy Backend
run: |
echo "🚀 Deploying backend dev"
npm run cdk -- deploy --all -c stage=backend -c env=dev --require-approval=never
working-directory: backend
env:
DLQ_NOTIFICATIONS: ${{ secrets.DLQ_NOTIFICATIONS }}
# TODO Once SST setup to deploy frontend
# - name: 🚀 Deploy Frontend
# run: npx sst deploy --stage dev
# working-directory: frontend