Gitlab-CI 中 only 关键字怎么使用

2021-06-29 10:20:14 +08:00
 css3

期望是:在 master 分支中的 Dockerfile,requirements.txt ,.gitlab-ci.yml 3 个文件中只要有一个发生变化时,就触发 build 这个 stage

但根据以下配置,目前实际触发情况是,所有分支都跑这了个 stage,而且所有提交都触发,看上去这个 only 压根是没有生效,不知道是配置有误还是怎么的,官方文档也是这么配置的,大家帮忙看一下是哪里的问题

# ..gitlab-ci.yml 

.main:
  image: base:latest

stages:
  - build


build_image:
  stage: build
  tags:
    - tag
  extends: .main
  script:
    - docker build -t test:stable .
  only:
    refs:
      - master
    changes:
      - Dockerfile
      - requirements.txt
      - .gitlab-ci.yml

来自官方文档: https://docs.gitlab.com/ee/ci/yaml/#only--except


docker build:
  script: docker build -t my-image:$CI_COMMIT_REF_SLUG .
  only:
    refs:
      - branches
    changes:
      - Dockerfile
      - docker/scripts/*
      - dockerfiles/**/*
      - more_scripts/*.{rb,py,sh}
1317 次点击
所在节点    程序员
9 条回复
KickAssTonight
2021-06-29 16:48:32 +08:00
only: [ branches ]

only: [ master ]
KickAssTonight
2021-06-29 16:50:30 +08:00
@KickAssTonight 这个语法并不是最新版的哈
css3
2021-06-29 17:19:57 +08:00
@KickAssTonight 老哥,这没区别啊,branches 是固定写法,还是泛指分支名称?
suyingtao
2021-06-29 17:43:29 +08:00
only:
changes:
- Dockerfile
- requirements.txt
- .gitlab-ci.yml
variables:
- $CI_COMMIT_REF_NAME == "master"
KickAssTonight
2021-06-30 09:34:52 +08:00
branches 应该是被当做关键字来处理了,表示所有分支,如果是写 master 或者 feature/xxx 这样的,就是指特定的分支
wengych
2021-06-30 17:32:50 +08:00
现在最近新的语法更加推荐使用 rules 关键字来定义规则.
css3
2021-06-30 18:02:16 +08:00
@KickAssTonight 那这跟我的一样的逻辑啊,无效啊
css3
2021-06-30 18:03:00 +08:00
@wengych 放弃 only 采用了 rules 了
css3
2021-06-30 18:03:45 +08:00
@suyingtao 感谢老哥热心解答,放弃使用 only 了,采用了 rules

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/786400

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX