这是我的 gitlab ci 配置。在构建阶段,应用程序在文件夹中构建dist,该文件夹存储为工件。下一个部署阶段是运行部署子管道的触发器。
但dist不会为子管道提取工件,因此子作业失败。
dist子作业中的工件?.gitlab-ci.yml
stages:
- build
- deployment
build:
stage: build
cache:
key: ${CI_COMMIT_REF_SLUG}
policy: pull
paths:
- node_modules/
artifacts:
when: always
paths:
- deployment.yml
- dist/
script:
- node ./build-app.js # creates dist folder
- node ./generate-pipeline.js # generates deployment.yml
trigger-deploy:
stage: deployment
trigger:
include:
- artifact: deployment.yml
job: build
Run Code Online (Sandbox Code Playgroud)
部署.yml
stages:
- deploy
app1-deploy:
stage: deploy
script:
- ls dist # fails, as dist folder is not existing
Run Code Online (Sandbox Code Playgroud)
San*_*ani 11
我们可以在子管道作业中定义以从父管道作业中读取工件。
需要的第一个更改是在触发子管道时定义 PARENT_PIPELINE_ID
variables:
PARENT_PIPELINE_ID: $CI_PIPELINE_ID
Run Code Online (Sandbox Code Playgroud)
所以,你的代码将更改为
trigger-deploy:
stage: deployment
trigger:
include:
- artifact: deployment.yml
job: build
variables:
PARENT_PIPELINE_ID: $CI_PIPELINE_ID
Run Code Online (Sandbox Code Playgroud)
现在在子管道中,您必须使用父管道 ID 和生成所需工件的作业。
这可以通过在子管道中添加以下内容来完成
needs:
- pipeline: $PARENT_PIPELINE_ID
job: build
Run Code Online (Sandbox Code Playgroud)
因此,您的代码更改为
stages:
- deploy
app1-deploy:
stage: deploy
script:
- ls dist # fails, as dist folder is not existing
needs:
- pipeline: $PARENT_PIPELINE_ID
job: build
Run Code Online (Sandbox Code Playgroud)
请参阅 GitLab 文档:https://docs.gitlab.com/ee/ci/yaml/#needspipelinejob
| 归档时间: |
|
| 查看次数: |
10855 次 |
| 最近记录: |