簡體   English   中英

GitLab CI/CD:僅在特定目錄中的文件發生更改時運行作業

[英]GitLab CI/CD: Run jobs only when files in a specific directory have changed

當且僅當存儲庫特定目錄中的文件發生更改時,我想在.gitlab-ci.yaml上運行特定作業。 有沒有辦法使用 gilab 的 ci/cd 工具來做到這一點,或者只運行自定義構建腳本會更容易嗎?

GitLab 11.4 中引入的更改策略。

例如:

docker build:
  script: docker build -t my-image:$CI_COMMIT_REF_SLUG .
  only:
    changes:
      - Dockerfile
      - docker/scripts/*
      - dockerfiles/**/*
      - more_scripts/*.{rb,py,sh}

在上面的場景中,如果您要將 GitLab 的多個提交推送到現有分支,GitLab 會創建並觸發 docker 構建作業,前提是其中一個提交包含對以下任一方面的更改:

  • Dockerfile 文件。
  • docker/scripts/ 目錄中的任何文件。
  • dockerfiles 目錄中的任何文件和子目錄。
  • more_scripts 目錄中帶有 rb、py、sh 擴展名的任何文件。

您可以在文檔中閱讀更多內容

你可以這樣做:

trigger_documentation:
  image: alpine:3.8
  stage: trigger_documentation
  script:
    - apk update && apk add git curl bash
    - |
      if git diff --name-only --diff-filter=ADMR @~..@ |grep ^doc/; then
            echo "triggering..."
      fi

尚不可能,請參閱https://gitlab.com/gitlab-org/gitlab-ce/issues/19232

另一方面,如果您為 CI 准備自定義腳本,您可以根據修改的文件/路徑來限制 CI 的作用。

這現在是可能的:

rules:
    - changes:
      - package.json
      - yarn.lock
    - exists: 
      - node_modules
      when: never
    - when: always

您可以檢查文件更改或檢查是否存在。 規則文件

您可以使用rules:changes關鍵字:

rules:
  - changes:
      - directory/**/*

請參閱: https ://docs.gitlab.com/ee/ci/yaml/#rules

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM