fud*_*udo 6 continuous-integration git-tag gitlab-ci
我试图让我的 GitLab 管道自动标记分支,master但没有成功。
由于该项目是一个composer包,所以我想要做的是从文件中获取版本号composer.json,将其存储在一个变量中,然后使用这个变量与git来标记分支。
这是我的管道工作部分.gitlab-ci.yml:
tagging:
stage: publish
image: alpine
only:
- master
script:
- version=$(cat composer.json | grep version | grep -Eo "[[:digit:]]+\.[[:digit:]]+\.[[:digit:]]+")
- git tag "$(version)"
- git push --tags
Run Code Online (Sandbox Code Playgroud)
我实际上无法判断问题是什么,因为 GitLab 作业输出中没有显示任何输出,如下图所示

好吧,不知道为什么这不起作用,但我发现我Version在第一个 grep 命令中写了(用大写 V)而不是version:这不应该是问题的原因,因为在本地相同的命令管道返回 0 但不是错误。
我不想像 @davide-madrisan 建议的那样在管道作业映像上安装额外的 cli 命令,因为我想让它尽可能简单。
此外,我发现这个有趣的 gitlab 存储库正是我所需要的:
https ://gitlab.com/guided-explorations/gitlab-ci-yml-tips-tricks-and-hacks/commit-to-repos-during-ci/commit -to-repos-during-ci
所以最后我想出了这个管道工作:
tagging:
stage: publish
only:
- master
script:
- git config --global user.name "${GITLAB_USER_NAME}"
- git config --global user.email "${GITLAB_USER_EMAIL}"
- tag=$(cat composer.json | grep version | grep -Eo "[[:digit:]]+\.[[:digit:]]+\.[[:digit:]]+")
- git tag "$tag"
- git push --tags http://root:$ACCESS_TOKEN@$CI_SERVER_HOST/$CI_PROJECT_PATH.git HEAD:master
Run Code Online (Sandbox Code Playgroud)
我只需要创建一个个人访问令牌并使用 git 凭证添加树管道变量来创建标签并将其从管道内推送到主分支,但它现在实际上可以工作。
| 归档时间: |
|
| 查看次数: |
29348 次 |
| 最近记录: |