방법: CircleCI 파이프라인에서 순차 워크플로 만들기
머리말
CircleCI에서 pipeline , workflows은 서로 독립적으로 실행됩니다. 따라서 워크플로 A 다음에 워크플로 B가 실행되도록 하는 기본 제공 기능이 없습니다.
그러나 약간의 속임수를 통해 여전히 주문을 수행할 수 있습니다.
어떻게
순서를 지정하려면 작업 흐름 B의 첫 번째 작업으로 an approval job을 설정하기만 하면 됩니다.
# contrived snippet of a .circleci/config.yaml
workflows:
aaa:
jobs:
- one
- two
bbb:
jobs:
- start:
type: approval
- next:
requires:
- start
워크플로 B의 후속 작업은 승인 작업이 승인된 경우에만 실행됩니다. 따라서 대기를 "강제"할 수 있으며 워크플로 A가 완료될 때만 이 작업을 승인할 수 있습니다.
물론 여기에는 수동 개입이 필요합니다.
그러나 이 접근 방식의 이점은 팀에서 워크플로 A의 결과를 확인하는 데 시간을 할애할 수 있다는 것입니다. 예를 들어 워크플로 A는 일부 인프라 변경 사항(예:
terraform apply
)을 배포했으며 워크플로를 실행하기 전에 이러한 변경 사항을 검사하는 것을 선호합니다. 비.한 걸음 더 나아가
워크플로 A의 끝에서 the Approve a job API을 통해 이 승인을 자동화할 수 있습니다.
특히 다음을 수행하는 작업을 생성해야 합니다.
Find workflow B's ID from the current pipeline .
Find the approval job's ID from the invoked workflow B .
Approve the job .
jobs:
...
approve-workflow:
parameters:
workflow-name:
type: string
description: workflow name
job-name:
type: string
description: name of approval job in workflow
docker:
- image: cimg/base:current
steps:
- run:
name: Find Workflow ID for << parameters.workflow-name >>
command: |
curl -H "Circle-Token: $CIRCLE_TOKEN" https://circleci.com/api/v2/pipeline/<< pipeline.id >>/workflow > workflows.json
WORKFLOW_ID=$(jq -r '.items | map(select(.name == "<< parameters.workflow-name >>")) | .[0].id' workflows.json)
echo "export WORKFLOW_ID='${WORKFLOW_ID}'" >> $BASH_ENV
- run:
name: Find Job ID for << parameters.job-name >>
command: |
curl -H "Circle-Token: $CIRCLE_TOKEN" "https://circleci.com/api/v2/workflow/${WORKFLOW_ID}/job" > jobs.json
APPROVAL_JOB_ID=$(jq -r '.items | map(select(.name == "<< parameters.job-name >>" and .type == "approval")) | .[0].id' jobs.json)
echo "export APPROVAL_JOB_ID='${APPROVAL_JOB_ID}'" >> $BASH_ENV
- run:
name: Approve job
command: |
curl -X POST -H "Circle-Token: $CIRCLE_TOKEN" "https://circleci.com/api/v2/workflow/${WORKFLOW_ID}/approve/${APPROVAL_JOB_ID}" | jq .
나눔의 정신으로 여러분의 편의를 위해 위의 작업을 코드화한 CircleCI Orb를 만들었습니다.
https://circleci.com/developer/orbs/orb/kelvintaywl/control-flow
이 기사와 Orb가 유용하기를 바랍니다. 계속 구축하세요, 여러분!
#circleci #cicd #workflow
buy Kelvin a cup of coffee ☕
Reference
이 문제에 관하여(방법: CircleCI 파이프라인에서 순차 워크플로 만들기), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/kelvintaywl/how-to-create-sequential-workflows-in-circleci-pipeline-2dcd텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)