Skip to content

Update translations #84

Update translations

Update translations #84

Workflow file for this run

name: Prerelease
on:
pull_request:
types:
- opened
- labeled
- synchronize
branches-ignore:
- docs/update-translations
- docs/sync-nextjs-documentation
permissions:
pull-requests: write
issues: write
jobs:
generate-matrix:
if: |
github.event_name == 'pull_request' &&
(contains(github.event.pull_request.labels.*.name, 'prerelease') ||
contains(toJSON(github.event.pull_request.labels.*.name), 'prerelease:'))
runs-on: ubuntu-latest
outputs:
matrix: ${{ steps.set-matrix.outputs.matrix }}
steps:
- name: Checkout code
uses: actions/checkout@v3
- name: Generate matrix from locales config
id: set-matrix
run: |
LABELS_JSON='${{ toJson(github.event.pull_request.labels.*.name) }}'
echo "LABELS_JSON: $LABELS_JSON"
# Check if we should deploy all locales (general prerelease)
SHOULD_DEPLOY_GENERAL=false
if [[ "${{ github.event_name }}" != "pull_request" ]]; then
SHOULD_DEPLOY_GENERAL=true
elif echo "$LABELS_JSON" | grep -E '"prerelease"' > /dev/null; then
SHOULD_DEPLOY_GENERAL=true
fi
echo "Should deploy all locales: $SHOULD_DEPLOY_GENERAL"
# Read the locales config and generate matrix for enabled locales that should deploy
MATRIX=$(jq -c --argjson should_deploy_general "$SHOULD_DEPLOY_GENERAL" --argjson labels "$LABELS_JSON" '
to_entries |
map(select(.value.enabled == true)) |
map(. as $item | {
locale: $item.key,
secret_project_id: $item.value.secret_project_id,
should_deploy: (
$should_deploy_general or
($labels | any(. == ("prerelease:" + $item.key)))
)
}) |
map(select(.should_deploy == true)) |
map({locale: .locale, secret_project_id: .secret_project_id})
' .github/locales-config.json)
echo "matrix={\"include\":$MATRIX}" >> $GITHUB_OUTPUT
echo "Generated matrix: {\"include\":$MATRIX}"
# Check if there are any enabled locales
ENABLED_COUNT=$(echo "$MATRIX" | jq length)
if [ "$ENABLED_COUNT" -eq 0 ]; then
echo "No enabled locales found in locales-config.json"
exit 1
fi
deploy:
needs: generate-matrix
runs-on: ubuntu-latest
strategy:
matrix: ${{ fromJson(needs.generate-matrix.outputs.matrix) }}
name: Deploy ${{ matrix.locale }}
steps:
- name: Checkout code
uses: actions/checkout@v3
with:
fetch-depth: 1
ref: ${{ github.head_ref }}
- name: Log checked out commit
run: git log -1
- name: Setup Tools
uses: ./.github/actions/setup
- name: Deploy to Vercel (${{ matrix.locale }})
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
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
- name: Write deploy result to file
run: |
jq -n \
--arg label "${{ steps.set_outputs.outputs.label }}" \
--arg preview_url "${{ steps.set_outputs.outputs.preview_url }}" \
--arg inspect_url "${{ steps.set_outputs.outputs.inspect_url }}" \
'{label: $label, preview_url: $preview_url, inspect_url: $inspect_url}' > deploy-result.json
- name: Upload deploy result artifact
uses: actions/upload-artifact@v4
with:
name: deploy-result-${{ matrix.locale }}
path: deploy-result.json
comment-vercel-previews:
needs: [generate-matrix, deploy]
name: Comment Vercel Previews
runs-on: ubuntu-latest
steps:
- name: Checkout repo
uses: actions/checkout@v3
- name: Download all deploy result artifacts
uses: actions/download-artifact@v4
with:
pattern: deploy-result-*
path: deploy-results
- name: Combine deploy results
id: aggregate
run: |
jq -s '.' deploy-results/deploy-result-*/deploy-result.json > deploy-results.json
- name: Check if deploy results exist
id: check_results
run: |
if [ -f deploy-results.json ] && [ $(jq length deploy-results.json) -gt 0 ]; then
echo "has_results=true" >> $GITHUB_OUTPUT
else
echo "has_results=false" >> $GITHUB_OUTPUT
fi
- name: Comment PR with all Vercel Preview Links
if: |
success() && hashFiles('deploy-results.json') != '' && steps.check_results.outputs.has_results == 'true'
uses: ./.github/actions/comment-vercel-preview
with:
deploy_results_path: deploy-results.json