你能在 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