如何排除 gitlab-ci 工件中除一个文件之外的所有文件

Aks*_*hah 8 gitlab gitlab-ci

我有一个像这样的文件夹结构

foo/bar/lorem/a.txt
foo/bar/lorem/b.txt
foo/bar/lorem/c.ext
foo/bar/ipsum/p.txt
foo/bar/ipsum/q.ext
Run Code Online (Sandbox Code Playgroud)

在 GitLab CI 的 yml 中,artifacts我想包含所有内容foo/bar,exclude *.txt但包含b.txt

GitLab CI 工件参考指出:

可以使用遵循glob模式和 golang 的filepath.Match的通配符。

尝试1:

job1:
  artifacts:
    paths:
      - foo/bar/
      - foo/bar/lorem/b.txt
    exclude:
      - foo/bar/**/*.txt
Run Code Online (Sandbox Code Playgroud)

尝试2:

job1:
  artifacts:
    paths:
      - foo/bar/
    exclude:
      - foo/bar/**/!(b).txt
Run Code Online (Sandbox Code Playgroud)

预期输出:

foo/bar/lorem/b.txt
foo/bar/lorem/c.ext
foo/bar/ipsum/q.ext
Run Code Online (Sandbox Code Playgroud)

我使用什么paths和组合来实现这一目标?exclude

bur*_*vyg 4

你可以这样做:

job1:
  artifacts:
    paths:
      - foo/bar/lorem/b.txt
      - foo/bar/*/*.ext
Run Code Online (Sandbox Code Playgroud)