Skip to content

Commit 4892929

Browse files
authored
Add GitHub Actions workflow for beta deployment
1 parent d0af653 commit 4892929

File tree

1 file changed

+118
-0
lines changed

1 file changed

+118
-0
lines changed
Lines changed: 118 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,118 @@
1+
name: Deploy to Beta
2+
3+
on:
4+
push:
5+
branches:
6+
- main
7+
8+
concurrency:
9+
group: "deploy-beta"
10+
cancel-in-progress: false
11+
12+
permissions:
13+
contents: read
14+
15+
jobs:
16+
send:
17+
runs-on: ubuntu-latest
18+
outputs:
19+
artifact-url: ${{ steps.get-artifact.outputs.url }}
20+
zip-name: ${{ steps.set-zip-name.outputs.zip_name }}
21+
steps:
22+
- name: Checkout source repo
23+
uses: actions/checkout@v4
24+
with:
25+
ref: main
26+
27+
- name: Determine subfolder and zip name
28+
id: set-zip-name
29+
run: |
30+
SUBFOLDER="${{ github.event.repository.name }}"
31+
ZIP_NAME="$(echo "${SUBFOLDER}" | tr '[:upper:]' '[:lower:]')-build.zip"
32+
33+
echo "Subfolder: ${SUBFOLDER}"
34+
echo "Zip name: ${ZIP_NAME}"
35+
36+
echo "subfolder=${SUBFOLDER}" >> "$GITHUB_OUTPUT"
37+
echo "zip_name=${ZIP_NAME}" >> "$GITHUB_OUTPUT"
38+
39+
- name: Use Node.js
40+
uses: actions/setup-node@v4
41+
with:
42+
node-version: "20"
43+
44+
- name: Install dependencies
45+
working-directory: Build
46+
run: npm i
47+
48+
- name: Build
49+
working-directory: Build
50+
run: npm run build
51+
52+
- name: Zip build artifacts
53+
run: |
54+
ZIP_NAME="${{ steps.set-zip-name.outputs.zip_name }}"
55+
echo "Creating zip: ${ZIP_NAME}"
56+
zip -r "${ZIP_NAME}" Build/dist
57+
58+
- name: Upload artifact
59+
uses: actions/upload-artifact@v4
60+
with:
61+
name: ${{ steps.set-zip-name.outputs.zip_name }}
62+
path: ${{ steps.set-zip-name.outputs.zip_name }}
63+
retention-days: 1
64+
65+
- name: Get artifact download URL
66+
id: get-artifact
67+
uses: actions/github-script@v7
68+
with:
69+
script: |
70+
const zipName = process.env.ZIP_NAME;
71+
const { owner, repo } = context.repo;
72+
73+
const artifacts = await github.rest.actions.listWorkflowRunArtifacts({
74+
owner,
75+
repo,
76+
run_id: context.runId
77+
});
78+
79+
const artifact = artifacts.data.artifacts.find(a => a.name === zipName);
80+
if (!artifact) {
81+
core.setFailed(`Artifact with name ${zipName} not found`);
82+
return;
83+
}
84+
85+
core.setOutput('url', artifact.archive_download_url);
86+
env:
87+
ZIP_NAME: ${{ steps.set-zip-name.outputs.zip_name }}
88+
89+
- name: Dispatch to beta repo
90+
run: |
91+
set -euo pipefail
92+
93+
BETA_REPO="${{ github.repository_owner }}/beta"
94+
SUBFOLDER="${{ steps.set-zip-name.outputs.subfolder }}"
95+
ARTIFACT_URL="${{ steps.get-artifact.outputs.url }}"
96+
ZIP_NAME="${{ steps.set-zip-name.outputs.zip_name }}"
97+
98+
echo "Dispatching to: ${BETA_REPO}"
99+
echo "With:"
100+
echo " subfolder: ${SUBFOLDER}"
101+
echo " artifact_url: ${ARTIFACT_URL}"
102+
echo " zip_name: ${ZIP_NAME}"
103+
104+
JSON=$(jq -n \
105+
--arg event_type "deploy-build" \
106+
--arg source_repo "${{ github.repository }}" \
107+
--arg artifact_url "$ARTIFACT_URL" \
108+
--arg token "${{ secrets.GITHUB_TOKEN }}" \
109+
--arg subfolder "$SUBFOLDER" \
110+
--arg zip_name "$ZIP_NAME" \
111+
'{event_type: $event_type, client_payload: {source_repo: $source_repo, artifact_url: $artifact_url, token: $token, subfolder: $subfolder, zip_name: $zip_name}}' \
112+
)
113+
114+
curl -X POST \
115+
-H "Authorization: token ${{ secrets.BETA_PAT_TOKEN }}" \
116+
-H "Accept: application/vnd.github+json" \
117+
https://api.github.com/repos/${BETA_REPO}/dispatches \
118+
-d "$JSON"

0 commit comments

Comments
 (0)