Skip to content

Commit feb18ae

Browse files
committed
internals: add vercel alias step for alpha deployments
1 parent a5aaddb commit feb18ae

3 files changed

Lines changed: 69 additions & 35 deletions

File tree

.github/workflows/deploy_oko_apps.yml

Lines changed: 24 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -129,4 +129,27 @@ jobs:
129129
run: vercel build --yes ${{ steps.deploy_env.outputs.vercel_build_flag }} --token=${{ secrets.VERCEL_TOKEN }}
130130

131131
- name: Deploy Project Artifacts to Vercel
132-
run: vercel deploy --prebuilt ${{ steps.deploy_env.outputs.vercel_deploy_flag }} --token=${{ secrets.VERCEL_TOKEN }}
132+
id: vercel_deploy
133+
run: |
134+
URL=$(vercel deploy --prebuilt ${{ steps.deploy_env.outputs.vercel_deploy_flag }} --token=${{ secrets.VERCEL_TOKEN }})
135+
echo "url=$URL" >> "$GITHUB_OUTPUT"
136+
137+
- name: Alias deployment
138+
if: contains(inputs.git_tag, '/alpha/')
139+
env:
140+
ALIAS_DEMO_WEB: ${{ secrets.VERCEL_ALIAS_DEMO_WEB_ALPHA }}
141+
ALIAS_CT_DASHBOARD: ${{ secrets.VERCEL_ALIAS_CT_DASHBOARD_ALPHA }}
142+
ALIAS_ADMIN_WEB: ${{ secrets.VERCEL_ALIAS_ADMIN_WEB_ALPHA }}
143+
ALIAS_USER_DASHBOARD: ${{ secrets.VERCEL_ALIAS_USER_DASHBOARD_ALPHA }}
144+
run: |
145+
case "${{ steps.deploy_env.outputs.vercel_app }}" in
146+
demo_web) ALIAS_DOMAIN="$ALIAS_DEMO_WEB" ;;
147+
ct_dashboard) ALIAS_DOMAIN="$ALIAS_CT_DASHBOARD" ;;
148+
admin_web) ALIAS_DOMAIN="$ALIAS_ADMIN_WEB" ;;
149+
user_dashboard) ALIAS_DOMAIN="$ALIAS_USER_DASHBOARD" ;;
150+
*) echo "No alias configured for this app"; exit 0 ;;
151+
esac
152+
if [ -n "$ALIAS_DOMAIN" ]; then
153+
vercel alias set "${{ steps.vercel_deploy.outputs.url }}" "$ALIAS_DOMAIN" \
154+
--scope=keplrwallet --token=${{ secrets.VERCEL_TOKEN }}
155+
fi

.github/workflows/deploy_oko_attached.yml

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -114,4 +114,14 @@ jobs:
114114
run: vercel build --yes ${{ steps.deploy_env.outputs.vercel_build_flag }} --token=${{ secrets.VERCEL_TOKEN }}
115115

116116
- name: Deploy Project Artifacts to Vercel
117-
run: vercel deploy --prebuilt ${{ steps.deploy_env.outputs.vercel_deploy_flag }} --token=${{ secrets.VERCEL_TOKEN }}
117+
id: vercel_deploy
118+
run: |
119+
URL=$(vercel deploy --prebuilt ${{ steps.deploy_env.outputs.vercel_deploy_flag }} --token=${{ secrets.VERCEL_TOKEN }})
120+
echo "url=$URL" >> "$GITHUB_OUTPUT"
121+
122+
- name: Alias deployment
123+
if: contains(inputs.git_tag, '/alpha/')
124+
run: |
125+
vercel alias set "${{ steps.vercel_deploy.outputs.url }}" \
126+
"${{ secrets.VERCEL_ALIAS_ATTACHED_ALPHA }}" \
127+
--scope=keplrwallet --token=${{ secrets.VERCEL_TOKEN }}

internals/ci/src/cmds/deploy.ts

Lines changed: 34 additions & 33 deletions
Original file line numberDiff line numberDiff line change
@@ -8,34 +8,18 @@ import { paths } from "@oko-wallet-ci/paths";
88

99
const VERCEL_SCOPE = "keplrwallet";
1010

11-
const APP_CONFIGS = {
12-
"oko-demo-web": {
13-
path: paths.demo_web,
14-
},
15-
"oko-attached": {
16-
path: paths.oko_attached,
17-
},
18-
"oko-customer-dashboard": {
19-
path: paths.ct_dashboard_web,
20-
},
21-
"oko-docs-web": {
22-
path: path.join(paths.root, "apps/docs_web"),
23-
},
24-
"oko-admin-web": {
25-
path: paths.oko_admin_web,
26-
},
27-
"oko-user-dashboard": {
28-
path: path.join(paths.root, "apps/user_dashboard"),
29-
},
30-
"oko-attached-mobile-host-web": {
31-
path: paths.attached_mobile_host_web,
32-
},
33-
"oko-sandbox-evm": {
34-
path: path.join(paths.root, "sandbox/sandbox_evm"),
35-
},
36-
"oko-sandbox-sol": {
37-
path: path.join(paths.root, "sandbox/sandbox_sol"),
38-
},
11+
type DeploymentEnv = "alpha" | "develop" | "prod";
12+
13+
const APP_CONFIGS: Record<string, { path: string }> = {
14+
"oko-demo-web": { path: paths.demo_web },
15+
"oko-attached": { path: paths.oko_attached },
16+
"oko-customer-dashboard": { path: paths.ct_dashboard_web },
17+
"oko-docs-web": { path: path.join(paths.root, "apps/docs_web") },
18+
"oko-admin-web": { path: paths.oko_admin_web },
19+
"oko-user-dashboard": { path: path.join(paths.root, "apps/user_dashboard") },
20+
"oko-attached-mobile-host-web": { path: paths.attached_mobile_host_web },
21+
"oko-sandbox-evm": { path: path.join(paths.root, "sandbox/sandbox_evm") },
22+
"oko-sandbox-sol": { path: path.join(paths.root, "sandbox/sandbox_sol") },
3923
};
4024

4125
function listDeployableApps(): void {
@@ -45,10 +29,8 @@ function listDeployableApps(): void {
4529
});
4630
}
4731

48-
type DeploymentEnv = "alpha" | "develop" | "prod";
49-
5032
interface DeployOptions {
51-
app?: keyof typeof APP_CONFIGS;
33+
app?: string;
5234
env?: DeploymentEnv;
5335
}
5436

@@ -132,8 +114,27 @@ export async function deploy(options: DeployOptions) {
132114

133115
const deployRet = spawnSync("vercel", deployArgs, {
134116
cwd: paths.root,
135-
stdio: "inherit",
117+
stdio: ["inherit", "pipe", "inherit"],
118+
encoding: "utf8",
136119
});
137120
expectSuccess(deployRet, "Vercel deployment failed");
138-
console.log(chalk.bold.green("\n✓ Deployment completed successfully!"));
121+
const deploymentUrl = deployRet.stdout.trim();
122+
console.log(chalk.green(`✓ Deployed: ${deploymentUrl}\n`));
123+
console.log(chalk.bold.green("✓ Deployment completed successfully!"));
124+
125+
// Step 4: Alias (if VERCEL_ALIAS_DOMAIN env var is set)
126+
const aliasDomain = process.env.VERCEL_ALIAS_DOMAIN;
127+
if (aliasDomain) {
128+
console.log(chalk.blue("\nAliasing"), `${deploymentUrl}${aliasDomain}`);
129+
const aliasRet = spawnSync(
130+
"vercel",
131+
["alias", "set", deploymentUrl, aliasDomain, `--scope=${VERCEL_SCOPE}`],
132+
{
133+
cwd: paths.root,
134+
stdio: "inherit",
135+
},
136+
);
137+
expectSuccess(aliasRet, "Vercel alias failed");
138+
console.log(chalk.bold.green(`✓ Aliased to ${aliasDomain}`));
139+
}
139140
}

0 commit comments

Comments
 (0)