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 }}