Mit*_*ens 5 git pipeline gitlab gitlab-ci
我有一个项目,其中有 4 个环境(开发、测试、暂存和生产),每个环境都有分支(分别是开发、测试、暂存主机)。我们通常npm version会添加版本,package.json但也会添加 git 标签。之后,我们运行构建,并在成功后推送命令创建的提交和标签npm version。所以在我的管道工作中,我有这个(简化的):
dev build:\n stage: build\n only:\n - develop@username/reponame\n script:\n - npm version patch -m "[ci skip] %s"\n - git add -A\n - echo "Do build here before pushing the version bump"\n - git push git@my-repo-url:$CI_PROJECT_PATH.git HEAD:develop --follow-tags\nRun Code Online (Sandbox Code Playgroud)\n\n请注意,npm version我还为 git 提交指定了一条消息,以便我可以添加\xe2\x80\x9c[ci Skip]\xe2\x80\x9d,这就是我们停止无限循环的方式,但随后我们将管道运行列为在状态栏下跳过。这不是世界上最糟糕的事情,但想看看是否有更好的方法来做这种事情?将版本 git commit 和标签推送到存储库,而不会触发另一个管道运行。
在与一位同事交谈后(感谢 Lucas Still),他有了这个想法,并在 Gitlab 的文档中指出了检查用户推送内容的变量。这是一个好主意,因为我已经有一个机器人 gitlab 用户可以执行此操作,git push所以我所要做的就是拥有except并检查用户是否是该机器人帐户:
dev build:
stage: build
except:
variables:
- $GITLAB_USER_LOGIN == "my-bot"
only:
- develop@username/reponame
script:
- npm version patch
- echo "Do build here before pushing the version bump"
- git push git@my-repo-url:$CI_PROJECT_PATH.git HEAD:$CI_COMMIT_REF_NAME --follow-tags
Run Code Online (Sandbox Code Playgroud)
因此,这里唯一重要的是更改"my-bot"为机器人帐户的用户名。可以使用$GITLAB_USER_ID或 甚至$GITLAB_USER_EMAIL也可以,但用户名对于遇到 yml 文件的其他人来说更具描述性。
| 归档时间: |
|
| 查看次数: |
4034 次 |
| 最近记录: |