chore: Refactor release workflow and fix rebase conflicts #8
Workflow file for this run
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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 }} |