如何排除 gitlab-ci.yml 更改触发作业

     2023-02-19     301

关键词:

【中文标题】如何排除 gitlab-ci.yml 更改触发作业【英文标题】:How to exclude gitlab-ci.yml changes from triggering a job 【发布时间】:2021-12-09 07:29:48 【问题描述】:

我无法找到解决方案来解决如何忽略 .gitlab-ci.yml 中所做的更改以触发工作。到目前为止,我已经尝试了以下选项:

except:
  changes:
  - .gitlab-ci.yml

only
 - Branch A

但每次我在 .gitlab.ci-yml 文件中进行更改时,Stage B 的作业都会添加到管道中并显示为已跳过。

以下是 .gitlab-ci.yml 中定义的作业。你有什么建议吗?

我不希望在以下情况下将阶段 B 作业添加到管道中:

i) 对 .gitlab-ci.yml 进行推送(手动更改文件或 git push 命令) ii) .gitlab-ci.yml 的任何合并请求

stages:
 - A
 - B
 
Stage A:
  stage: A
  script:
    - echo "TEST"
  rules:
    - if: '$CI_COMMIT_TAG =~ /^\d+\.\d+\.DEV\d+/'
  tags:
    - runner
    
Stage B:
  stage: B
  script:
    - echo "TEST"
  when: manual
  tags:
    - runner

【问题讨论】:

添加 'except' 规则后的输出是什么? 除了规则没有被调用,并且作业被添加到管道中。 【参考方案1】:

使用此设置,如果修改了 .gitlab-ci.yml,则不会添加 Stage B

stages:
 - A
 - B

Stage A:
  stage: A
  script:
    - echo "Stage A"
  tags:
    - runner

Stage B:
  stage: B
  script:
    - echo "Stage B"
  rules:
    - changes:
      - ".gitlab-ci.yml"
      when: never
    - when: manual
  tags:
   - runner

否则Stage B 会显示在管道中并且可以手动运行。使用 GitLab CI CE 14.1.0 测试。

【讨论】:

但它是否仍会显示其他文件推送/合并更改的手动按钮选项? 是的,正如我编写和测试的那样,如果修改了至少一个文件但.gitlab-ci.yml,则会显示手动作业Stage B【参考方案2】:

您可以尝试使用workflow 规则吗?它应该确定是否创建了管道。

P.S: 有人抱怨 a couple of years ago 在异常发生后无法激活手动作业,但看起来这是一个错误。我找不到帖子中提到的问题

编辑:

此 conf 会跳过任何更改 README.md.gitlab-ci.yml 的提交:

workflow:
    rules:
        - if:
          changes: 
            - README.md
            - .gitlab-ci.yml
          when: never

【讨论】:

但工作仍将被添加到管道中以供其他文件推送/合并更改?请指教。 对于不修改changes 中列出的任何文件的每次推送,是的。

如何在 gitlab 中触发特定作业

...中的所有作业都是触发事件,尽管只有其中一个标记为.gitlab-ci.yml:工作1:脚本:-回声“你好世界 查看详情

.gitlab-ci.yml配置参数

参考技术A由docs.gitlab.com中摘:使用stages定义包含的工作组阶段。stages是为管道全局定义的。stage在作业中使用以定义作业属于哪个阶段。如果没有定义stages,默认的流水线阶段是:stages项目的顺序定义了作业的执行顺序:1.所有... 查看详情

gitlab-ci.yml、before_script 和 artifact

】gitlab-ci.yml、before_script和artifact【英文标题】:gitlab-ci.yml,before_scriptandartifact【发布时间】:2019-03-1419:34:55【问题描述】:在gitlab-ci.ymldocumentation中,它说before_script用于定义应该在所有命令之前运行的命令作业,包括部署作业,... 查看详情

Gitlab-CI:测试作业失败

】Gitlab-CI:测试作业失败【英文标题】:Gitlab-CI:TestJobisfailing【发布时间】:2018-06-0516:56:22【问题描述】:我目前正在编写一个.gitlab-ci.yml文件来自动化我的应用程序的构建、测试、打包和部署,但是构建作业正在通过,但其他... 查看详情

为合并请求触发的管道运行应用 GitLab CI/CD 管道更改

...5:40:45【问题描述】:我通过一个新项目的repo根目录中的.gitlab-ci.yml文件在GitLab中创建了一个新的CD/CD管道,其作业结构如下:...test:stage:test 查看详情

.gitlab-ci.yml配置文件详解

.gitlab-ci.yml配置文件详解_u014265398的博客-CSDN博客_gitlab-ci.yml详细配置值是否必须描述script必须定义由Runner执行的shell脚本或命令extends非必须定义此作业将继承的配置条目image非必须需要使用的docker镜像,请查阅该文档services非... 查看详情

gitlab 8.2.1,如何在 .gitlab-ci.yml 中使用缓存

】gitlab8.2.1,如何在.gitlab-ci.yml中使用缓存【英文标题】:gitlab8.2.1,Howtousecachein.gitlab-ci.yml【发布时间】:2016-02-2915:39:26【问题描述】:我正在尝试在.gitlab-ci.yml(http://doc.gitlab.com/ce/ci/yaml/README.html#cache)中使用“缓存”。我的gitlab版... 查看详情

如何创建一个工件,以便它可以在 .gitlab-ci.yml 中下载

】如何创建一个工件,以便它可以在.gitlab-ci.yml中下载【英文标题】:HowdoIcreateanartifactsoitwillbeavailablefordownloadin.gitlab-ci.yml【发布时间】:2019-11-0108:54:21【问题描述】:我有一个GitLabci管道,但我不知道如何让它在构建阶段生成一... 查看详情

使用 gitlab-ci.yml 文件的代码覆盖率报告

】使用gitlab-ci.yml文件的代码覆盖率报告【英文标题】:Codecoveragereportusinggitlab-ci.ymlfile【发布时间】:2018-06-1011:54:38【问题描述】:我需要在Gitlab中查看javamaven项目的代码覆盖率报告。根据this、this和其他一些来源:我在pom.xml的... 查看详情

如何让 gitlab-runner 从指定文件中读取而不是 .gitlab-ci.yml?

】如何让gitlab-runner从指定文件中读取而不是.gitlab-ci.yml?【英文标题】:Howtomakegitlab-runnerreadfromaspecifiedfileinstead.gitlab-ci.yml?【发布时间】:2018-02-2315:04:57【问题描述】:我在本地使用gitlab-runner,在包含.gitlab-ci.yml的存储库的根目... 查看详情

如何排除对管道 yaml 文件的更改以触发构建 i azure devops?

】如何排除对管道yaml文件的更改以触发构建iazuredevops?【英文标题】:HowcanIexcludechangestothepipelineyamlfiletotriggerabuildiazuredevops?【发布时间】:2020-09-2203:06:35【问题描述】:使用Azuredevops和piplinesyaml文件。开发分支上有一个触发器... 查看详情

我们如何在 gitlab-ci.yml 中使用“变量”关键字?

】我们如何在gitlab-ci.yml中使用“变量”关键字?【英文标题】:Howdoweusethe\'variables\'keywordingitlab-ci.yml?【发布时间】:2015-10-2822:59:59【问题描述】:我正在尝试使用GitlabCI文档中记录的variables:关键字:发件人:https://docs.gitlab.com/c... 查看详情

如何在 .gitlab-ci.yml 中指定通配符工件子目录?

】如何在.gitlab-ci.yml中指定通配符工件子目录?【英文标题】:Howtospecifywildcardartifactssubdirectoriesin.gitlab-ci.yml?【发布时间】:2016-10-2620:45:40【问题描述】:我正在使用GitLabCI构建C#解决方案,并尝试将一些构建工件从一个构建阶段... 查看详情

在项目之间共享 gitlab-ci.yml

】在项目之间共享gitlab-ci.yml【英文标题】:Sharegitlab-ci.ymlbetweenprojects【发布时间】:2018-05-2704:31:03【问题描述】:我们正在考虑将ci从jenkins转移到gitlab。我们有几个项目具有相同的构建工作流程。现在我们使用一个共享库,其... 查看详情

如何从 Jira 中的状态更改触发 Jenkins 作业

】如何从Jira中的状态更改触发Jenkins作业【英文标题】:HowtotriggeraJenkinsjobfromastatuschangeinJira【发布时间】:2015-07-1620:09:56【问题描述】:我一直在寻找一种方法来从状态或Jira更改状态中的票证/故事中触发Jenkins作业。举一个更详... 查看详情

如何从 .net 项目文件中获取 gitlab-ci.yml 文件中的项目版本?

】如何从.net项目文件中获取gitlab-ci.yml文件中的项目版本?【英文标题】:Howtogetprojectversioningitlab-ci.ymlfilefromthe.netprojectfile?【发布时间】:2021-07-2516:20:13【问题描述】:我正在将我的项目从Jenkins转换为GitLabCI。我正在从.gitlab-ci.y... 查看详情

将脚本附加到一个阶段 .gitlab-ci.yml

】将脚本附加到一个阶段.gitlab-ci.yml【英文标题】:Appendthescriptononestage.gitlab-ci.yml【发布时间】:2020-09-2314:52:14【问题描述】:如何在.gitlab-ci.yml文件的一个stage中追加script部分?例如在这个例子中stages:-stage1_name.a:script:-echo"String1... 查看详情

如何使用 gitlab-ci.yml 在 gitlab 中更新 JSON 文件的内容?

】如何使用gitlab-ci.yml在gitlab中更新JSON文件的内容?【英文标题】:HowtoupdatecontentofJSONfileingitlabusinggitlab-ci.yml?【发布时间】:2021-11-1323:16:45【问题描述】:我正在为特定版本的浏览器构建docker映像并将其推送到AWSecr。运行dockerpus... 查看详情