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@v6 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 || echo "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: butlerlogic/action-autotag@1.1.2 env: GITHUB_TOKEN: "${{ secrets.GITHUB_TOKEN }}" with: tag_prefix: "v" - name: Setup Bun if: steps.check.outputs.release == 'true' uses: oven-sh/setup-bun@v2 with: bun-version: latest - name: Install dependencies if: steps.check.outputs.release == 'true' run: bun install --frozen-lockfile - name: Build web if: steps.check.outputs.release == 'true' run: bun run 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: bunx @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 env: CHROME_EXTENSION_ID: ${{ secrets.CHROME_EXTENSION_ID }} CHROME_PUBLISHER_ID: ${{ secrets.CHROME_PUBLISHER_ID }} CHROME_CLIENT_ID: ${{ secrets.CHROME_CLIENT_ID }} CHROME_CLIENT_SECRET: ${{ secrets.CHROME_CLIENT_SECRET }} CHROME_REFRESH_TOKEN: ${{ secrets.CHROME_REFRESH_TOKEN }} FIREFOX_EXTENSION_ID: ${{ secrets.FIREFOX_EXTENSION_ID }} FIREFOX_JWT_ISSUER: ${{ secrets.FIREFOX_JWT_ISSUER }} FIREFOX_JWT_SECRET: ${{ secrets.FIREFOX_JWT_SECRET }} EDGE_PRODUCT_ID: ${{ secrets.EDGE_PRODUCT_ID }} EDGE_CLIENT_ID: ${{ secrets.EDGE_CLIENT_ID }} EDGE_API_KEY: ${{ secrets.EDGE_API_KEY }}