了解 Gitlab CI 标签

Understanding Gitlab CI tags

我已经阅读了文档和一些文章,您可能会说我愚蠢,但这是我第一次使用这样的概念。

但是 运行我的工作究竟是如何依赖于这些标签的?所有这些操作都是必要的吗?如果我将新代码推送到 repo,*.yml 文件会根据我的测试执行。

那么如果我想 运行 仅在我在提交中定义一个版本时构建怎么办?

IDK...

   git commit --tags "v. 2.0" -m "this is version 2.0" (probably not right)

但当然应该是通用的,所以我不必总是告诉,用哪个标签来触发运行ner,但是比如让他识别数值。

如您所见,我很困惑...如果您能详细说明标签的具体工作原理,那么我将能够理解这个概念,我将不胜感激。

Git实验室CI的标签和Git的标签是两个不同的概念。

当你写你的.gitlab-ci.yml时,你可以用标签testing指定一些工作。如果有关联此标签的跑步者可用,它将接管工作。

在 Git 中,在您的存储库中,标签用于标记特定的提交。它通常用于标记一个版本。

当您使用标签(在 Git 中)在 GitLab CI 中启动管道时,这两个概念可能会混淆。在您的 .gitlab-ci.yml 中,您可以将 only 部分指定为 tags

参考GitLab documentation for tags and 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 Pipelines 那里有你的跑步者。在其 Guid 旁边,单击笔图标。在下一页可以修改标签。

Are all these operations necessary?

不,如果您只有一个跑步者,或者如果您有很多但不在乎哪个跑步者负责您的工作,那么标记 runners/jobs.

就没有意义了

So what if I want to run build only when I define a version in a commit?

job:
  only:
    - tags

Gitlab-tag:用于为您的工作识别特定的跑步者。 ref Git-tag:正在对提交进行版本控制。 ref

推送一个新的 repo

  • 通常会通过 git 客户端完成,例如 pycharm(当前示例)
  • create/update代码
  • 提交
  • 为提交设置一个 git 标签
  • 与标签一起推送到远程
  • 检查客户端应用程序中的日志,例如在 pycharm 中,如下所示:
  • 现在在 gitlab->Repo->tags
  • 中检查相同内容
  • 在 gitlab 作业中可以使用 export 查看相同的作业结果如下: