Feature: add bump version action (#1561)

* Update create-a-release-draft.yml

* Create bump-version-on-merge-next.yml

* Update releases.md
This commit is contained in:
Taly 2021-02-24 21:04:29 +03:00 committed by GitHub
parent c4a57c16a9
commit cd6378c160
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
3 changed files with 121 additions and 19 deletions

View file

@ -0,0 +1,76 @@
name: Bump version on merge
on:
pull_request:
branches:
- next
types: [closed]
jobs:
# If pull request was merged then we should check for a package version update
check-version-changing:
if: github.event.pull_request.merged == true
runs-on: ubuntu-latest
steps:
# Checkout to target branch
- uses: actions/checkout@v2
with:
fetch-depth: 0
# Get package new version name
- name: Get package info
id: packageNew
uses: codex-team/action-nodejs-package-info@v1
# Checkout to the base commit before merge
- name: Checkout to the base commit before merge
run: git checkout ${{ github.event.pull_request.base.sha }}
# Get package old version name
- name: Get package info
id: packageOld
uses: codex-team/action-nodejs-package-info@v1
# Stop workflow and do not bump version if it was changed already
- name: Stop workflow and do not bump version if it was changed already
uses: actions/github-script@v3
if: steps.packageOld.outputs.version != steps.packageNew.outputs.version
with:
script: |
core.setFailed('Version was changed! ${{ steps.packageOld.outputs.version }} -> ${{ steps.packageNew.outputs.version }}')
bump-version:
needs: check-version-changing
runs-on: ubuntu-latest
steps:
# Checkout to target branch
- uses: actions/checkout@v2
# Setup node environment
- uses: actions/setup-node@v1
with:
node-version: 15
registry-url: https://registry.npmjs.org/
# Bump version to the next prerelease (patch) with rc suffix
- name: Suggest the new version
run: yarn version --prerelease --preid rc --no-git-tag-version
# Get package new version name
- name: Get package info
id: package
uses: codex-team/action-nodejs-package-info@v1
# Create pull request with changes
- name: Create Pull Request
uses: peter-evans/create-pull-request@v3
with:
commit-message: Bump version
committer: GitHub <noreply@github.com>
author: GitHub <noreply@github.com>
branch: auto-bump-version
delete-branch: true
title: "Bump version up to ${{ steps.package.outputs.version }}"
body: |
Auto-generated bump version suggestion because of PR:
**${{ github.event.pull_request.title }}** #${{ github.event.pull_request.number }}

View file

@ -15,21 +15,29 @@ jobs:
# Checkout to target branch # Checkout to target branch
- uses: actions/checkout@v2 - uses: actions/checkout@v2
with: with:
# Pull submodules fetch-depth: 0
submodules: 'recursive'
- name: Check if version has been updated # Get package new version name
id: check - name: Get package info
uses: EndBug/version-check@v1 id: packageNew
with: uses: codex-team/action-nodejs-package-info@v1
diff-search: true
- name: Throw an error and stop workflow if no version changes # Checkout to the base commit before merge
- name: Checkout to the base commit before merge
run: git checkout ${{ github.event.pull_request.base.sha }}
# Get package old version name
- name: Get package info
id: packageOld
uses: codex-team/action-nodejs-package-info@v1
# Stop workflow if version was not changed
- name: Stop workflow if version was not changed
uses: actions/github-script@v3 uses: actions/github-script@v3
if: steps.check.outputs.changed != 'true' if: steps.packageOld.outputs.version == steps.packageNew.outputs.version
with: with:
script: | script: |
core.setFailed('No version changes') core.setFailed('No version changes. ${{ steps.packageOld.outputs.version }}')
# Create a new draft release # Create a new draft release
release-draft: release-draft:
@ -89,3 +97,12 @@ jobs:
asset_path: dist/editor.js asset_path: dist/editor.js
asset_name: editor.js asset_name: editor.js
asset_content_type: application/javascript asset_content_type: application/javascript
# Send a notification message
- name: Send a message
uses: codex-team/action-codexbot-notify@v1
with:
webhook: ${{ secrets.CODEX_BOT_WEBHOOK_FRONTEND }}
message: '🦥 [Draft release v${{ steps.package.outputs.version }}](${{ steps.create_release.outputs.html_url }}) for package [${{ steps.package.outputs.name }}](${{ steps.package.outputs.npmjs-link }}) has been created. Add changelog and publish it!'
parse_mode: 'markdown'
disable_web_page_preview: true

View file

@ -52,20 +52,29 @@ Stable version: `2.19.0`
Release candidate: `2.19.1-rc.0`, `2.19.1-rc.1`, ... Release candidate: `2.19.1-rc.0`, `2.19.1-rc.1`, ...
Next version: `2.19.1` Next version: `2.19.1`
## Auto-bump version
After each PR merge to the `next` branch [bump-version-on-merge-next.yml](.github/workflows/bump-version-on-merge-next.yml)
workflow will check if a package version was updated. If there is no update then it will open a new PR with a next
prerelease version.
You can edit version (and PR name of course) if you need to publish not a pre-release version or any other.
## Example pipeline ## Example pipeline
Let's imagine that package version is `2.19.0` and you want to add some bug fixes and publish an update as `2.19.1`. Let's imagine that package version is `2.19.0` and you want to add some bug fixes and publish an update as `2.19.1`.
1. Merge a single update or a few pulls with fixes to the default branch `next` 1. Merge a single update or a few pulls with fixes to the default branch `next`.
and bump the version up to `2.19.1-rc.0` in the package.json. 2. Workflow [bump-version-on-merge-next.yml](.github/workflows/bump-version-on-merge-next.yml) will bump the version up
For the rest rc updates you should bump version number in suffix (to `2.19.1-rc.1` etc). to `2.19.1-rc.0` in the package.json and open a new pull request.
2. Workflow [create-a-release-draft.yml](.github/workflows/create-a-release-draft.yml) 3. After bump version PR merge, the workflow [create-a-release-draft.yml](.github/workflows/create-a-release-draft.yml)
will automatically create a draft release on GitHub. will automatically create a draft release on GitHub.
3. Check this new draft release on the releases page. Check tag `v2.19.1-rc.0` and notice "This is pre-release" checkbox 4. Check this new draft release on the releases page. Check tag `v2.19.1-rc.0` and notice "This is pre-release" checkbox
if it should be for a release candidate versions. Then publish that release. if it should be for a release candidate versions. Then publish that release.
4. [Workflow](.github/workflows/publish-package-to-npm.yml) will automatically push the package to NPM with tag `next`. 5. [Workflow](.github/workflows/publish-package-to-npm.yml) will automatically push the package to NPM with tag `next`.
5. When you ready to publish a release, remove suffix from version name in package.json (`2.19.1-rc.0` -> `v2.19.1`) 6. When you ready to publish a release, remove suffix from version name in package.json (`2.19.1-rc.0` -> `v2.19.1`)
and push changes. Follow steps 2-4 with workflows and publish a new version as `latest` update. in pull request from workflow [bump-version-on-merge-next.yml](.github/workflows/bump-version-on-merge-next.yml).
6. Merge branch `next` to `master` and save sources for history. Follow steps 3-5 with workflows and publish a new version as `latest` update.
7. Merge branch `next` to `master` and save sources for history.