git - 在 Gitlab CI/CD 管道上获取最新的 git 标签
问题描述
我想在 Gitlab 中设置一个 CI/CD 管道,它可以读取最新标签并获取最后一个标签来增加我的下一个版本应用程序。我带来了这个配置:
stages:
- version
calculate_version:
image:
name: alpine/git:latest
entrypoint: [""]
stage: version
script:
- VERSION=$(git tag);test -z "$VERSION" && echo "no version tag found" && exit 1
- CMDLINE="$VERSION";
- echo $VERSION
- echo $CMDLINE > cmdline
artifacts:
paths:
- cmdline
但是我没有在 $VERSION 上列出任何标签。它看起来像 Gitlab 没有传递存储库上的标签。但是,如果我创建并推送一个新标签,它只会显示那个新标签,而不是我期望的所有标签列表。
这是 GitLab ci/cd 的行为吗?如果是,我怎样才能在管道中获取我的仓库中的所有标签?
解决方案
您可以使用Gitlab API获取标签
默认情况下,结果按最后更新的标签排序,所以如果你想得到最后一个,你可以像这样修改你的脚本块:
script:
- VERSION=$(curl -Ss --request GET --header "PRIVATE-TOKEN: <REPLACE_BY_A_VARIABLE>" "https://gitlab.com/api/v4/projects/${CI_PROJECT_ID}/repository/tags" | jq -r '.[0] | .name')
- test -z "$VERSION" && echo "no version tag found" && exit 1
推荐阅读
- docker - 如何正确连接docker中的工作节点?
- ios - 将数据保存在特定用户 ID iOS - Alamofire, Json
- azure - 在 Microsoft Azure 中托管的网站上使用 Google Analytics
- angular - Angular 和 Iframe 不会重定向正确的窗口
- javascript - 添加事件侦听器后的javascript发出调用函数
- javascript - 当单击按钮移动到另一个 html 并显示层
- javascript - Highcharts series.data 不适合我
- red - compose 和 compose/deep 用于红色的解析规则?
- bash - Bash 脚本回显错误
- php - 如何使用codeigniter在编辑页面显示上传的文件(如doc、img等)