我希望只有在存储库中特定目录中的文件发生更改时,才能在.gitlab-ci.yaml
上运行特定的作业。GitLab的CI/CD工具是否有此功能,还是最好运行自定义构建脚本?
我希望只有在存储库中特定目录中的文件发生更改时,才能在.gitlab-ci.yaml
上运行特定的作业。GitLab的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 12.3版本起,现在可以实现此功能:
rules:
- changes:
- package.json
- yarn.lock
- exists:
- node_modules
when: never
- when: always
您可以检查文件更改或检查文件是否存在。规则文档
您可以使用rules:changes
关键字来实现此操作:
rules:
- changes:
- directory/**/*
您可以像这样操作:
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执行的操作。
only
is now considered obsolete. For more information, please refer to the following link: https://docs.gitlab.com/ee/ci/jobs/job_control.html#specify-when-jobs-run-with-only-and-except - undefinedonly
已经过时了。请参考https://docs.gitlab.com/ee/ci/jobs/job_control.html#specify-when-jobs-run-with-only-and-except - n.podbielski