-
Notifications
You must be signed in to change notification settings - Fork 1
131 lines (109 loc) · 3.52 KB
/
deploy-azstorage.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
name: Publish Website
on:
push:
branches: [ main ]
pull_request:
branches: [ main ]
env:
STAGING_DEPLOYMENT_CLIENT_ID: e0d46426-bd93-4bb2-9b5a-cabb0af9a509
STAGING_STORAGE_CONTAINER: "$web"
STAGING_STORAGE_ACCOUNT: "sierrasoftworksrexbeta"
STAGING_CDN_RESOURCEGROUP: app-rex
STAGING_HEALTHCHECK: "https://rex-staging.sierrasoftworks.com/"
LIVE_DEPLOYMENT_CLIENT_ID: 25c19850-5c4e-4b6e-9257-a6e62b31e2e7
LIVE_STORAGE_CONTAINER: "$web"
LIVE_STORAGE_ACCOUNT: "sierrasoftworksrex"
LIVE_CDN_RESOURCEGROUP: app-rex
LIVE_HEALTHCHECK: "https://rex.sierrasoftworks.com/"
permissions:
id-token: write
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4.0.0
with:
submodules: true
- name: Install Node.js
uses: actions/setup-node@v3.8.1
- run: npm install
- run: npm run build --if-present
- name: Upload Artifact for Website
uses: actions/upload-artifact@v3
with:
# Artifact name
name: site
# A file, directory or wildcard pattern that describes what to upload
path: ./src
deploy-staging:
runs-on: ubuntu-latest
if: github.actor != 'dependabot[bot]'
needs: [build]
environment:
name: Staging
url: ${{ env.STAGING_HEALTHCHECK }}
steps:
- name: Download Artifacts for Website
uses: actions/download-artifact@v3
with:
name: site
path: ./out
- name: Login to Azure
uses: azure/login@v1
with:
subscription-id: "108b3ddb-53fb-4344-80b2-d6c151912be6"
tenant-id: "a26571f1-22b3-4756-ac7b-39ca684fab48"
client-id: ${{ env.STAGING_DEPLOYMENT_CLIENT_ID }}
- name: Copy Artifacts to Storage
uses: azure/CLI@v1
with:
inlineScript: |
echo "Uploading Site Contents"
az storage blob sync --container '${{ env.STAGING_STORAGE_CONTAINER }}' --account-name ${{ env.STAGING_STORAGE_ACCOUNT }} --source ./out
healthcheck-staging:
needs: deploy-staging
runs-on: ubuntu-20.04
steps:
- name: Probe
uses: Jtalk/url-health-check-action@v3.2
with:
url: ${{ env.STAGING_HEALTHCHECK }}
max-attempts: 5
retry-delay: 10s
follow-redirect: true
deploy-live:
runs-on: ubuntu-latest
needs: healthcheck-staging
if: github.event_name == 'push'
environment:
name: Production
url: ${{ env.LIVE_HEALTHCHECK }}
steps:
- name: Download Artifacts for Website
uses: actions/download-artifact@v3
with:
name: site
path: ./out
- name: Login to Azure
uses: azure/login@v1
with:
subscription-id: "108b3ddb-53fb-4344-80b2-d6c151912be6"
tenant-id: "a26571f1-22b3-4756-ac7b-39ca684fab48"
client-id: ${{ env.LIVE_DEPLOYMENT_CLIENT_ID }}
- name: Copy Artifacts to Storage
uses: azure/CLI@v1
with:
inlineScript: |
echo "Uploading Site Contents"
az storage blob sync --container '${{ env.LIVE_STORAGE_CONTAINER }}' --account-name ${{ env.LIVE_STORAGE_ACCOUNT }} --source ./out
healthcheck-live:
needs: deploy-live
runs-on: ubuntu-20.04
steps:
- name: Probe
uses: Jtalk/url-health-check-action@v3.2
with:
url: ${{ env.LIVE_HEALTHCHECK }}
max-attempts: 5
retry-delay: 10s
follow-redirect: true