你能在 gitlab-ci.yml 的目录中间使用通配符吗
can you use wildcards in the middle of directories in gitlab-ci.yml
根据:https://docs.gitlab.com/ee/ci/yaml/#onlychanges--exceptchanges,您可以列出所有子目录的通配符:
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}
- "**/*.json"
但是如果你想包含多个目录呢?说我有这样的文件夹结构:
server-a-files/**/*
server-b-files/**/*
server-c-files/**/*
等这样的东西行得通吗?
docker build:
script: docker build -t my-image:$CI_COMMIT_REF_SLUG .
only:
refs:
- branches
changes:
- server-*-files/**/*
或者我需要做这样的事情:
docker build:
script: docker build -t my-image:$CI_COMMIT_REF_SLUG .
only:
refs:
- branches
changes:
- server-{a,b,c}-files/**/*
谢谢!
是的,您可以在路径段的中间使用通配符。 GitLab 使用 Ruby 的 fnmatch 来测试 changes:
.
的 glob 模式
irb(main):002:0> File.fnmatch('server-*-files/**/*', 'server-a-files/foo/bar')
=> true
根据:https://docs.gitlab.com/ee/ci/yaml/#onlychanges--exceptchanges,您可以列出所有子目录的通配符:
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}
- "**/*.json"
但是如果你想包含多个目录呢?说我有这样的文件夹结构:
server-a-files/**/*
server-b-files/**/*
server-c-files/**/*
等这样的东西行得通吗?
docker build:
script: docker build -t my-image:$CI_COMMIT_REF_SLUG .
only:
refs:
- branches
changes:
- server-*-files/**/*
或者我需要做这样的事情:
docker build:
script: docker build -t my-image:$CI_COMMIT_REF_SLUG .
only:
refs:
- branches
changes:
- server-{a,b,c}-files/**/*
谢谢!
是的,您可以在路径段的中间使用通配符。 GitLab 使用 Ruby 的 fnmatch 来测试 changes:
.
irb(main):002:0> File.fnmatch('server-*-files/**/*', 'server-a-files/foo/bar')
=> true