【问题标题】:Migrating from Jenkins Ci Service to gitlab-ci.yml从 Jenkins Ci 服务迁移到 gitlab-ci.yml
【发布时间】:2020-09-30 03:45:08
【问题描述】:

到目前为止,我们一直在使用 Jenkins 在任何基于 Jenkins CI service 的功能分支上运行我们的构建。我们目前正在试验基于 gitlab-ci.yml 的管道。 作为起点,我想将此限制为仅由少数开发人员创建的特定分支作为 beta 测试。

我试图避免将 .gitlab-ci.yml 从功能分支合并到基于 .gitattributes 和合并策略的发布分支(请参阅here),但这迫使我在发布分支。结果 gitlab 强迫我有一些有效的 yml 内容(我希望我至少可以保持它为空)否则我会得到无效的 yml 失败。

关于将 .gitlab-ci.yml 仅保留在功能分支上并避免手动步骤以避免合并 .gitlab-ci.yml 文件的任何建议,直到我们将其用于所有分支?

类似问题:
https://forum.gitlab.com/t/how-to-ignore-gitlab-ci-yml-file-when-merging-the-branches/17948
GitLab merge behavior - keep file from branch

【问题讨论】:

  • 你可以合并它,但使用except: - branch-name排除发布分支
  • 这是一个简单的解决方案,可能会奏效,按照你的引导,我正在阅读规则 docs.gitlab.com/ee/ci/yaml/#rules(我使用的是 12.3 版)也许这会更好

标签: jenkins gitlab gitlab-ci git-merge


【解决方案1】:

Bertrand 响应之后,只要管道仅在选定的合并请求上执行,我实际上并不关心在发布分支中有.gitlab-ci.yml。我更改了我的.gitlab-ci.yml 以包含一条规则。 根据下面的逻辑,管道将仅在合并请求时执行,分支名称格式为 FTR-ddddd-g

image: maven-mta:latest
variables:
  GIT_DEPTH: 0
Unit tests and Sonar Check:
 script:
    - mvn clean verify sonar:sonar
  artifacts:
    reports:
      junit:
        - "*/target/surefire-reports/TEST-*.xml"
  allow_failure: false
  rules:
    - if: '$CI_MERGE_REQUEST_SOURCE_BRANCH_NAME =~ /^FTR-\d+-gl/ && $CI_MERGE_REQUEST_TARGET_BRANCH_NAME == "master"'
      when: always
  tags:
  - sonarqube
  - docker

在满足上述标准的合并请求上,我得到了一个意想不到的副作用(我实际上很喜欢 Jenkins CI 服务未运行)。 不幸的是,我没有找到任何支持这种行为的文档,以下page 建议在使用 gitlab ci 时禁用 Jenkins CI。

【讨论】:

    【解决方案2】:

    “作为一个起点,我想只针对特定的 分支”

    你可以使用唯一的标签。

      only:
        - feature-*
    

    【讨论】:

      猜你喜欢
      • 2021-03-21
      • 1970-01-01
      • 2015-10-23
      • 1970-01-01
      • 2017-07-22
      • 2021-05-06
      • 2020-10-08
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多