Skip to content

Commit 2ad6456

Browse files
matthewvolkjamesqquick
authored andcommitted
chore(ci): pass channel-specific env vars to vercel deploy (#2834)
* chore(ci): pass channel-specific env vars to vercel deploy * chore(ci): harden deploy workflow security replace eval with bash arrays, add timeouts, improve secret handling * chore(ci): add b2b env vars to deploy workflow
1 parent 8ffb089 commit 2ad6456

1 file changed

Lines changed: 50 additions & 14 deletions

File tree

.github/workflows/deploy.yml

Lines changed: 50 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ on:
1111
- "@bigcommerce/catalyst-b2b-makeswift@latest"
1212
jobs:
1313
deploy-tag:
14-
name: Deploy `{{ github.ref_name }}` tag
14+
name: Deploy `${{ github.ref_name }}` tag
1515
runs-on: ubuntu-latest
1616
concurrency:
1717
group: ${{ github.workflow }}-${{ github.ref_name }}
@@ -21,25 +21,61 @@ jobs:
2121
- name: Install Vercel CLI
2222
run: npm install --global vercel@latest
2323

24-
- name: Parse Tag and Build Domain
25-
id: parse-tag
24+
- name: Configure catalyst-core deployment
25+
if: contains(github.ref_name, 'catalyst-core@')
2626
run: |
27-
TAG="${{ github.ref_name }}"
28-
PACKAGE_NAME=$(echo "$TAG" | sed -E 's/^@bigcommerce\/([^@]+)@.*$/\1/')
29-
case "$PACKAGE_NAME" in
30-
"catalyst-core") DOMAIN="catalyst-demo.site" ;;
31-
"catalyst-makeswift") DOMAIN="makeswift.catalyst-demo.site" ;;
32-
"catalyst-b2b-makeswift") DOMAIN="b2b-makeswift.catalyst-demo.site" ;;
33-
*) echo "Error: Unknown package name: $PACKAGE_NAME"; exit 1 ;;
34-
esac
35-
echo "domain=$DOMAIN" >> $GITHUB_OUTPUT
27+
echo "DOMAIN=catalyst-demo.site" >> $GITHUB_ENV
28+
echo "CHANNEL_ID=${{ vars.CORE_BIGCOMMERCE_CHANNEL_ID }}" >> $GITHUB_ENV
29+
echo "STOREFRONT_TOKEN=${{ secrets.CORE_BIGCOMMERCE_STOREFRONT_TOKEN }}" >> $GITHUB_ENV
30+
31+
- name: Configure catalyst-makeswift deployment
32+
if: contains(github.ref_name, 'catalyst-makeswift@')
33+
run: |
34+
echo "DOMAIN=makeswift.catalyst-demo.site" >> $GITHUB_ENV
35+
echo "CHANNEL_ID=${{ vars.MAKESWIFT_BIGCOMMERCE_CHANNEL_ID }}" >> $GITHUB_ENV
36+
echo "STOREFRONT_TOKEN=${{ secrets.MAKESWIFT_BIGCOMMERCE_STOREFRONT_TOKEN }}" >> $GITHUB_ENV
37+
echo "MAKESWIFT_KEY=${{ secrets.MAKESWIFT_SITE_API_KEY }}" >> $GITHUB_ENV
38+
39+
- name: Configure catalyst-b2b-makeswift deployment
40+
if: contains(github.ref_name, 'catalyst-b2b-makeswift@')
41+
run: |
42+
echo "DOMAIN=b2b-makeswift.catalyst-demo.site" >> $GITHUB_ENV
43+
echo "CHANNEL_ID=${{ vars.B2B_MAKESWIFT_BIGCOMMERCE_CHANNEL_ID }}" >> $GITHUB_ENV
44+
echo "STOREFRONT_TOKEN=${{ secrets.B2B_MAKESWIFT_BIGCOMMERCE_STOREFRONT_TOKEN }}" >> $GITHUB_ENV
45+
echo "MAKESWIFT_KEY=${{ secrets.B2B_MAKESWIFT_SITE_API_KEY }}" >> $GITHUB_ENV
46+
echo "B2B_API_HOST=${{ vars.B2B_API_HOST }}" >> $GITHUB_ENV
47+
echo "BIGCOMMERCE_ACCESS_TOKEN=${{ secrets.B2B_BIGCOMMERCE_ACCESS_TOKEN }}" >> $GITHUB_ENV
3648
3749
- name: Deploy to Vercel
3850
id: deploy
51+
timeout-minutes: 15
52+
env:
53+
VERCEL_TOKEN: ${{ secrets.VERCEL_TOKEN }}
3954
run: |
40-
DEPLOYMENT_URL=$(vercel deploy --token=${{ secrets.VERCEL_TOKEN }})
55+
DEPLOY_ARGS=(
56+
--token="$VERCEL_TOKEN"
57+
--env BIGCOMMERCE_CHANNEL_ID="$CHANNEL_ID"
58+
--env BIGCOMMERCE_STOREFRONT_TOKEN="$STOREFRONT_TOKEN"
59+
)
60+
61+
if [[ -n "$MAKESWIFT_KEY" ]]; then
62+
DEPLOY_ARGS+=(--env MAKESWIFT_SITE_API_KEY="$MAKESWIFT_KEY")
63+
fi
64+
65+
if [[ -n "$B2B_API_HOST" ]]; then
66+
DEPLOY_ARGS+=(--env B2B_API_HOST="$B2B_API_HOST")
67+
fi
68+
69+
if [[ -n "$BIGCOMMERCE_ACCESS_TOKEN" ]]; then
70+
DEPLOY_ARGS+=(--env BIGCOMMERCE_ACCESS_TOKEN="$BIGCOMMERCE_ACCESS_TOKEN")
71+
fi
72+
73+
DEPLOYMENT_URL=$(vercel deploy "${DEPLOY_ARGS[@]}")
4174
echo "deployment_url=$DEPLOYMENT_URL" >> $GITHUB_OUTPUT
4275
4376
- name: Set Vercel Domain Alias
77+
timeout-minutes: 5
78+
env:
79+
VERCEL_TOKEN: ${{ secrets.VERCEL_TOKEN }}
4480
run: |
45-
vercel alias ${{ steps.deploy.outputs.deployment_url }} ${{ steps.parse-tag.outputs.domain }} --token=${{ secrets.VERCEL_TOKEN }}
81+
vercel alias ${{ steps.deploy.outputs.deployment_url }} $DOMAIN --token="$VERCEL_TOKEN"

0 commit comments

Comments
 (0)