Skip to content

chore: Refactor release workflow and fix rebase conflicts #8

chore: Refactor release workflow and fix rebase conflicts

chore: Refactor release workflow and fix rebase conflicts #8

Workflow file for this run

name: Release Workflow
on:
push:
# branches:
# - main
# paths:
# - 'manifest.json'
jobs:
check_version:
runs-on: ubuntu-latest
outputs:
new_version: ${{ steps.version_check.outputs.new_version }}
old_version: ${{ steps.version_check.outputs.old_version }}
steps:
- name: Checkout repository
uses: actions/checkout@v3
- name: Extract version from manifest
id: version_check
run: |
OLD_VERSION=$(git show HEAD~1:manifest.json | jq -r '.version' manifest.json)
NEW_VERSION=$(jq -r '.version' manifest.json)
echo ::set-output name=old_version::$OLD_VERSION
echo ::set-output name=new_version::$NEW_VERSION
echo "Old Version: $OLD_VERSION"
echo "New Version: $NEW_VERSION"
rebase_firefox:
runs-on: ubuntu-latest
needs: check_version
if: ${{ needs.check_version.outputs.new_version != '' }}
steps:
- name: Checkout repository
uses: actions/checkout@v3
with:
ref: firefox
- name: Rebase onto main
id: rebase
run: |
git fetch origin
git rebase origin/main || {
echo "Conflicts detected during rebase:"
git diff --diff-filter=U
exit 1
}
update_docs:
runs-on: ubuntu-latest
needs: rebase_firefox
if: ${{ needs.check_version.outputs.new_version != '' }}
steps:
- name: Checkout repository
uses: actions/checkout@v3
- name: Update README with new version
run: |
NEW_VERSION=${{ needs.check_version.outputs.new_version }}
OLD_VERSION=${{ needs.check_version.outputs.old_version }}
sed -i "s/version:.*/version: $NEW_VERSION/" README.md
git commit -am "Update README for version $NEW_VERSION"
git push origin main
- name: Update CHANGELOG with latest changes
run: |
NEW_VERSION=${{ needs.check_version.outputs.new_version }}
echo "## $NEW_VERSION - $(date +'%Y-%m-%d')" >> CHANGELOG.md
echo "" >> CHANGELOG.md
echo "### Changes" >> CHANGELOG.md
git log $(git describe --tags --abbrev=0)..HEAD --pretty=format:"- %s" >> CHANGELOG.md
git commit -am "Update CHANGELOG for version $NEW_VERSION"
git push origin main
build_and_release:
runs-on: ubuntu-latest
needs: [rebase_firefox, update_docs]
if: ${{ needs.check_version.outputs.new_version != '' }}
steps:
- name: Checkout repository
uses: actions/checkout@v3
- name: Build release for Chrome
run: |
mkdir -p release
zip -r release/signature-sync-chrome-${{ needs.check_version.outputs.new_version }}.zip . -x '.*' -x '__MACOSX' -x '*.md'
- name: Build release for Firefox
run: |
git checkout firefox
mkdir -p release
zip -r release/signature-sync-firefox-${{ needs.check_version.outputs.new_version }}.zip . -x '.*' -x '__MACOSX' -x '*.md'
- name: Create GitHub release
uses: softprops/action-gh-release@v1
with:
tag_name: v${{ needs.check_version.outputs.new_version }}
name: v${{ needs.check_version.outputs.new_version }}
body: |
## Changes in this release
${{ steps.update_docs.outputs.changelog }}
## Old Version: ${{ needs.check_version.outputs.old_version }}
## New Version: ${{ needs.check_version.outputs.new_version }}
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}