当且仅当存储库的特定目录中的文件已更改时,我才想在.gitlab-ci.yaml上运行特定作业。可以使用gilab的ci / cd工具来做到这一点吗?或者只是运行自定义的构建脚本会更容易吗?
答案 0 :(得分:1)
您可以执行以下操作:
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
答案 1 :(得分:1)
现在可以了:
rules:
- changes:
- package.json
- yarn.lock
- exists:
- node_modules
when: never
- when: always
您可以检查文件更改或检查是否存在。 Rules Documentation。
答案 2 :(得分:0)
尚不可能,请参见https://gitlab.com/gitlab-org/gitlab-ce/issues/19232
另一方面,如果您准备CI的自定义脚本,则可以根据修改的文件/路径来限制CI的操作。
答案 3 :(得分:0)
更改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 build作业,前提是其中一个提交包含对以下任一更改的更改:
您可以在documentation
中阅读更多内容