Develop #7
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 Drafter | |
on: | |
push: | |
branches: [ master ] | |
pull_request: | |
types: [opened, reopened, synchronize] | |
branches: [ master ] | |
workflow_dispatch: | |
permissions: | |
contents: write | |
pull-requests: write | |
issues: write | |
jobs: | |
update_release_draft: | |
runs-on: ubuntu-latest | |
outputs: | |
version: ${{ steps.release_drafter.outputs.resolved_version }} | |
steps: | |
- uses: actions/checkout@v4 | |
with: | |
fetch-depth: 0 | |
- id: release_drafter | |
uses: release-drafter/release-drafter@v5 | |
env: | |
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
with: | |
config-name: release-drafter.yml | |
disable-autolabeler: false | |
update_package_version: | |
needs: update_release_draft | |
runs-on: ubuntu-latest | |
if: github.event_name == 'push' && github.ref == 'refs/heads/master' | |
steps: | |
- uses: actions/checkout@v4 | |
with: | |
token: ${{ secrets.GITHUB_TOKEN }} | |
- name: Setup Node.js | |
uses: actions/setup-node@v4 | |
with: | |
node-version: '20' | |
- name: Configure Git | |
run: | | |
git config --global user.name 'github-actions[bot]' | |
git config --global user.email 'github-actions[bot]@users.noreply.github.com' | |
- name: Update Version | |
run: | | |
NEW_VERSION="${{ needs.update_release_draft.outputs.version }}" | |
if [ -n "$NEW_VERSION" ]; then | |
# Remove 'v' prefix if present | |
NEW_VERSION="${NEW_VERSION#v}" | |
# Update package.json version | |
npm version $NEW_VERSION --no-git-tag-version | |
# Update package-lock.json if exists | |
if [ -f "package-lock.json" ]; then | |
npm install --package-lock-only | |
fi | |
# Stage changes | |
git add package.json | |
if [ -f "package-lock.json" ]; then | |
git add package-lock.json | |
fi | |
# Commit and push changes | |
git commit -m "chore: update package version to $NEW_VERSION [skip ci]" | |
git push | |
else | |
echo "No version update needed" | |
fi | |
- name: Update Changelog | |
run: | | |
if [ -f CHANGELOG.md ]; then | |
NEW_VERSION="${{ needs.update_release_draft.outputs.version }}" | |
DATE=$(date +"%Y-%m-%d") | |
# Create new version entry | |
echo "# $NEW_VERSION ($DATE)" > temp_changelog.md | |
echo "" >> temp_changelog.md | |
echo "## What's Changed" >> temp_changelog.md | |
# Add release notes | |
curl -H "Authorization: token ${{ secrets.GITHUB_TOKEN }}" \ | |
-H "Accept: application/vnd.github.v3+json" \ | |
"https://api.github.com/repos/${{ github.repository }}/releases/latest" | \ | |
jq -r '.body' >> temp_changelog.md | |
echo "" >> temp_changelog.md | |
# Combine with existing changelog | |
cat CHANGELOG.md >> temp_changelog.md | |
mv temp_changelog.md CHANGELOG.md | |
# Commit changelog | |
git add CHANGELOG.md | |
git commit -m "docs: update changelog for $NEW_VERSION [skip ci]" | |
git push | |
fi |