-
Notifications
You must be signed in to change notification settings - Fork 0
131 lines (124 loc) · 4.59 KB
/
Copy pathprerelease.yml
File metadata and controls
131 lines (124 loc) · 4.59 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
name: Prerelease
on:
pull_request:
types:
- opened
- labeled
- synchronize
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: Setup Node
uses: actions/setup-node@v4.4.0
with:
node-version-file: .nvmrc
- name: Generate matrix from locales config
id: set-matrix
run: |
LABELS_JSON='${{ toJson(github.event.pull_request.labels.*.name) }}'
echo "LABELS_JSON: $LABELS_JSON"
# Use Node.js script to generate matrix
OUTPUT=$(node .github/scripts/generate-prerelease-matrix.js "$LABELS_JSON")
echo "$OUTPUT" >> $GITHUB_OUTPUT
echo "Generated matrix output: $OUTPUT"
test:
needs: generate-matrix
if: needs.generate-matrix.outputs.matrix != '{"include":[]}'
uses: ./.github/workflows/test-e2e.yml
with:
matrix-include: ${{ toJson(fromJson(needs.generate-matrix.outputs.matrix).include) }}
secrets: inherit
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
- uses: ./.github/actions/setup
- uses: ./.github/actions/vercel-pull
with:
environment: preview
vercel_project_id: ${{ secrets[matrix.secret_project_id] }}
vercel_org_id: ${{ secrets.VERCEL_ORG_ID }}
vercel_token: ${{ secrets.VERCEL_TOKEN }}
- uses: ./.github/actions/vercel-build
with:
environment: preview
vercel_project_id: ${{ secrets[matrix.secret_project_id] }}
vercel_org_id: ${{ secrets.VERCEL_ORG_ID }}
vercel_token: ${{ secrets.VERCEL_TOKEN }}
- 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