비동기 하위 파이프라인을 사용하여 스테이지 트리거하기
비동기 하위 파이프라인을 사용하여 .pipeline-config.yaml 구성 파일에 추가된 모든 단계를 트리거할 수 있습니다. 이러한 단계를 파이프라인에 인라인으로 추가할 필요가 없으며 파이프라인을 수정할 필요도 없습니다.
다음 예제 코드를 참조하세요:
setup:
image: icr.io/continuous-delivery/pipeline/pipeline-base-image:2.12@sha256:ff4053b0bca784d6d105fee1d008cfb20db206011453071e86b69ca3fde706a4
script: |
#!/usr/bin/env bash
source "${ONE_PIPELINE_PATH}"/tools/trigger-task
set_env "variable-for-my-custom-task" "foo_bar"
export_env "variable-for-my-custom-task"
trigger-task "my-custom-task"
my-custom-task:
image: icr.io/continuous-delivery/pipeline/pipeline-base-image:2.12@sha256:ff4053b0bca784d6d105fee1d008cfb20db206011453071e86b69ca3fde706a4
script: |
#!/usr/bin/env bash
if [[ "$PIPELINE_DEBUG" == 1 ]]; then
trap env EXIT
env
set -x
fi
printf "Test custom stage to trigger async"
list_repos
list_artifacts
get_env "variable-for-my-custom-task"
스테이지를 트리거하기 위해 웹훅 시크릿을 사용하여 웹훅 트리거를 생성합니다. 웹훅 비밀은 파이프라인 매개변수와 Subpipeline Webhook Trigger 의 속성에서 subpipeline-webhook-token 로 찾을 수 있습니다. subpipeline-webhook-token 값 업데이트에 대한 자세한 내용은 비동기 스테이지 웹훅 업데이트하기를 참조하세요.
새로 트리거된 파이프라인 이름은 스테이지 이름(예: my-custom-task)이므로 스테이지 이름이 유효한 파이프라인 실행 이름인지 확인하세요. 스테이지 이름은 Kubernetes 리소스에서 이름 또는 ID를 만드는 데 사용됩니다. Kubernetes 의 개체 이름과 ID는 RFC 1123 또는 RFC 1035를 따라야 합니다:
- 최대 63자까지 입력할 수 있습니다.
- 소문자 영숫자 또는 하이픈 문자 '-'만 포함합니다.
- 영숫자로 시작합니다.
- 영숫자로 끝납니다.
비동기 파이프라인으로 데이터 전달
스테이지를 실행하는 데 필요한 변수를 전달할 수 있으며, 이를 위해 pipelinectl 를 사용할 수 있습니다.
다음 단계에 따라 두 파이프라인 간에 데이터를 전달할 수 있습니다:
- 비동기 파이프라인을 트리거하기 전에
set_env을 사용하여 변수를 저장하세요. 트리거링 단계 이전의 파이프라인에서 이런 일이 발생할 수 있다는 점에 유의하세요.set_env을 두 번 사용할 필요가 없습니다. - 변수를
export_env으로 표시하여 비동기 파이프라인 실행을 위해 내보냅니다. - 내보내기용으로 표시된 모든 변수는 비동기 파이프라인에서
get_env을 사용하여 사용할 수 있습니다.
set_env <variable-name> <variable-value>
export_env <variable-name>
get_env <variable-name>
표시된 변수만 비동기 파이프라인에서 사용할 수 있습니다. 데이터가 너무 많거나 민감한 데이터가 포함되어 있을 수 있으므로 모든 데이터를 내보낼 수 있는 것은 아닙니다.
비동기 파이프라인 명령 트리거
다음 명령을 사용하여 스테이지를 트리거합니다:
trigger-task <stage-name>
예제 코드:
setup:
image: icr.io/continuous-delivery/pipeline/pipeline-base-image:2.12@sha256:ff4053b0bca784d6d105fee1d008cfb20db206011453071e86b69ca3fde706a4
script: |
#!/usr/bin/env bash
source "${ONE_PIPELINE_PATH}"/tools/trigger-task
set_env "variable-for-my-custom-task" "foo_bar"
export_env "variable-for-my-custom-task"
trigger-task "my-custom-task"
이 명령은 파이프라인 구성 yaml에서 작업을 트리거합니다. 예를 들어, trigger-task owasp-zap입니다.
트리거된 파이프라인에서 액세스할 수 있는 항목
이전 파이프라인에서 저장하고 내보낸 모든 리포지토리와 아티팩트( set_env 에서 pipelinectl 및 export_env 도구를 사용하여) 이전 파이프라인에서 저장한 모든 저장소와 아티팩트는 새로 트리거된 비동기 파이프라인에서도 사용할 수 있습니다. 리포지토리는 이전 파이프라인의 커밋과 함께 동일한 작업 공간 상대 폴더에 복제됩니다. 파이프라인에서 동일한 상태의 리포지토리를 복제할 수 있도록 리포지토리의 커밋은 pipelinectl 에 저장해야 합니다.
리포지토리와 아티팩트로 이동하려면 list_repos 및 list_artifacts. 생성된
모든 아티팩트와 복제된 모든 리포지토리는 본인만 저장할 수 있습니다 pipelinectl.
사용할 수 없음 트리거 파이프라인 실행의 이전 작업(예: npm 설치)에서 수행한 작업 공간에 대한 변경 사항은 트리거된 새 파이프라인 실행에 모든 작업 공간을 전달할 수 없으므로 사용할 수 없습니다.
트리거된 파이프라인의 상태를 조회하는 방법
API 컬 호출
while [ "$STATE" = "running" -o "$STATE" = "waiting" -o "$STATE" = "queued" -o "$STATE" = "pending" ]; do
PIPELINE_STATUS=$(curl -s -k -X GET \
--header "Authorization: Bearer $IAM_ACCESS_TOKEN" \
--header "Accept: application/json" \
--header "Content-Type: application/json" \
$CD_PIPELINE_RUN_URL)
STATE=$(echo $PIPELINE_STATUS | jq -r '.status .state')
echo $STATE
sleep 10
done
iBM클라우드 CLI 호출
ibmcloud dev tekton-pipelinerun [pipelineID] --run-id [pipelinerunID] [--output JSON]
ibmcloud dev tekton-pipelinerun ls [pipelineID]
자세한 내용은 IBM Cloud CLI(tekton-pipelinerun)명령을 참조하세요.
CLI를 사용하여 파이프라인을 트리거하는 방법에 대한 자세한 내용은 트리거 사용하기를 참조하세요