【问题标题】:GitLab only builds for specific tag namesGitLab 仅针对特定标签名称构建
【发布时间】:2017-12-03 16:26:55
【问题描述】:

有没有办法指示管道只对匹配正则表达式的某些标签执行一个步骤?

我希望它在我以 1.2.3 格式推送标签时进行部署(例如)。有没有办法做到这一点?

【问题讨论】:

    标签: gitlab-ci


    【解决方案1】:

    这应该只对不是与给定正则表达式匹配的分支的引用运行。

       job:
          only:
            - /^(\d+\.)?(\d+\.)?(\*|\d+)$/
          except:
            - branches
    

    【讨论】:

    • 感谢您对 except 的建议。不幸的是,您错过了正则表达式开头和结尾的强制斜线。 @见docs.gitlab.com/ee/ci/yaml/#only-and-except-simplified
    • 这部分正则表达式很奇怪:(\*|\d+)。将文字星号放在 git 标签中充其量是非常规的。
    【解决方案2】:

    是的,您可以使用 only 选项执行此操作:

    job:
      # Use regexp
      only:
        - /^issue-.*$/
    
    
    job:
      # Use special keywords
      only:
        - tags
        - triggers
        - schedules
    

    only/except (basic)

    【讨论】:

    • 当我刚刚研究了 gitlab 的一些 CD/CI 功能时,我来到这里。当心一个“功能”:only 不能结合正则表达式和特殊词,所以只有: - /^issue-.*$/ - 标签将触发任何标签 任何标签、分支、 ...以“问题-”开头。据我了解,没有办法限制正则表达式仅用于标签或分支(如果我错了,请纠正我 - 我真的希望有人这样做!)。
    • 不太确定.. 把它和except: [tags]结合起来怎么样
    • 你可能的意思是 - 将它与except: -branches结合起来
    【解决方案3】:

    你也可以使用rules:

    job:
      script: echo "Hello, World!"
      rules:
        - if: '$CI_COMMIT_TAG =~ /^\d+\.\d+\.\d+$/'
    

    【讨论】:

    • 作为only and except are not being actively developed. rules is the preferred keyword to control when to add jobs to pipelines. (source) 现在看来rules 是正确的选择。
    猜你喜欢
    • 1970-01-01
    • 2022-09-23
    • 2021-05-07
    • 2020-02-23
    • 1970-01-01
    • 2020-05-13
    • 1970-01-01
    • 2022-10-13
    • 1970-01-01
    相关资源
    最近更新 更多