From 351300651ba63c70fa801654dab35988c2346d82 Mon Sep 17 00:00:00 2001 From: Oliver Date: Sun, 16 Nov 2025 14:47:58 -0700 Subject: [PATCH] Add script for creating the forgejo release --- .forgejo/workflows/draft-release.yaml | 19 ++-------- scripts/createForgejoRelease.mjs | 51 +++++++++++++++++++++++++++ 2 files changed, 54 insertions(+), 16 deletions(-) create mode 100644 scripts/createForgejoRelease.mjs diff --git a/.forgejo/workflows/draft-release.yaml b/.forgejo/workflows/draft-release.yaml index af48b55..2c407ad 100644 --- a/.forgejo/workflows/draft-release.yaml +++ b/.forgejo/workflows/draft-release.yaml @@ -67,24 +67,11 @@ jobs: - name: Add manifest into release archive run: zip release.zip --update system.json - - name: Move files into release dir - run: mkdir release; mv release.zip release/release.zip; mv system.json release/system.json - - name: Create draft release uses: https://code.forgejo.org/actions/forgejo-release@v2.5.0 - with: - direction: "upload" - tag: "v${{ steps.version.outputs.version }}" - hide-archive-link: true - draft: true - release-dir: release - token: ${{ forgejo.token }} - - # env: - # TAG: "v${{steps.version.outputs.version}}" - # AUTH: "token ${{forgejo.token}}" - # API_URL: ${{forgejo.api_url}} - # REPO: ${{forgejo.repository}} + run: node scripts/createForgejoRelease.mjs + env: + TAG: "v${{steps.version.outputs.version}}" # - name: Upload artifacts # uses: https://data.forgejo.org/forgejo/upload-artifact@v4 diff --git a/scripts/createForgejoRelease.mjs b/scripts/createForgejoRelease.mjs new file mode 100644 index 0000000..7e153c1 --- /dev/null +++ b/scripts/createForgejoRelease.mjs @@ -0,0 +1,51 @@ +import fs from "fs"; +import axios from "axios"; + +const { + TAG, + FORGEJO_API_URL: API, + FORGEJO_REPOSITORY: REPO, + FORGEJO_TOKEN: TOKEN, +} = process.env; + +async function main() { + + // Initial Release Data + const release = await axios.post( + `${API}/repos/${REPO}/releases`, + { + tag_name: TAG, + draft: true, + hide_archive_links: true, + }, + { + headers: { Authorization: `token ${TOKEN}` }, + } + ); + + // Upload the release archive + const archiveFormData = new FormData(); + const archive = await fs.openAsBlob(`release.zip`); + archiveFormData.set(`release`, archive, `release.zip`) + await axios.post( + `${API}/repos/${REPO}/releases/${release.data.id}/assets`, + archiveFormData, + { + headers: { Authorization: `token ${TOKEN}` }, + } + ); + + // Upload the manifest file + const formData = new FormData(); + const manifest = await fs.openAsBlob(`system.json`); + formData.set(`manifest`, manifest, `system.json`) + await axios.post( + `${API}/repos/${REPO}/releases/${release.data.id}/assets`, + formData, + { + headers: { Authorization: `token ${TOKEN}` }, + } + ); +}; + +main();