-
Notifications
You must be signed in to change notification settings - Fork 5
170 lines (140 loc) · 4.91 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
name: test
on:
pull_request:
branches:
- main
types:
- opened
- reopened
- ready_for_review
- synchronize
jobs:
unit-tests:
name: Unit Tests
runs-on: ubuntu-latest
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"
- name: 📥 Install Backend and Sources
uses: ./.github/actions/backend
- name: 🚧 Build AppSync
run: |
npm run build-appsync
working-directory: infrastructure
- name: 🔭 Run CDK Unit Tests
run: npm run test
working-directory: infrastructure
integration-tests:
name: Integration Tests
runs-on: ubuntu-latest
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: 🗒️ Create Frontend .env
run: |
touch .env
echo NEXT_PUBLIC_USER_POOL_ID=${{ secrets.USER_POOL_ID }} >> .env
echo NEXT_PUBLIC_USER_POOL_CLIENT_ID=${{ secrets.USER_POOL_CLIENT_ID }} >> .env
echo NEXT_PUBLIC_APPSYNC_API_ENDPOINT=${{ secrets.APPSYNC_API_ENDPOINT }} >> .env
echo NEXT_PUBLIC_APPSYNC_REGION=${{ secrets.REGION }} >> .env
working-directory: frontend
- name: 🏗 Build Frontend
run: npm run build-frontend
working-directory: infrastructure
- name: 🗒️ Create Infrastructure .env
run: |
touch .env
echo DLQ_NOTIFICATIONS=${{ secrets.DLQ_NOTIFICATIONS }} >> .env
working-directory: infrastructure
- name: 🚧 Build AppSync
run: |
npm run build-appsync
working-directory: infrastructure
- name: 🚧 Build Backend
run: |
find ../backend -mindepth 3 -maxdepth 3 -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: infrastructure
- name: 🚀 Deploy Backend
run: |
echo "🚀 Deploying backend dev"
npm run cdk -- deploy --all -c stage=backend -c env=dev --require-approval=never
working-directory: infrastructure
# TODO Once SST setup to deploy frontend
# - name: 🚀 Deploy Frontend
# run: npx sst deploy --stage dev
# working-directory: frontend