diff --git a/.forgejo/workflows/extension.yml b/.forgejo/workflows/extension.yml new file mode 100644 index 0000000..c992410 --- /dev/null +++ b/.forgejo/workflows/extension.yml @@ -0,0 +1,61 @@ +name: extension +on: + push: + branches: [dev, main] + paths: ['extension/**'] + workflow_dispatch: + +jobs: + lint: + runs-on: python-ci + container: + image: node:22-bookworm-slim + steps: + - uses: actions/checkout@v4 + - name: Install web-ext + run: cd extension && npm install --no-save --no-audit --no-fund + - name: Lint + run: cd extension && npm run lint + + sign-and-publish: + needs: lint + if: github.ref == 'refs/heads/main' + runs-on: python-ci + container: + image: node:22-bookworm-slim + steps: + - uses: actions/checkout@v4 + with: + token: ${{ secrets.RELEASE_TOKEN }} + - name: Install web-ext + git + run: | + apt-get update && apt-get install -y --no-install-recommends git ca-certificates + cd extension && npm install --no-save --no-audit --no-fund + - name: Sign XPI + run: cd extension && npm run sign + env: + WEB_EXT_API_KEY: ${{ secrets.MOZILLA_AMO_JWT_KEY }} + WEB_EXT_API_SECRET: ${{ secrets.MOZILLA_AMO_JWT_SECRET }} + - name: Commit signed XPI to frontend/public/extension/ + run: | + set -e + XPI=$(ls extension/web-ext-artifacts/fabledcurator-*.xpi | head -1) + if [ -z "$XPI" ]; then + echo "No XPI produced by web-ext sign — exiting" + exit 1 + fi + mkdir -p frontend/public/extension + cp "$XPI" frontend/public/extension/ + # Also copy as -latest.xpi so the FC server can serve a stable URL. + cp "$XPI" "frontend/public/extension/fabledcurator-latest.xpi" + git config user.name "FC extension CI" + git config user.email "noreply@fabledsword.com" + git add frontend/public/extension/ + if git diff --cached --quiet; then + echo "No changes to commit" + else + git commit -m "ext: publish signed XPI $(basename $XPI) + +Co-Authored-By: FC extension CI " + git push origin HEAD:main + fi