每当提高PR 时,我都会使用gitlab-ci运行定义的脚本.gitlab-ci.yml。
我想获取自上次提交以来已修改文件的列表。
用例是在大型代码库中运行特定于文件的集成测试。
Gaj*_*jus 10
如果您不需要知道路径,而只需要在更改特定文件时才运行特定作业,则使用only/changes .gitlab-ci.yml配置,例如
docker build:
script: docker build -t my-image:$CI_COMMIT_REF_SLUG .
only:
changes:
- Dockerfile
- docker/scripts/*
Run Code Online (Sandbox Code Playgroud)
另外,如果您需要获取修改后的脚本的路径,则可以使用gitlab-ci CI_COMMIT_BEFORE_SHA和CI_COMMIT_SHA环境变量,例如
> git diff --name-only $CI_COMMIT_BEFORE_SHA $CI_COMMIT_SHA
src/countries/gb/homemcr.js
src/countries/gb/kinodigital.js
Run Code Online (Sandbox Code Playgroud)
有些人会发现有用的常见用例。提出合并请求时运行作业。具体来说,对目标分支上更改的所有文件运行 lint。
正如答案之一所建议的,我们可以通过CI_MERGE_REQUEST_TARGET_BRANCH_NAME变量(预定义变量列表)获取目标分支名称。我们可以用来git diff --name-only origin/$CI_MERGE_REQUEST_TARGET_BRANCH_NAME获取已更改的文件列表。然后通过 将它们传递给 linter xargs。示例配置可能如下所示。
code_quality:
only:
- merge_requests
script:
- git diff --name-only origin/$CI_MERGE_REQUEST_TARGET_BRANCH_NAME | xargs <LINT_COMMAND_FOR_FILE>
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3470 次 |
| 最近记录: |