gitlab CI如何使用规则语法忽略目录?

时间:2020-07-02 04:52:09

标签: continuous-integration gitlab gitlab-ci

我能够使用以下语法忽略目录和文件更改。

build:
  script: npm run build
  except:
    changes:
      - "*.md"
      - "src/**/*.ts"

使用此配置,build作业将运行,但git更改仅包含*.md目录中的*.ts扩展文件或src文件。他们被忽略了。

但是随后他们弃用了only:changesexcept:changes语法,并警告使用rules语法。不幸的是,我似乎找不到使用这种新语法忽略目录和文件更改的方法。

2 个答案:

答案 0 :(得分:2)

令人惊讶的是,目前这似乎是不可能的——无论是 except/only 还是 rules。这似乎是此请求功能的“最佳”未解决问题:https://gitlab.com/gitlab-org/gitlab/-/issues/198688

我想您只能在检测到相关更改时反转逻辑并启用构建(示例改编自 https://docs.gitlab.com/ee/ci/yaml/#ruleschanges):

job:
  rules:
    - changes:
        - relevant/path/file
      when: on_success
    - changes:
        - path/to/config/file
      when: never
    - when: on_success

答案 1 :(得分:1)

基于documents of rules: changes,看来Protocol Permission scope string -------- ----------------------- IMAP https://outlook.office.com/IMAP.AccessAsUser.All POP https://outlook.office.com/POP.AccessAsUser.All SMTP https://outlook.office.com/SMTP.Send 必须与when: never语法一起使用。如下所示:

rules: changes

如果存储库中更改的路径与上述正则表达式匹配,则该作业将不会添加到任何管道。在其他情况下,作业始终将由管道运行。