ci: auto version bump when not bumped manually (#792)

Signed-off-by: yqrashawn <namy.19@gmail.com>
Co-authored-by: yqrashawn <yqrashawn@users.noreply.github.com>
This commit is contained in:
yqrashawn
2023-08-16 11:03:24 +08:00
committed by GitHub
parent 0ee99024bb
commit 2a4d6e05a1
3 changed files with 94 additions and 1 deletions

37
.github/scripts/bump_version_dot_go.mjs vendored Normal file
View File

@@ -0,0 +1,37 @@
import { URL } from "url";
import { readFileSync, writeFileSync } from "fs";
const versionFilePath = new URL(
"../../common/version/version.go",
import.meta.url
).pathname;
const versionFileContent = readFileSync(versionFilePath, { encoding: "utf-8" });
const currentVersion = versionFileContent.match(
/var tag = "(?<version>v(?<major>\d+)\.(?<minor>\d+)\.(?<patch>\d+))"/
);
try {
parseInt(currentVersion.groups.major);
parseInt(currentVersion.groups.minor);
parseInt(currentVersion.groups.patch);
} catch (err) {
console.error(new Error("Failed to parse version in version.go file"));
throw err;
}
// prettier-ignore
const newVersion = `v${currentVersion.groups.major}.${currentVersion.groups.minor}.${parseInt(currentVersion.groups.patch) + 1}`;
console.log(
`Bump version from ${currentVersion.groups.version} to ${newVersion}`
);
writeFileSync(
versionFilePath,
versionFileContent.replace(
`var tag = "${currentVersion.groups.version}"`,
`var tag = "${newVersion}"`
)
);

56
.github/workflows/bump_version.yml vendored Normal file
View File

@@ -0,0 +1,56 @@
name: Bump Version
on:
pull_request:
branches: [develop]
jobs:
check:
runs-on: ubuntu-latest
outputs:
check-result: ${{ steps.check-diff.outputs.result }}
steps:
- name: Checkout code
uses: actions/checkout@v3
- name: check diff
id: check-diff
run: |
set -euo pipefail
# fetch develop branch so that we can diff against later
git fetch origin develop
echo 'checking verion changes in diff...'
# check if version changed in version.go
# note: the grep will fail if use \d instead of [0-9]
git diff HEAD..origin/develop --text --no-ext-diff --unified=0 --no-prefix common/version/version.go | grep -E '^\+var tag = "v[0-9]+\.[0-9]+\.[0-9]+"$' && true
exit_code=$?
# auto bump if version is not bumped manually
echo '> require auto version bump?'
if [ $exit_code -eq 0 ]; then
echo '> no, already bumped'
echo "result=no-bump" >> "$GITHUB_OUTPUT"
else
echo '> yes'
echo "result=bump" >> "$GITHUB_OUTPUT"
fi
bump:
runs-on: ubuntu-latest
needs: check
if: needs.check.outputs.check-result == 'bump'
steps:
- name: Checkout code
uses: actions/checkout@v3
- name: Install Node.js 16
uses: actions/setup-node@v3
with:
node-version: 16
- name: bump version in common/version/version.go
run: node .github/scripts/bump_version_dot_go.mjs
- uses: stefanzweifel/git-auto-commit-action@3ea6ae190baf489ba007f7c92608f33ce20ef04a
with:
commit_message: "chore: auto version bump[bot]"

View File

@@ -6,7 +6,7 @@ import (
"strings"
)
var tag = "v4.1.46"
var tag = "v4.1.47"
var commit = func() string {
if info, ok := debug.ReadBuildInfo(); ok {