【问题标题】:Gitlab ci run job on master with release tag onlyGitlab ci 仅在带有发布标签的主服务器上运行作业
【发布时间】:2020-06-28 12:36:11
【问题描述】:

我只想在设置了发布标签的情况下在主分支上构建 docker 镜像。这是我的.gitlab.ci

build:
  rules:
    - if: '$CI_COMMIT_TAG != null && $CI_COMMIT_REF_NAME == "master"'
  script:
    - echo "Building $IMAGE:${CI_COMMIT_TAG}"

这不起作用,我合并到 master 和 release 标签,但构建工作甚至没有开始。

我也尝试了only 部分:

build:
  only:
    - master
    - tags
  script:
    - echo "Building $IMAGE:${CI_COMMIT_TAG}"

这个每次都会运行,即使CI_COMMIT_TAG 不存在。有没有办法,仅当CI_COMMIT_TAG 存在于master 分支上时,如何强制运行作业?

【问题讨论】:

    标签: gitlab-ci


    【解决方案1】:

    到目前为止,gitlab 中没有适当的内置解决方案来解决这个问题。 为了跟踪正确解决方案的开发并更新我创建的工作解决方法:Gitlab CI: Run Pipeline job only for tagged commits that exist on protected branches

    【讨论】:

      【解决方案2】:

      “deploy-latest”作业仅在分支为 master 且已被标记的情况下运行。

      deploy-latest:
        tags: [shell]
        stage: deploy
        script:
          - echo "whatever"
        only:
          - tags && master
      
      

      【讨论】:

        【解决方案3】:

        build:
          only:
            - tags
        

        只有在设置(或推送)标签时才能运行作业。如果你有 master ,它会在 master 上的每次提交上运行。如果没有master,它只会在设置标签后运行。

        【讨论】:

        • 谢谢。我不想每次都在 master 上运行它。只有当我标记它时。而且,不想在其他分支上启用标签。
        • 如果您不希望它每次都在 master 上运行,则不应将其添加到 only 部分。你可以在这里查看文档:docs.gitlab.com/ee/ci/yaml/#onlyexcept-basic
        • 我试图只在它的主分支和标签时运行它。这意味着,如果我发布标记 0.1.0,而不是将某些内容合并到 master,我现在确实想在每次合并某些内容时再次使用标记 0.1.0 运行管道。我想合并以掌握一些错误修复或功能,而不是制作新版本 0.1.2。我使用这个标签作为 docker 镜像标签。
        • 使用 tag 它仅在标记上运行。不是在合并或做其他事情时。
        • 我知道,这就是问题所在。标记时我只需要在master上运行它。
        猜你喜欢
        • 2022-01-03
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-12-17
        • 1970-01-01
        • 2015-03-17
        • 2020-10-08
        相关资源
        最近更新 更多