了解 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 标签的主要内容,如果未能解决你的问题,请参考以下文章

Gitlab-CI 中存在已删除的标签

GitLab CI - 添加标签时避免构建

如何使用标签 API 在 Gitlab CI 中创建标签?

GITLAB CI 管道,仅使用 git 标签运行作业

仅当 git 标签不以字符串“Release”或“Test”开头时才在 Gitlab CI 中启动管道

gitlab 的 CI/CD 配置管理