-
Notifications
You must be signed in to change notification settings - Fork 6
157 lines (138 loc) · 5.74 KB
/
Copy pathdeploy_oko_apps.yml
File metadata and controls
157 lines (138 loc) · 5.74 KB
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
name: Deploy Oko Apps
env:
VERCEL_ORG_ID: ${{ secrets.VERCEL_ORG_ID }}
VERCEL_PRJ_ID__OKO_DEMO_WEB: ${{ secrets.VERCEL_PRJ_ID__OKO_DEMO_WEB }}
VERCEL_PRJ_ID__CT_DASHBOARD: ${{ secrets.VERCEL_PRJ_ID__CT_DASHBOARD }}
VERCEL_PRJ_ID__USER_DASHBOARD: ${{ secrets.VERCEL_PRJ_ID__USER_DASHBOARD }}
VERCEL_PRJ_ID__ADMIN_WEB: ${{ secrets.VERCEL_PRJ_ID__ADMIN_WEB }}
VERCEL_PRJ_ID__DOCS_WEB: ${{ secrets.VERCEL_PRJ_ID__DOCS_WEB }}
VERCEL_PRJ_ID__ATTACHED_MOBILE_HOST_WEB: ${{ secrets.VERCEL_PRJ_ID__ATTACHED_MOBILE_HOST_WEB }}
on:
workflow_dispatch:
inputs:
git_tag:
description: >
"Git tag (format: <app>/alpha/v0.0.1, <app>/develop/v0.0.1, or <app>/release/v0.0.1).
Apps: demo_web, user_dashboard, ct_dashboard, admin_web, docs_web, attached_mobile_host_web"
required: true
type: string
jobs:
publish:
runs-on: ubuntu-22.04
timeout-minutes: 60
environment:
name: ${{ contains(inputs.git_tag, '/release/') && 'Production' || contains(inputs.git_tag, '/alpha/') && 'Alpha' || 'Develop' }}
steps:
- name: Checkout self repository
uses: actions/checkout@v4
with:
ref: ${{ inputs.git_tag }}
token: ${{ secrets.GH_PAT }}
- name: Enable Corepack
run: corepack enable
- name: Setup Node.js
uses: actions/setup-node@v4
with:
node-version: "22"
- name: Get Yarn cache directory
id: yarn-cache
run: echo "dir=$(yarn config get cacheFolder)" >> "$GITHUB_OUTPUT"
- name: Cache Yarn
uses: actions/cache@v4
with:
path: ${{ steps.yarn-cache.outputs.dir }}
key: yarn-${{ runner.os }}-${{ hashFiles('yarn.lock') }}
restore-keys: |
yarn-${{ runner.os }}-
- name: Check Node version
run: node -v
- name: Check git tag
run: node ./internals/github/dist/validate_git_tag.js
env:
GIT_TAG: "${{ inputs.git_tag }}"
- name: Determine deploy environment
id: deploy_env
run: node ./internals/github/dist/determine_deploy_env.js
env:
GIT_TAG: "${{ inputs.git_tag }}"
- name: Set Vercel Project Id
run: |
case "${{ steps.deploy_env.outputs.vercel_app }}" in
demo_web)
echo "VERCEL_PROJECT_ID=$VERCEL_PRJ_ID__OKO_DEMO_WEB" >> \
"$GITHUB_ENV"
;;
ct_dashboard)
echo "VERCEL_PROJECT_ID=$VERCEL_PRJ_ID__CT_DASHBOARD" >> \
"$GITHUB_ENV"
;;
user_dashboard)
echo "VERCEL_PROJECT_ID=$VERCEL_PRJ_ID__USER_DASHBOARD" >> \
"$GITHUB_ENV"
;;
admin_web)
echo "VERCEL_PROJECT_ID=$VERCEL_PRJ_ID__ADMIN_WEB" >> \
"$GITHUB_ENV"
;;
docs_web)
echo "VERCEL_PROJECT_ID=$VERCEL_PRJ_ID__DOCS_WEB" >> \
"$GITHUB_ENV"
;;
attached_mobile_host_web)
echo "VERCEL_PROJECT_ID=$VERCEL_PRJ_ID__ATTACHED_MOBILE_HOST_WEB" >> \
"$GITHUB_ENV"
;;
*)
echo "Unknown app: ${{ steps.deploy_env.outputs.vercel_app }}"
exit 1
;;
esac
- name: Yarn version
run: yarn -v
- name: Install dependencies
run: yarn install --immutable
- name: Build internal packages
run: yarn ci build_pkgs
- name: Build SDK packages
run: yarn ci build_sdk
- name: Install Vercel CLI
run: npm install -g vercel@latest
- name: Pull Vercel Environment Information
run: vercel pull --yes --environment=${{ steps.deploy_env.outputs.vercel_env }} --token=${{ secrets.VERCEL_TOKEN }}
- name: Verify environment variables
run: |
ENV_FILE=".vercel/.env.${{ steps.deploy_env.outputs.vercel_env }}.local"
if [ ! -f "$ENV_FILE" ]; then
echo "::error::Environment file not found: $ENV_FILE"
echo "vercel pull may have failed to fetch environment variables."
exit 1
fi
echo "Environment file found: $ENV_FILE"
- name: Build Project Artifacts
run: vercel build --yes ${{ steps.deploy_env.outputs.vercel_build_flag }} --token=${{ secrets.VERCEL_TOKEN }}
- name: Deploy Project Artifacts to Vercel
id: vercel_deploy
run: |
URL=$(vercel deploy --prebuilt ${{ steps.deploy_env.outputs.vercel_deploy_flag }} --token=${{ secrets.VERCEL_TOKEN }})
echo "url=$URL" >> "$GITHUB_OUTPUT"
- name: Alias deployment
if: contains(inputs.git_tag, '/alpha/')
env:
ALIAS_DEMO_WEB: ${{ secrets.VERCEL_ALIAS_DEMO_WEB_ALPHA }}
ALIAS_CT_DASHBOARD: ${{ secrets.VERCEL_ALIAS_CT_DASHBOARD_ALPHA }}
ALIAS_ADMIN_WEB: ${{ secrets.VERCEL_ALIAS_ADMIN_WEB_ALPHA }}
ALIAS_USER_DASHBOARD: ${{ secrets.VERCEL_ALIAS_USER_DASHBOARD_ALPHA }}
ALIAS_ATTACHED_MOBILE_HOST_WEB: ${{ secrets.VERCEL_ALIAS_ATTACHED_MOBILE_HOST_WEB_ALPHA }}
run: |
case "${{ steps.deploy_env.outputs.vercel_app }}" in
demo_web) ALIAS_DOMAIN="$ALIAS_DEMO_WEB" ;;
ct_dashboard) ALIAS_DOMAIN="$ALIAS_CT_DASHBOARD" ;;
admin_web) ALIAS_DOMAIN="$ALIAS_ADMIN_WEB" ;;
user_dashboard) ALIAS_DOMAIN="$ALIAS_USER_DASHBOARD" ;;
attached_mobile_host_web) ALIAS_DOMAIN="$ALIAS_ATTACHED_MOBILE_HOST_WEB" ;;
*) echo "No alias configured for this app"; exit 0 ;;
esac
if [ -n "$ALIAS_DOMAIN" ]; then
vercel alias set "${{ steps.vercel_deploy.outputs.url }}" "$ALIAS_DOMAIN" \
--scope=keplrwallet --token=${{ secrets.VERCEL_TOKEN }}
fi