
GitHub 自动创建前端项目版本号标签
前端项目有版本号可以方便我们去追溯问题。一般推荐根据 SemVer 规范更新版本号。
版本号格式:主版本号.次版本号.修订号,版本号递增规则如下:
主版本号:当你做了不兼容的 API 修改, 次版本号:当你做了向下兼容的功能性新增, 修订号:当你做了向下兼容的问题修正。 先行版本号及版本编译信息可以加到“主版本号.次版本号.修订号”的后面,作为延伸。
在前端项目中都有一个 package.json 文件,其中 version 字段可以被我们用于存储版本号。package.json 文件可以手动管理版本号,然后通过 GitHub Workflow 自动化创建对应的 git tag。管理流程:
- 每次修改需根据 SemVer 规范更新 package.json 的版本号;
- 开发分支合并到主分支后触发 GitHub Workflow 自动化创建对应的 git tag。
自动化创建 git tag 的 Workflow 文件内容如下:
name: Create Tag on Merge
on:
push:
branches:
- master
jobs:
tag:
runs-on: ubuntu-latest
permissions:
contents: write
steps:
- name: Checkout code
uses: actions/checkout@v3
with:
fetch-depth: 0
- name: Set up Node.js
uses: actions/setup-node@v3
with:
node-version: "20"
- name: Get version from package.json
id: get_version
run: |
VERSION=$(node -p "require('./package.json').version")
echo "version=v$VERSION" >> $GITHUB_OUTPUT
- name: Check if tag already exists
id: check_tag
run: |
git fetch --tags
if git rev-parse "$TAG" >/dev/null 2>&1; then
echo "Tag $TAG already exists. Skipping tag creation."
echo "exists=true" >> $GITHUB_OUTPUT
else
echo "Tag does not exist."
echo "exists=false" >> $GITHUB_OUTPUT
fi
env:
TAG: ${{ steps.get_version.outputs.version }}
- name: Create Git Tag
if: steps.check_tag.outputs.exists == 'false'
run: |
git config user.name "github-actions[bot]"
git config user.email "github-actions[bot]@users.noreply.github.com"
git tag $TAG
git push origin $TAG
env:
TAG: ${{ steps.get_version.outputs.version }}