我想在 GitHub 操作中使用纯解决方案来增加包的版本。我不想使用 GitHub 市场中的任何现有操作,例如“gh-action-bump-version”。我有这个工作流程,它将增加版本并创建标签。
name: Version Increment
on:
push:
branches:
- main
tags-ignore:
- v*
jobs:
version:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
with:
token: ${{ secrets.ACCESS_TOKEN }}
- run: git config user.email "$GITHUB_ACTOR@users.noreply.github.com"
- run: git config user.name "$GITHUB_ACTOR"
- run: npm version minor -m "v%s"
- run: VERSION=$(node -p "require('./package.json').version")
- run: git tag ${VERSION}
- run: git push origin --tags
- run: git push origin --follow-tags
Run Code Online (Sandbox Code Playgroud)
它有效,但由于最后一行,它也会导致操作的循环运行。我知道我可以使用像“[RELEASE]”这样的自定义消息,并放置一个“if”条件并跳过这些提交。但我的问题是,是否有更好的解决方案可以从此操作中跳过这些提交并且不使用“if”条件?因为“标签忽略”显然不起作用。
use*_*536 14
所以我找到了几种解决方案。第一个是你可以将“[skip actions]”添加到提交消息中,并且该提交将跳过应在提交中运行的任何 github 操作。第二种是使用带有访问令牌的存储库地址。
这对我来说效果很好:
name: Version Increment
on:
push:
branches:
- main
jobs:
version:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- run: git config user.email "$GITHUB_ACTOR@users.noreply.github.com"
- run: git config user.name "$GITHUB_ACTOR"
- run: npm version minor -m "v%s"
- run: VERSION=$(node -p "require('./package.json').version")
- run: git tag ${VERSION}
- run: git push "https://$GITHUB_ACTOR:${{ secrets.ACCESS_TOKEN }}@github.com/$GITHUB_REPOSITORY.git" --follow-tags
- run: git push "https://$GITHUB_ACTOR:${{ secrets.ACCESS_TOKEN }}@github.com/$GITHUB_REPOSITORY.git" --tags
Run Code Online (Sandbox Code Playgroud)
尝试使用内置的GITHUB_TOKEN而不是自定义的ACCESS_TOKEN。这应该可以防止工作流程触发另一个工作流程。
当您使用存储库的 GITHUB_TOKEN 执行任务时,GITHUB_TOKEN 触发的事件不会创建新的工作流运行。这可以防止您意外创建递归工作流运行。例如,如果工作流运行使用存储库的 GITHUB_TOKEN 推送代码,则即使存储库包含配置为在推送事件发生时运行的工作流,新工作流也不会运行。
| 归档时间: |
|
| 查看次数: |
12593 次 |
| 最近记录: |