name: Release Browser Extension on: push: branches: - main env: FORCE_COLOR: true permissions: contents: write jobs: release: runs-on: ubuntu-latest steps: - uses: actions/checkout@v7 with: fetch-depth: 0 - name: Get package.json version id: pkg run: echo "version=v$(jq -r .version < package.json)" >> $GITHUB_OUTPUT - name: Get latest Git tag id: tag run: | latest_tag=$(git tag --list 'v*' --sort=-v:refname | head -n 1) [ -z "$latest_tag" ] && latest_tag="v0.0.0" echo "latest=$latest_tag" >> "$GITHUB_OUTPUT" - name: Check if package.json version is newer id: check run: | pkg="${{ steps.pkg.outputs.version }}" latest="${{ steps.tag.outputs.latest }}" echo "Latest tag: $latest" echo "Package version: $pkg" if [ "$pkg" != "$latest" ] && [ "$(sort -V <<<"$latest"$'\n'"$pkg" | tail -n1)" = "$pkg" ]; then echo "release=true" >> $GITHUB_OUTPUT else echo "release=false" >> $GITHUB_OUTPUT fi - name: Stop if not newer if: steps.check.outputs.release == 'false' run: | echo "No new version to release (package.json ${{ steps.pkg.outputs.version }} <= latest tag ${{ steps.tag.outputs.latest }})" exit 0 - name: Create Tag if: steps.check.outputs.release == 'true' uses: thororen1234/action-autotag@v1.1.6 env: GITHUB_TOKEN: "${{ secrets.GITHUB_TOKEN }}" with: tag_prefix: "v" - name: Setup PNPM if: steps.check.outputs.release == 'true' uses: pnpm/setup@v2.1.0 with: runtime: node@v24 require-lockfile: true - name: Build web if: steps.check.outputs.release == 'true' run: pnpm buildWebStandalone - name: Create sources zip if: steps.check.outputs.release == 'true' run: zip -r dist/extension-sources.zip . -x "node_modules/*" -x "dist/*" -x ".git/*" - name: Publish extension if: steps.check.outputs.release == 'true' && vars.ACT == 'false' run: pnpx @equicord/publish-browser-extension@latest --chrome-zip dist/extension-chrome.zip --firefox-zip dist/extension-firefox.zip --firefox-sources-zip dist/extension-sources.zip --edge-zip dist/extension-chrome.zip #--opera-zip dist/extension-chrome.zip env: CHROME_API_VERSION: ${{ secrets.CHROME_API_VERSION }} CHROME_EXTENSION_ID: ${{ secrets.CHROME_EXTENSION_ID }} CHROME_PUBLISHER_ID: ${{ secrets.CHROME_PUBLISHER_ID }} CHROME_SERVICE_ACCOUNT_CLIENT_EMAIL: ${{ secrets.CHROME_SERVICE_ACCOUNT_CLIENT_EMAIL }} CHROME_SERVICE_ACCOUNT_PRIVATE_KEY: ${{ secrets.CHROME_SERVICE_ACCOUNT_PRIVATE_KEY }} EDGE_API_KEY: ${{ secrets.EDGE_API_KEY }} EDGE_PRODUCT_ID: ${{ secrets.EDGE_PRODUCT_ID }} EDGE_CLIENT_ID: ${{ secrets.EDGE_CLIENT_ID }} FIREFOX_COMPATIBILITY: ${{ secrets.FIREFOX_COMPATIBILITY }} FIREFOX_EXTENSION_ID: ${{ secrets.FIREFOX_EXTENSION_ID }} FIREFOX_JWT_ISSUER: ${{ secrets.FIREFOX_JWT_ISSUER }} FIREFOX_JWT_SECRET: ${{ secrets.FIREFOX_JWT_SECRET }} #OPERA_PACKAGE_ID: ${{ secrets.OPERA_PACKAGE_ID }} #OPERA_SESSION_ID: ${{ secrets.OPERA_SESSION_ID }}