74 lines
2.3 KiB
YAML
74 lines
2.3 KiB
YAML
name: build-extension
|
|
|
|
on:
|
|
push:
|
|
branches: [feat/ismis-helper, prod]
|
|
tags: ['v*']
|
|
pull_request:
|
|
|
|
# Ensure the job token can create releases and upload assets.
|
|
permissions:
|
|
contents: write
|
|
releases: write
|
|
|
|
jobs:
|
|
build:
|
|
runs-on: ubuntu-latest
|
|
steps:
|
|
- name: Checkout
|
|
uses: actions/checkout@v4
|
|
|
|
- name: Set up Node
|
|
uses: actions/setup-node@v4
|
|
with:
|
|
node-version: 20
|
|
|
|
- name: Install dev dependencies
|
|
run: npm ci || npm install
|
|
|
|
- name: Install PyMuPDF (PDF text assertions)
|
|
run: |
|
|
python3 -m venv /tmp/venv
|
|
/tmp/venv/bin/pip install --quiet pymupdf
|
|
echo "/tmp/venv/bin" >> "$GITHUB_PATH"
|
|
|
|
- name: Run tests
|
|
run: npm test
|
|
|
|
- name: Build both variants
|
|
run: node scripts/build.js all
|
|
|
|
- name: Upload zip artifacts
|
|
uses: actions/upload-artifact@v4
|
|
with:
|
|
name: ismis-helper-zips
|
|
path: dist/*.zip
|
|
if-no-files-found: error
|
|
|
|
- name: Publish release on version tag
|
|
if: startsWith(github.ref, 'refs/tags/v')
|
|
# Gitea-native release: softprops/action-gh-release targets GitHub's API
|
|
# and fails on Gitea (405). Instead we call the Gitea API directly with
|
|
# the runner-provided GITHUB_TOKEN and GITHUB_API_URL.
|
|
env:
|
|
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
|
run: |
|
|
set -euo pipefail
|
|
REPO="${{ github.repository }}"
|
|
TAG="${{ github.ref_name }}"
|
|
API="${GITHUB_API_URL:-https://git.ranio.xyz/api/v1}"
|
|
# Create the release for the tag
|
|
RELEASE_JSON=$(curl -sS -X POST \
|
|
-H "Authorization: token ${GITHUB_TOKEN}" \
|
|
-H "Content-Type: application/json" \
|
|
-d "{\"tag_name\":\"${TAG}\",\"name\":\"${TAG}\",\"body\":\"ISMIS Helper ${TAG}\"}" \
|
|
"${API}/repos/${REPO}/releases")
|
|
RELEASE_ID=$(echo "${RELEASE_JSON}" | python3 -c "import sys,json; print(json.load(sys.stdin)['id'])")
|
|
# Attach both zips as release assets
|
|
for f in dist/*.zip; do
|
|
curl -sS -X POST \
|
|
-H "Authorization: token ${GITHUB_TOKEN}" \
|
|
-F "attachment=@${f}" \
|
|
"${API}/repos/${REPO}/releases/${RELEASE_ID}/assets?name=$(basename "${f}")"
|
|
done
|