1+ name : Deploy to Beta
2+
3+ on :
4+ push :
5+ branches :
6+ - v2.2.0
7+ workflow_dispatch :
8+ inputs :
9+ subfolder :
10+ description : ' Target subfolder in beta repo'
11+ required : true
12+ default : ' HTMLReader'
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 : v2.0.0
32+
33+ - name : Determine subfolder and zip name
34+ id : set-zip-name
35+ run : |
36+ SUBFOLDER="${{ github.event.inputs.subfolder || 'HTMLReader' }}"
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