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