Skip to content

feat: update release workflow #61

feat: update release workflow

feat: update release workflow #61

Workflow file for this run

name: Prerelease
on:
workflow_dispatch:
pull_request:
types:
- opened
- labeled
- synchronize
permissions:
pull-requests: write
issues: write
jobs:
deploy:
runs-on: ubuntu-latest
strategy:
matrix:
include:
- locale: en
secret_project_id: VERCEL_PROJECT_EN_ID
- locale: zh-hans
secret_project_id: VERCEL_PROJECT_ZH_HANS_ID
- locale: zh-hant
secret_project_id: VERCEL_PROJECT_ZH_HANT_ID
name: Deploy ${{ matrix.locale }}
outputs:
preview_url: ${{ steps.set_outputs.outputs.preview_url }}
inspect_url: ${{ steps.set_outputs.outputs.inspect_url }}
label: ${{ steps.set_outputs.outputs.label }}
steps:
# Calculate if this matrix job should run based on PR labels
#
# This job will deploy if:
# - The event is NOT a pull_request (e.g., workflow_dispatch)
# - OR the PR has the label 'prerelease'
# - OR the PR has the label 'prerelease:<locale>' matching the current matrix locale
- name: Calculate should_deploy
id: should_deploy
shell: bash
run: |
LABELS_JSON='${{ toJson(github.event.pull_request.labels.*.name) }}'
echo "LABELS_JSON: $LABELS_JSON"
SHOULD_DEPLOY=false
if [[ "${{ github.event_name }}" != "pull_request" ]]; then
SHOULD_DEPLOY=true
elif echo "$LABELS_JSON" | grep -E '"prerelease"' > /dev/null; then
SHOULD_DEPLOY=true
elif echo "$LABELS_JSON" | grep -E '"prerelease:'"${{ matrix.locale }}"'"' > /dev/null; then
SHOULD_DEPLOY=true
fi
echo "should_deploy=$SHOULD_DEPLOY" >> $GITHUB_OUTPUT
- name: Checkout code
if: steps.should_deploy.outputs.should_deploy == 'true'
uses: actions/checkout@v3
with:
fetch-depth: 1
ref: ${{ github.head_ref }}
- name: Log checked out commit
if: steps.should_deploy.outputs.should_deploy == 'true'
run: git log -1
- name: Setup Tools
if: steps.should_deploy.outputs.should_deploy == 'true'
uses: ./.github/actions/setup
- name: Deploy to Vercel (${{ matrix.locale }})
if: steps.should_deploy.outputs.should_deploy == 'true'
id: deploy
uses: ./.github/actions/vercel-deploy
with:
environment: preview
vercel_project_id: ${{ secrets[matrix.secret_project_id] }}
vercel_org_id: ${{ secrets.VERCEL_ORG_ID }}
vercel_token: ${{ secrets.VERCEL_TOKEN }}
- name: Set deploy outputs
if: steps.should_deploy.outputs.should_deploy == 'true'
id: set_outputs
run: |
echo "preview_url=${{ steps.deploy.outputs.prod_url }}" >> $GITHUB_OUTPUT
echo "inspect_url=${{ steps.deploy.outputs.inspect_url }}" >> $GITHUB_OUTPUT
echo "label=${{ matrix.locale }}" >> $GITHUB_OUTPUT
comment-vercel-previews:
needs: deploy
name: Comment Vercel Previews
runs-on: ubuntu-latest
if: always()
steps:
- name: Checkout repo
uses: actions/checkout@v3
- name: Aggregate deploy results
id: aggregate
run: |
echo '${{ toJson(needs.deploy) }}' > deploy-results.json
- name: Comment PR with all Vercel Preview Links
uses: ./.github/actions/comment-vercel-preview
with:
deploy_results_path: deploy-results.json