从 Jenkins Ci 服务迁移到 gitlab-ci.yml
Posted
技术标签:
【中文标题】从 Jenkins Ci 服务迁移到 gitlab-ci.yml【英文标题】:Migrating from Jenkins Ci Service to 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/17948GitLab merge behavior - keep file from branch
【问题讨论】:
你可以合并它,但使用except: - branch-name
排除发布分支
这是一个简单的解决方案,可能会奏效,按照你的引导,我正在阅读规则 docs.gitlab.com/ee/ci/yaml/#rules(我使用的是 12.3 版)也许这会更好
【参考方案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-*
【讨论】:
以上是关于从 Jenkins Ci 服务迁移到 gitlab-ci.yml的主要内容,如果未能解决你的问题,请参考以下文章
[ci] 构建触发器,实现当gitlab有push动作时候,jenkins自动拉代码.
Jenkins + Gitlab + harbor + Kubernetes实现CI/CD
Jenkins + Gitlab + harbor + Kubernetes实现CI/CD
Linux云计算 --中国三大电商大厂都在使用的《 GitLab与Jenkins结合构建持续集成(CI)环境》是如何排列