다운스트림 파이프라인 문제 해결
멀티 프로젝트 파이프라인에서 다음과 같은 경우 트리거 job이 실패하고 다운스트림 파이프라인이 생성되지 않습니다: 다운스트림 프로젝트에서 권한 문제가 있는 사용자를 파악하려면 Rails 콘솔에서 다음 명령을 사용하여 트리거 job을 확인하고 user_id 속성을 살펴볼 수 있습니다.
트리거 job 실패 및 멀티 프로젝트 파이프라인 미생성#
멀티 프로젝트 파이프라인에서 다음과 같은 경우 트리거 job이 실패하고 다운스트림 파이프라인이 생성되지 않습니다:
- 다운스트림 프로젝트를 찾을 수 없는 경우.
- 업스트림 파이프라인을 생성하는 사용자가 다운스트림 프로젝트에서 파이프라인을 생성할 권한이 없는 경우.
- 다운스트림 파이프라인이 보호된 브랜치를 대상으로 하고 사용자가 보호된 브랜치에 대해 파이프라인을 실행할 권한이 없는 경우. 자세한 내용은 보호된 브랜치의 파이프라인 보안을 참조하세요.
다운스트림 프로젝트에서 권한 문제가 있는 사용자를 파악하려면 Rails 콘솔에서 다음 명령을 사용하여 트리거 job을 확인하고 user_id 속성을 살펴볼 수 있습니다.
Ci::Bridge.find(<job_id>)
파이프라인 실행 시 자식 파이프라인의 job이 생성되지 않음#
부모 파이프라인이 머지 리퀘스트 파이프라인인 경우 자식 파이프라인은 job이 실행되도록 workflow:rules 또는 rules를 사용해야 합니다.
rules 구성이 누락되거나 잘못되어 자식 파이프라인에서 실행할 수 있는 job이 없는 경우:
- 자식 파이프라인이 시작되지 않습니다.
- 부모 파이프라인의 트리거 job이 다음과 같이 실패합니다:
downstream pipeline can not be created, the resulting pipeline would have been empty. Review therulesconfiguration for the relevant jobs.
$ 문자가 포함된 변수가 다운스트림 파이프라인에 제대로 전달되지 않음#
CI/CD 변수를 다운스트림 파이프라인에 전달할 때 CI/CD 변수에서 $ 문자를 이스케이프하기 위해 $$를 사용할 수 없습니다.
다운스트림 파이프라인은 여전히 $를 변수 참조의 시작으로 처리합니다.
UI에서 변수를 구성할 때 CI/CD 변수 확장을 방지하거나 variables:expand 키워드를 사용하여 변수 값이 확장되지 않도록 설정할 수 있습니다. 그러면 이 변수를 다운스트림 파이프라인에 $가 변수 참조로 해석되지 않고 전달할 수 있습니다.
Ref is ambiguous#
같은 이름의 브랜치가 존재할 때 태그로 멀티 프로젝트 파이프라인을 트리거할 수 없습니다. 다운스트림 파이프라인이 downstream pipeline can not be created, Ref is ambiguous라는 오류와 함께 생성에 실패합니다.
브랜치 이름과 일치하지 않는 태그 이름으로만 멀티 프로젝트 파이프라인을 트리거합니다.
업스트림 파이프라인에서 job 아티팩트 다운로드 시 403 Forbidden 오류#
GitLab 15.9 이상에서는 CI/CD job 토큰이 파이프라인이 실행되는 프로젝트로 범위가 지정됩니다. 따라서 다운스트림 파이프라인의 job 토큰은 기본적으로 업스트림 프로젝트에 접근하는 데 사용할 수 없습니다.
이 문제를 해결하려면 job 토큰 범위 허용 목록에 다운스트림 프로젝트를 추가합니다.
오류: needs:need pipeline should be a string#
동적 자식 파이프라인과 함께 needs:pipeline:job을 사용할 때 이 오류가 발생할 수 있습니다:
Unable to run pipeline
- jobs:<job_name>:needs:need pipeline should be a string
이 오류는 파이프라인 ID가 문자열 대신 정수로 파싱될 때 발생합니다. 이 문제를 해결하려면 파이프라인 ID를 따옴표로 묶습니다:
rspec:
needs:
- pipeline: "$UPSTREAM_PIPELINE_ID"
job: dependency-job
artifacts: true
