R C*_*R C 5 gitlab gitlab-ci gitlab-ci-runner
我有一个包含多个项目的单一存储库(不是我的设计选择)。
每个项目都有一个.gitlab-ci.yml设置,用于在“版本”文件更改时运行管道。这很好,因为用户可以签入stage或master(用于热修复),并且创建构建并将其部署到测试环境。
master问题是当用户从to进行合并stage并提交回 to stage(以引入任何修补程序)时。这会导致所有管道运行;即使对于没有实际内容更改的项目也是如此。
如何允许管道从master和/或stage但仅在“版本”文件的内容更改时运行?就像用户更改版本号一样。
这是一个示例.gitlab-ci.yml(我有 5 个,mono-repo 中的每个项目 1 个)
#
# BUILD-AND-TEST - initial build
#
my-project-build-and-test:
stage: build-and-test
script:
- cd $MY_PROJECT_DIR
- dotnet restore
- dotnet build
only:
changes:
- "MyProject/.gitlab-ci.VERSION.yml"
# no needs: here because this is the first step
#
# PUBLISH
#
my-project-publish:
stage: publish
script:
- cd $MY_PROJECT_DIR
- dotnet publish --output $MY_PROJECT_OUTPUT_PATH --configuration Release
only:
changes:
- "MyProject/.gitlab-ci.VERSION.yml"
needs:
- my-project-build-and-test
Run Code Online (Sandbox Code Playgroud)
... 等等 ...
我对 git、GitLab 和 CI/pipelines 还很陌生。任何帮助,将不胜感激!(我对更改 mono-repo 没有什么发言权)
.gitlab-ci.yml仅当文件更改时,以下内容才会运行 test_job version。
test_job:
script: echo hello world
rules:
- changes:
- version
Run Code Online (Sandbox Code Playgroud)
请参阅https://docs.gitlab.com/ee/ci/yaml/#ruleschanges
另请参见 仅运行作业/路径或文件修改除外
| 归档时间: |
|
| 查看次数: |
10001 次 |
| 最近记录: |