Skip to content

Update Package Version #24

Update Package Version

Update Package Version #24

name: Update Package Version
on:
workflow_run:
workflows: ['Release Drafter']
types:
- completed
jobs:
update-version:
if: github.event.workflow_run.conclusion == 'success'
runs-on: ubuntu-latest
permissions:
contents: write
pull-requests: write
steps:
- uses: actions/checkout@v3
- name: Get draft release version and URL
id: get-version
uses: actions/github-script@v6
with:
script: |
const { data: releases } = await github.rest.repos.listReleases({
owner: context.repo.owner,
repo: context.repo.repo
});
const draftRelease = releases.find(release => release.draft === true);
if (!draftRelease) {
console.log('No draft release found. Skipping version update.');
return {
version: '',
html_url: ''
};
}
const version = draftRelease.tag_name.replace(/^v/, '');
console.log(`Draft release version: ${version}`);
console.log(`Draft release URL: ${draftRelease.html_url}`);
return {
version: version,
html_url: draftRelease.html_url
};
- name: Check current version
id: check-version
if: fromJSON(steps.get-version.outputs.result).version != ''
run: |
CURRENT_VERSION=$(node -p "require('./package.json').version")
NEW_VERSION="${{ fromJSON(steps.get-version.outputs.result).version }}"
if [ "$CURRENT_VERSION" = "$NEW_VERSION" ]; then
echo "versions_match=true" >> $GITHUB_OUTPUT
echo "Current version ($CURRENT_VERSION) matches new version. Skipping update."
else
echo "versions_match=false" >> $GITHUB_OUTPUT
fi
- name: Update package.json version
if: fromJSON(steps.get-version.outputs.result).version != '' && steps.check-version.outputs.versions_match != 'true'
run: |
VERSION="${{ fromJSON(steps.get-version.outputs.result).version }}"
npm version $VERSION --no-git-tag-version
- name: Create Pull Request
if: fromJSON(steps.get-version.outputs.result).version != '' && steps.check-version.outputs.versions_match != 'true'
uses: peter-evans/create-pull-request@v5
with:
commit-message: 'v${{ fromJSON(steps.get-version.outputs.result).version }}'
title: 'v${{ fromJSON(steps.get-version.outputs.result).version }}'
body: |
New release: ${{ fromJSON(steps.get-version.outputs.result).html_url }}
Merge this PR to publish the release. (Do NOT manually publish the release.)
branch: 'new-release'
base: 'main'
delete-branch: true
labels: |
new release