Auto Create Release Chrome Extension .zip Github Workflow

Auto Create Release Chrome Extension .zip Github Workflow

Just setup your TOKEN for your repo or repos and put this .yml file inside /github/workflows/ folders.

name: Extension Release

on:
  push:
    branches:
      - main

permissions:
  contents: write

jobs:
  release:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v2
        with:
          fetch-depth: '0'

      - name: Get current version
        id: get_version
        run: |
          version=$(grep -oP '"version":\s*"\K[0-9.]+' manifest.json)
          echo "Current version: $version"
          echo "version=$version" >> $GITHUB_ENV

      - name: Bump version if release
        if: contains(github.event.head_commit.message, 'release')
        run: |
          current_version=$(grep -oP '"version":\s*"\K[0-9.]+' manifest.json)
          next_version=$(awk -F. '{print $1 "." ($2+1)}' <<< "$current_version")
          sed -i "s/\"version\": \"$current_version\"/\"version\": \"$next_version\"/" manifest.json
          echo "new_version=$next_version" >> $GITHUB_ENV

      - name: Commit version bump
        if: contains(github.event.head_commit.message, 'release')
        run: |
          git config --local user.email "github-actions[bot]@users.noreply.github.com"
          git config --local user.name "github-actions[bot]"
          git add manifest.json
          git commit -m "Bump version to ${{ env.new_version }}"
          git push

      - name: Create zip file
        run: |
          mkdir -p snn-chat-extension
          rsync -av --exclude='.git' --exclude='.github' --exclude='snn-chat-extension' ./ snn-chat-extension/
          zip -r snn-chat-extension.zip snn-chat-extension
          rm -rf snn-chat-extension

      - name: Create GitHub Release
        if: contains(github.event.head_commit.message, 'release')
        uses: softprops/action-gh-release@v1
        with:
          files: snn-chat-extension.zip
          tag_name: "v${{ env.new_version }}"
          name: "Release v${{ env.new_version }}"
          body: "Release v${{ env.new_version }} of the SNN Chat Chrome Extension."
        env:
          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}

      - name: Create GitHub Pre-release
        if: contains(github.event.head_commit.message, 'alphatag')
        uses: softprops/action-gh-release@v1
        with:
          prerelease: true
          files: snn-chat-extension.zip
          tag_name: "pre-v${{ env.version }}"
          name: "Pre-release v${{ env.version }}"
          body: "Pre-release v${{ env.version }} of the SNN Chat Chrome Extension."
        env:
          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
If this solution saved you time and money consider supporting