name: Package Extensions env: FORCE_JAVASCRIPT_ACTIONS_TO_NODE24: true on: workflow_dispatch: inputs: release_tag: description: Release tag used for direct asset upload, for example v2026.04.23 required: true default: 'v2026.04.24' push: tags: - 'v*' jobs: package: runs-on: ubuntu-latest permissions: contents: write steps: - name: Checkout repository uses: actions/checkout@v5 - name: Resolve release tag id: release run: | if [ "${{ github.event_name }}" = "workflow_dispatch" ]; then tag='${{ github.event.inputs.release_tag }}' else tag='${{ github.ref_name }}' fi echo "tag=$tag" >> "$GITHUB_OUTPUT" - name: Read extension versions id: versions run: | chrome_version=$(python - <<'PY' import json with open('chrome/manifest.json', 'r', encoding='utf-8') as fp: print(json.load(fp)['version']) PY ) firefox_version=$(python - <<'PY' import json with open('firefox/manifest.json', 'r', encoding='utf-8') as fp: print(json.load(fp)['version']) PY ) edge_version=$(python - <<'PY' import json with open('edge/manifest.json', 'r', encoding='utf-8') as fp: print(json.load(fp)['version']) PY ) echo "chrome_version=$chrome_version" >> "$GITHUB_OUTPUT" echo "firefox_version=$firefox_version" >> "$GITHUB_OUTPUT" echo "edge_version=$edge_version" >> "$GITHUB_OUTPUT" - name: Build package files run: | mkdir -p dist/release pushd chrome >/dev/null zip -qr "../dist/release/memos-bber-chrome-${{ steps.versions.outputs.chrome_version }}.zip" . popd >/dev/null pushd edge >/dev/null zip -qr "../dist/release/memos-bber-edge-${{ steps.versions.outputs.edge_version }}.zip" . popd >/dev/null pushd firefox >/dev/null zip -qr "../dist/release/memos-bber-firefox-${{ steps.versions.outputs.firefox_version }}.xpi" . popd >/dev/null - name: Publish release assets env: GITHUB_TOKEN: ${{ github.token }} run: | tag='${{ steps.release.outputs.tag }}' gh release view "$tag" >/dev/null 2>&1 || \ gh release create "$tag" --title "$tag" --notes "Automated extension packages" gh release upload "$tag" dist/release/* --clobber - name: Write workflow summary run: | tag='${{ steps.release.outputs.tag }}' echo "## Release assets" >> "$GITHUB_STEP_SUMMARY" echo "- Chrome: https://github.com/${{ github.repository }}/releases/download/$tag/memos-bber-chrome-${{ steps.versions.outputs.chrome_version }}.zip" >> "$GITHUB_STEP_SUMMARY" echo "- Edge: https://github.com/${{ github.repository }}/releases/download/$tag/memos-bber-edge-${{ steps.versions.outputs.edge_version }}.zip" >> "$GITHUB_STEP_SUMMARY" echo "- Firefox: https://github.com/${{ github.repository }}/releases/download/$tag/memos-bber-firefox-${{ steps.versions.outputs.firefox_version }}.xpi" >> "$GITHUB_STEP_SUMMARY"