了解 Gitlab CI 标签
Posted
技术标签:
【中文标题】了解 Gitlab CI 标签【英文标题】:Understanding Gitlab CI tags 【发布时间】:2017-09-24 03:20:01 【问题描述】:我已经阅读了文档,一些文章,你可能会说我笨,但这是我第一次使用这样的概念。
我已经用标签“testing”注册了跑步者 在 gitlab 中创建标签“测试” 将此跑步者与特定项目绑定 我还添加了相同的标签,例如在我的本地仓库中“测试”。但是运行我的作业究竟是如何依赖这些标签的?所有这些操作都是必要的吗?如果我将新代码推送到 repo,就我测试而言,*.yml 文件无论如何都会执行。
如果我只想在提交中定义版本时运行构建呢?
IDK...
git commit --tags "v. 2.0" -m "this is version 2.0" (probably not right)
但当然应该是通用的,所以我不必总是告诉,使用哪个标签来触发跑步者,但例如让他识别数值。
如您所见,我很困惑...如果您能详细说明标签的工作原理,以便我能够理解这个概念,我将不胜感激。
【问题讨论】:
【参考方案1】:GitLab CI 的标签和 Git 的标签是两个不同的概念。
当您编写.gitlab-ci.yml
时,您可以使用标签testing
指定一些工作。如果与此标签关联的跑步者可用,它将接手。
在 Git 中,在您的存储库中,标签用于标记特定的提交。它通常用于标记一个版本。
当您在 GitLab CI 中使用标签(在 Git 中)启动管道时,这两个概念可能会混淆。在您的.gitlab-ci.yml
中,您可以使用tags
指定only
部分。
请参阅GitLab documentation for tags 和only。
一个例子是当你用 git 推送一个标签时:
$ git tag -a 1.0.0 -m "1.0.0"
$ git push origin 1.0.0
.gitlab-ci.yml
的工作是这样的:
compile:
stage: build
only: [tags]
script:
- echo Working...
tags: [testing]
将开始使用带有testing
标签的跑步者。
据我了解,您的步骤中缺少的是为您的跑步者指定标签testing
。为此,请在 GitLab 中进入您的项目。旁边的
Wiki,点击设置。转到 CI/CD 管道,您就有了跑步者。在其 Guid 旁边,单击钢笔图标。在下一页可以修改标签。
【讨论】:
创建runner时需要指定tag吗? 是的,这可以在您注册时在跑步者一侧完成。之后,如果要编辑运行器的配置(包括标签),则需要对项目的权限,并且更改是在 gitlab 服务器端完成的。在列出该项目的跑步者的页面中,您有一个小的编辑图标(铅笔),可将您带到可以编辑标签的页面。 我使用 gitlab runner 来构建 DEB 文件,我最终使用了这些标签 - 它也接受正则表达式:标签: - /^.*build_v\..*$/ 其中甚至分配gitlab-runner 本身必须配置为捕获这种正则表达式类型的 TAG。然后我使用版本号来构建我的包。因此,如果我提交了一个带有“build_vX.Y.Z”的标签,那么跑步者就会加入。【参考方案2】:这些操作都需要吗?
不,如果你只有一个跑步者,或者你有很多跑步者但不关心哪个跑步者负责你的工作,那么标记跑步者/工作是没有意义的。
那么,如果我只想在我在 提交?
job:
only:
- tags
【讨论】:
【参考方案3】:Gitlab-tag:用于为您的工作识别特定的跑步者。 ref Git-tag:正在对提交进行版本控制。 ref
推送一个新的仓库
通常会通过 git 客户端完成,例如 pycharm(当前示例) 创建/更新代码 提交 为提交设置一个 git-tag 与标签一起推送到远程 检查客户端应用程序中的日志,例如在 pycharm 中,如下所示: 现在在 gitlab->Repo->tags 中检查相同的内容 在 gitlab 作业中,同样可以使用 export 进行审核,作业结果如下:【讨论】:
以上是关于了解 Gitlab CI 标签的主要内容,如果未能解决你的问题,请参考以下文章