I am facing an issue regarding artifact downloading in multiproject pipelines.
Explanation:
I have three projects (project A, B and C). Project A and B are upstream projects and C is the downstream project.
Project C needs artifacts from both project A and B.
-
When I launch pipeline C (manually or when there is commit), it works fine with no problem. It can download the artifacts from A and B and finishes with success.
-
When C is triggered by B, also it works fine with no issues.
-
But when C is triggered by A, jobs inside pipeline C can’t download artifact from project B. it’s strange as a behaviour. I got this error:
Downloading artifacts for Build_1 (8953475034)...
FATAL: open C:\path\to\Project_B\upload\TEMP\artifacts4164143429: The system cannot find the path specified.
Cleaning up project directory and file based variables
ERROR: Job failed: exit code 1
Here is the pipelines codes (simplified):
Project-A :
stages:
- build
- trigger
build-linux:
stage: build
tags:
- linux
image: artifactory.example.com/repo/gitlab-ci-linux:0.0.1
services:
- name: docker:25.0.5-dind-alpine3.19
script:
- #some script
artifacts:
paths:
- $CI_PROJECT_DIR/out/*
only:
- master
build-windows:
stage: build
tags:
- windows
image:
name: artifactory.example.com/repo/gitlab-ci-windows:tag
entrypoint: [""]
variables:
PACK_DIR: "upload"
script:
- #some script
artifacts:
paths:
- ${env:PACK_DIR}/*.zip
- ${env:PACK_DIR}/*.txt
only:
- master
trigger_project_C:
stage: trigger
trigger:
project: "path/to/project_C"
branch: "main"
needs:
- job: build-windows
only:
- master
Project B:
stages:
- build_and_save
- trigger
Build_1:
stage: build_and_save
tags:
- linux
image: docker:25.0.5-git
script:
- #some script
artifacts:
paths:
- "$CI_PROJECT_DIR/out/"
only:
- main
Build_2:
stage: build_and_save
tags:
- linux
image: docker:25.0.5-git
script:
- #some script
artifacts:
paths:
- "$CI_PROJECT_DIR/out/"
only:
- main
Trigger_project_C:
stage: trigger
trigger:
project: "path/to/project_C"
branch: "main"
only:
- main
Project C :
stages:
- build
Build_product_light:
stage: build
tags:
- windows
image:
name: artifactory.example.com/build/gitlab-ci-windows:tag
entrypoint: [""]
script:
- #some script
needs:
- project: "path/to/project_B"
job: "Build_1"
ref: main
artifacts: true
- project: "path/to/project_A"
job: "build_windows"
ref: master
artifacts: true
only:
- main
Build_product:
stage: build
tags:
- windows
image:
name: artifactory.example.com/build/gitlab-ci-windows:tag
entrypoint: [""]
script:
- # some script
needs:
- project: "path/to/project_A"
job: "build_windows"
ref: master
artifacts: true
- project: "path/to/project_B"
job: "Build_2"
ref: main
artifacts: true
only:
- main