- 파이프라인 트리거 토큰 생성하기
- 파이프라인 트리거하기
- 파이프라인 트리거 토큰 해제
- 트리거된 파이프라인에서 CI/CD 작업 실행 구성
- 어떤 파이프라인 트리거 토큰이 사용되었는지 보기
- 문제 해결
API를 사용하여 파이프라인 트리거하기
특정 브랜치나 태그에 대해 파이프라인을 트리거하려면
파이프라인 트리거 API 엔드포인트에 대한 API 호출을 사용할 수 있습니다.
GitLab CI/CD로 마이그레이션하는 경우,
다른 제공자의 작업에서 API 엔드포인트를 호출하여 GitLab CI/CD 파이프라인을 트리거할 수 있습니다.
예를 들어, Jenkins 또는 CircleCI로부터의 마이그레이션의 일부로.
API로 인증할 때, 다음을 사용할 수 있습니다:
-
파이프라인 트리거 토큰을 사용하여
파이프라인 트리거 API 엔드포인트로 브랜치 또는 태그 파이프라인을 트리거합니다. -
CI/CD 작업 토큰을 사용하여
다중 프로젝트 파이프라인을 트리거합니다. -
API 액세스가 있는 다른 토큰을 사용하여
프로젝트 파이프라인 API 엔드포인트로 새 파이프라인을 생성합니다.
파이프라인 트리거 토큰 생성하기
파이프라인 트리거 토큰을 생성하고 이를 사용하여 API 호출을 인증하면
브랜치 또는 태그에 대한 파이프라인을 트리거할 수 있습니다.
이 토큰은 사용자의 프로젝트 접근 권한 및 권한을 모방합니다.
전제 조건:
- 프로젝트에 대해 최소한 유지 관리자인 역할을 가져야 합니다.
트리거 토큰을 생성하려면:
- 왼쪽 사이드바에서 Search or go to를 선택하고 프로젝트를 찾습니다.
- Settings > CI/CD를 선택합니다.
- 파이프라인 트리거 토큰을 확장합니다.
- 새 토큰 추가를 선택합니다.
- 설명을 입력하고 파이프라인 트리거 토큰 생성을 선택합니다.
- 생성한 모든 트리거에 대한 전체 토큰을 보고 복사할 수 있습니다.
- 다른 프로젝트 구성원이 만든 토큰에 대해서는 처음 4자만 볼 수 있습니다.
경고:
공용 프로젝트에 토큰을 평문으로 저장하거나 악의적인 사용자가 접근할 수 있는 방식으로 저장하는 것은 보안 위험입니다.
유출된 트리거 토큰은 예정되지 않은 배포를 강제하거나 CI/CD 변수를 접근하려고 시도하거나 기타 악의적인 용도로 사용될 수 있습니다.
마스킹된 CI/CD 변수는 트리거 토큰의 보안을 개선하는 데 도움이 됩니다.
토큰을 안전하게 유지하는 방법에 대한 자세한 내용은 보안 고려사항을 참조하세요.
파이프라인 트리거하기
파이프라인 트리거 토큰을 생성한 후,
API에 접근할 수 있는 도구 또는 웹훅을 사용하여 파이프라인을 트리거할 수 있습니다.
cURL 사용하기
cURL을 사용하여
파이프라인 트리거 API 엔드포인트로 파이프라인을 트리거할 수 있습니다.
예를 들어:
-
멀티라인 cURL 명령 사용:
curl --request POST \ --form token=<token> \ --form ref=<ref_name> \ "https://gitlab.example.com/api/v4/projects/<project_id>/trigger/pipeline"
-
cURL을 사용하여 쿼리 문자열에
<token>
과<ref_name>
전달:curl --request POST \ "https://gitlab.example.com/api/v4/projects/<project_id>/trigger/pipeline?token=<token>&ref=<ref_name>"
각 예제에서 다음을 교체하십시오:
- URL을
https://gitlab.com
또는 인스턴스의 URL로. -
<token>
을 트리거 토큰으로. -
<ref_name>
을main
과 같은 브랜치 또는 태그 이름으로. -
<project_id>
을123456
과 같은 프로젝트 ID로. 프로젝트 ID는
프로젝트 개요 페이지에서 표시됩니다.
CI/CD 작업 사용
파이프라인 트리거 토큰이 있는 CI/CD 작업을 사용하여 다른 파이프라인이 실행될 때 파이프라인을 트리거할 수 있습니다.
예를 들어, project-A
에서 태그가 생성될 때 project-B
의 main
브랜치에서 파이프라인을 트리거하려면 project-A
의 .gitlab-ci.yml
파일에 다음 작업을 추가하세요:
trigger_pipeline:
stage: deploy
script:
- 'curl --fail --request POST --form token=$MY_TRIGGER_TOKEN --form ref=main "https://gitlab.example.com/api/v4/projects/123456/trigger/pipeline"'
rules:
- if: $CI_COMMIT_TAG
environment: production
이 예제에서:
-
1234
는project-B
의 프로젝트 ID입니다. 프로젝트 ID는 프로젝트 개요 페이지에서 표시됩니다. -
rules
는 작업이project-A
에 태그가 추가될 때마다 실행되도록 합니다. -
MY_TRIGGER_TOKEN
은 마스킹된 CI/CD 변수로, 트리거 토큰을 포함하고 있습니다.
웹훅 사용
다른 프로젝트의 웹훅에서 파이프라인을 트리거하려면 다음과 같은 웹훅 URL을 사용하세요. 푸시 및 태그 이벤트에 대해:
https://gitlab.example.com/api/v4/projects/<project_id>/ref/<ref_name>/trigger/pipeline?token=<token>
다음과 같이 교체하세요:
- URL을
https://gitlab.com
또는 인스턴스의 URL로 변경하세요. -
<project_id>
를123456
과 같은 프로젝트 ID로 변경하세요. 프로젝트 ID는 프로젝트 개요 페이지에서 표시됩니다. -
<ref_name>
을main
과 같은 브랜치 또는 태그 이름으로 변경하세요. 이 값은 웹훅 페이로드에서ref_name
보다 우선합니다. 페이로드의ref
는 소스 리포지토리에서 트리거를 발생시킨 브랜치입니다. 슬래시가 포함된 경우ref_name
을 URL 인코딩해야 합니다. -
<token>
을 파이프라인 트리거 토큰으로 변경하세요.
웹훅 페이로드 접근
웹훅을 사용하여 파이프라인을 트리거하는 경우 TRIGGER_PAYLOAD
사전 정의된 CI/CD 변수를 사용하여 웹훅 페이로드에 접근할 수 있습니다.
페이로드는 파일 유형 변수로 노출되므로, cat $TRIGGER_PAYLOAD
또는 유사한 명령어로 데이터를 접근할 수 있습니다.
API 호출에 CI/CD 변수 전달
트리거 API 호출에서 원하는 만큼의 CI/CD 변수를 전달할 수 있습니다.
이 변수는 가장 높은 우선순위가 있으며, 동일한 이름의 모든 변수를 덮어씁니다.
매개변수는 variables[key]=value
형식입니다. 예를 들어:
curl --request POST \
--form token=TOKEN \
--form ref=main \
--form variables[UPLOAD_TO_S3]="true" \
"https://gitlab.example.com/api/v4/projects/123456/trigger/pipeline"
트리거된 파이프라인의 CI/CD 변수는 각 작업의 페이지에 표시되지만, Owner 및 Maintainer 역할을 가진 사용자만 값에 접근할 수 있습니다.
파이프라인 트리거 토큰 해제
파이프라인 트리거 토큰을 해제하려면:
-
왼쪽 사이드바에서 검색 또는 이동을 선택하고 프로젝트를 찾습니다.
-
설정 > CI/CD를 선택합니다.
-
파이프라인 트리거를 확장합니다.
-
해제하려는 트리거 토큰의 왼쪽에서 해제()를 선택합니다.
해제된 트리거 토큰은 다시 추가할 수 없습니다.
트리거된 파이프라인에서 CI/CD 작업 실행 구성
트리거된 파이프라인에서 작업 실행 구성을 하려면 다음과 같이 할 수 있습니다:
-
rules
를$CI_PIPELINE_SOURCE
사전 정의된 CI/CD 변수와 함께 사용합니다. -
only
/except
키워드를 사용하지만,rules
가 선호되는 키워드입니다.
$CI_PIPELINE_SOURCE 값 |
only /except 키워드 |
트리거 방법 |
---|---|---|
trigger |
triggers |
파이프라인 트리거 API로 트리거된 파이프라인에서 트리거 토큰을 사용합니다. |
pipeline |
pipelines |
파이프라인 트리거 API로 트리거된 다중 프로젝트 파이프라인에서 $CI_JOB_TOKEN 을 사용하거나 CI/CD 구성 파일에서 trigger 키워드를 사용합니다. |
또한, $CI_PIPELINE_TRIGGERED
사전 정의된 CI/CD 변수가 파이프라인 트리거 토큰으로 트리거된 파이프라인에서 true
로 설정됩니다.
어떤 파이프라인 트리거 토큰이 사용되었는지 보기
단일 작업 페이지를 방문하여 어떤 파이프라인 트리거 토큰이 작업을 실행시켰는지 볼 수 있습니다.
트리거 토큰의 일부는 페이지 오른쪽 작업 세부정보 아래에 표시됩니다:
트리거 토큰으로 트리거된 파이프라인에서 작업은 Build > Jobs에서 triggered
로 레이블이 지정됩니다.
문제 해결
웹훅으로 파이프라인을 트리거할 때 403 Forbidden
웹훅으로 파이프라인을 트리거할 때 API가 {"message":"403 Forbidden"}
응답을 반환할 수 있습니다. 트리거 루프를 피하려면 파이프라인 이벤트를 사용하여 파이프라인을 트리거하지 마십시오.
파이프라인을 트리거할 때 404 Not Found
파이프라인을 트리거할 때 {"message":"404 Not Found"}
응답이 반환되면 파이프라인 트리거 토큰 대신 개인 액세스 토큰을 사용하고 있을可能성이 있습니다. 새 트리거 토큰을 생성하고 개인 액세스 토큰 대신 사용하십시오.
파이프라인을 트리거할 때 The requested URL returned error: 400
존재하지 않는 브랜치 이름인 ref
를 사용하여 파이프라인을 트리거하려고 하면 GitLab이 The requested URL returned error: 400
을 반환합니다.
예를 들어, 기본 브랜치에 대해 다른 브랜치 이름을 사용하는 프로젝트에서 우연히 main
을 브랜치 이름으로 사용할 수 있습니다.
이 오류의 또 다른 가능한 원인은 CI_PIPELINE_SOURCE
값이 trigger
일 때 파이프라인 생성을 방지하는 규칙입니다:
rules:
- if: $CI_PIPELINE_SOURCE == "trigger"
when: never
CI_PIPELINE_SOURCE
값이 trigger
일 때 파이프라인이 생성될 수 있도록 workflow:rules
를 검토하십시오.