我有一个 2 阶段、3 个作业的 CI 工作流程。这是我的 .yaml 文件:
before_script:
- $env:PATH = "C:\\Program Files (x86)\\CMake\\bin;$env:PATH"
- $env:PATH = "C:\GitLab-Runner\\MinGW\\bin;$env:PATH"
- $env:PATH = "C:\\Program Files\\myAPP\\bin;$env:PATH"
stages:
- project_build
- project_analysis
project_build:
stage: project_build
tags:
- myapp
script:
- mkdir build
- cd build
- cmake -G "MinGW Makefiles" ..
- cmake --build .
artifacts:
paths:
- build/
expire_in: 1 days
project_analysis_phase_1:
stage: project_analysis
tags:
- myapp
script:
- mkdir my_application
- myapp -prog "gitlab_demo" -author "xxxxx" -output-project "my_application/my_project" -output-options-file "my_application/my_gitlab_demo_options.txt" cmake --build "build" --clean-first
artifacts:
paths:
- my_application/
expire_in: 1 days
project_analysis_phase_2:
stage: project_analysis
tags:
- myapp
script:
- ls
#- cd my_application <= Error occurs here
dependencies:
- project_analysis_phase_1
发生错误,提示“my_application”不存在。我对每个作业做了一些调试,我发现:
创建作业“project_build”-> build/artifact 后,我可以在 GitLab 上看到它,还在带有 GirLab 扩展的 VSC 上本地运行作业,并且它包含正确的内容
在作业“project_analysis_phase_1”开始时,找到构建工件,因此脚本可以在此作业中执行而不会出现错误。在此作业结束时,my_application/ 工件将被保存(再次在 GitLab 和 VSC 上确认)
第三个作业“project_analysis_phase_2”启动时出现问题。 build/ 和 my_appliction/ 工件都被清除,并且
ls
命令确认了相同的情况。
我做错了什么?我的理解是,一旦创建了工件,在另一个作业开始之前就不会清除它(除非有办法做到这一点),并且任何阶段/作业都可以重用创建的工件。是我的理解错误还是我的脚本错误?
默认情况下,工件都会传递给其他作业,而不使用依赖项关键字。也许尝试删除它,看看是否可以看到您正在寻找的工件。
看看 gitlab 文档 - 希望它有帮助:) gitlab 依赖项