-
Notifications
You must be signed in to change notification settings - Fork 0
132 lines (129 loc) · 4.31 KB
/
deploy.yaml
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
name: Build and deploy
on:
push:
branches:
- '**'
env:
app_name: bidrag_behandling_ui
bucket_name_dev: bidrag-ui-static-files-dev
bucket_name_prod: bidrag-ui-static-files-prod
IS_FEATURE: ${{ github.ref != 'refs/heads/release' && github.ref != 'refs/heads/main'}}
IS_DEV: ${{ github.ref == 'refs/heads/main' }}
NPM_TOKEN: ${{ secrets.READER_TOKEN }}
jobs:
build:
name: Build
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/setup-node@v4
with:
node-version: 20.x
- uses: actions/cache@v4
id: yarn-cache
with:
path: .yarn/cache
key: ${{ runner.os }}-yarn-${{ hashFiles('**/yarn.lock') }}
restore-keys: |
${{ runner.os }}-yarn-
- name: Set environment variables for frontend build
# Use environment variables from feature just for the build to go green. Using actual env variables in deploy step
run: cat env/.env.dev >> $GITHUB_ENV
- name: Install yarn dependencies
run: yarn --immutable
- name: Check lint
run: yarn lint
- name: Run tests and build
run: yarn test && yarn build
deploy-to-feature:
name: Deploy to feature
runs-on: ubuntu-latest
needs: build
if: github.ref != 'refs/heads/main'
steps:
- uses: actions/checkout@v4
- uses: actions/setup-node@v4
with:
node-version: 20.x
- uses: actions/cache@v4
id: yarn-cache
with:
path: .yarn/cache
key: ${{ runner.os }}-yarn-${{ hashFiles('**/yarn.lock') }}
restore-keys: |
${{ runner.os }}-yarn-
- name: Install yarn dependencies
run: yarn --immutable
- name: Set environment variables for build
run: cat env/.env.dev >> $GITHUB_ENV
- name: Build app
run: yarn build
- name: Login GCP dev
uses: google-github-actions/auth@v1
with:
credentials_json: ${{ secrets.GCP_SERVICEUSER_KEY_DEV }}
- name: Set up Cloud SDK
uses: google-github-actions/setup-gcloud@v1
- name: Upload static files to feature GCP bucket
run: gsutil -m rsync -R -d dist gs://${{env.bucket_name_dev}}/${{env.app_name}}/feature/static
deploy-to-main:
name: Deploy to main
runs-on: ubuntu-latest
needs: build
steps:
- uses: actions/checkout@v4
- uses: actions/setup-node@v4
with:
node-version: 20.x
- uses: actions/cache@v4
id: yarn-cache
with:
path: .yarn/cache
key: ${{ runner.os }}-yarn-${{ hashFiles('**/yarn.lock') }}
restore-keys: |
${{ runner.os }}-yarn-
- name: Install yarn dependencies
run: yarn --immutable
- name: Set environment variables for build
run: cat env/.env.main >> $GITHUB_ENV
- name: Build app
run: yarn build
- name: Login GCP dev
uses: google-github-actions/auth@v1
with:
credentials_json: ${{ secrets.GCP_SERVICEUSER_KEY_DEV }}
- name: Set up Cloud SDK
uses: google-github-actions/setup-gcloud@v1
- name: Upload static files to dev GCP bucket
run: gsutil -m rsync -R -d dist gs://${{env.bucket_name_dev}}/${{env.app_name}}/main/static
deploy-to-prod:
name: Deploy to prod
runs-on: ubuntu-latest
needs: build
if: github.ref == 'refs/heads/main'
steps:
- uses: actions/checkout@v4
- uses: actions/setup-node@v4
with:
node-version: 20.x
- uses: actions/cache@v4
id: yarn-cache
with:
path: .yarn/cache
key: ${{ runner.os }}-yarn-${{ hashFiles('**/yarn.lock') }}
restore-keys: |
${{ runner.os }}-yarn-
- name: Install yarn dependencies
run: yarn --immutable
- name: Set environment variables for build
run: cat env/.env.prod >> $GITHUB_ENV
- name: Build app
run: yarn build
- name: Login GCP dev
uses: google-github-actions/auth@v1
with:
credentials_json: ${{ secrets.GCP_SERVICEUSER_KEY_PROD }}
- name: Set up Cloud SDK
uses: google-github-actions/setup-gcloud@v1
- name: Upload static files to prod GCP bucket
run: gsutil -m rsync -R -d dist gs://${{env.bucket_name_prod}}/${{env.app_name}}/static