代码之家  ›  专栏  ›  技术社区  ›  Evan R.

可以在GITLAB CI目录中间使用通配符。yml

  •  0
  • Evan R.  · 技术社区  · 2 年前

    根据: 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/**/*
    

    谢谢

    1 回复  |  直到 2 年前
        1
  •  1
  •   sytech    2 年前

    是的,您可以在路径段的中间使用通配符。GitLab使用Ruby的 fnmatch 用于测试 changes: .

    irb(main):002:0> File.fnmatch('server-*-files/**/*', 'server-a-files/foo/bar')
    => true