Skip to content

Commit 1dab9d8

Browse files
authored
Add GitHub Actions workflow for beta deployment
1 parent 5686f9c commit 1dab9d8

File tree

1 file changed

+121
-0
lines changed

1 file changed

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

0 commit comments

Comments
 (0)