본문으로 건너뛰기

워크플로우 (Pro)

워크플로우를 사용하면 여러 작업 템플릿을 분기, 승인, 시간 지정 일시 중지가 포함된 방향 그래프(DAG)로 연결할 수 있습니다. 워크플로우 실행은 각 단계가 완료될 때마다 자동으로 진행됩니다. 시각적 편집기에서 그래프를 한 번 설계한 다음, 워크플로우 페이지에서 실행을 시작하면 됩니다.

정보

워크플로우는 Semaphore Pro 기능입니다. 워크플로우 메뉴 항목은 구독에 해당 기능이 포함된 경우에만 표시됩니다.

개요

워크플로우는 다음으로 구성됩니다:

  • 노드 — 그래프의 단계입니다(템플릿 실행, 승인 대기, 지연을 위한 일시 중지, 또는 메모로 주석 달기).
  • 엣지 — 노드 간의 연결입니다. 각 엣지에는 다운스트림 노드가 언제 시작되는지를 제어하는 조건이 지정됩니다.

워크플로우를 시작하면 Semaphore가 워크플로우 실행을 생성합니다. 진행은 서버가 주도합니다. 작업이 완료되거나, 승인이 처리되거나, 지연이 만료되면 엣지 조건에 따라 다운스트림 노드가 시작됩니다.

워크플로우 만들기

  1. 프로젝트를 열고 워크플로우로 이동합니다.
  2. 새 워크플로우를 클릭합니다.
  3. 그래픽 편집기에서:
    • 팔레트의 노드를 캔버스로 드래그합니다.
    • 한 노드의 출력 핸들에서 다른 노드로 드래그하여 노드를 연결합니다.
    • 노드나 엣지를 클릭하면 사이드 패널에서 속성을 편집할 수 있습니다.
  4. 이름을 설정합니다(실행 버전 관리를 위해 선택적으로 시작 버전도 설정할 수 있습니다).
  5. 문제 패널에 나열된 문제를 모두 해결한 다음 저장을 클릭합니다.

편집기는 저장하기 전에 그래프를 검증합니다. 유효한 워크플로우는 노드가 하나 이상 있어야 하고, 시작 노드(들어오는 엣지가 없는 노드)가 정확히 하나여야 하며, 순환이 없어야 하고, 실행 가능한 모든 노드의 설정이 완전해야 합니다.

노드 종류

종류용도
작업작업 템플릿을 실행합니다. 작업 매개변수를 통해 노드별로 템플릿 매개변수(인벤토리, 환경, Ansible limit, 추가 CLI 인수)를 재정의할 수 있습니다.
승인권한이 있는 사용자가 승인하거나 거부할 때까지 실행을 일시 중지합니다. 선택적으로 타임아웃(초)과 승인 메시지를 설정할 수 있습니다.
지연설정된 시간(초)만큼 기다린 후 다운스트림 노드로 진행합니다. 냉각 기간, 유지 보수 시간대, 종속 단계 사이의 간격 두기에 유용합니다.
메모캔버스의 자유 형식 주석입니다. 메모 노드는 실행되지 않으며 엣지로 연결되지도 않습니다. 문서화 용도로만 사용됩니다.

수렴

들어오는 엣지가 여러 개인 노드는 모든 업스트림 노드가 완료되어야 하도록(기본값) 하거나 그중 하나만 완료되면 되도록 설정할 수 있습니다. 노드 속성 패널에서 수렴을 설정하십시오.

지연 노드

지연 노드는 설정된 시간(최소 1초) 동안 워크플로우 실행을 일시 중지합니다. 대기하는 동안:

  • 실행은 running 상태를 유지합니다.
  • 실행 보기의 지연 노드에 실시간 카운트다운이 표시됩니다.
  • 엣지로 연결된 다운스트림 노드는 지연이 완료될 때까지 시작되지 않습니다.

지연이 활성화된 상태에서 워크플로우 실행이 중지되면 지연이 취소되고 실행은 stopped 상태로 종료됩니다.

승인 노드

실행이 승인 노드에 도달하면 누군가 승인하거나 거부할 때까지 상태가 approval로 바뀝니다. 실행 보기에 승인/거부 컨트롤이 표시됩니다. 거부된 승인은 연결된 엣지 조건에 따라 실행을 실패시킵니다.

엣지 조건

각 엣지에는 다운스트림 노드가 준비되는 시점을 결정하는 조건이 있습니다:

조건업스트림 노드가 다음과 같을 때 다운스트림이 시작됩니다…
성공 시성공적으로 완료된 경우(기본값).
실패 시오류로 완료된 경우.
항상어떤 최종 상태로든(성공 또는 실패) 완료된 경우.

보상 작업이나 알림에는 실패 시 분기를 사용하십시오. 결과에 관계없이 다음 단계를 실행해야 할 때는 항상을 사용하십시오.

실행 및 모니터링

  • 워크플로우 실행 — 워크플로우 목록에서 새 실행을 시작합니다.
  • 실행 보기 — 각 노드의 실시간 상태(실행 중, 성공, 실패, 승인, 지연 카운트다운)를 보여 주는 전체 화면 그래프입니다.
  • 중지 — 실행이 running 또는 approval 상태인 동안 run_project_tasks 권한이 있는 사용자가 중지할 수 있습니다. 활성 작업이 모두 중지되고, 대기 중인 승인은 거부되며, 실행은 stopped로 표시됩니다.

실행 상태: running, approval, success, failed, stopped.

실행 버전 관리

워크플로우에 시작 버전(예: 1.0.0)을 설정하면 각 실행에 버전 레이블이 붙습니다. Semaphore는 빌드 템플릿과 유사하게 실행이 이어질 때마다 버전을 증가시킵니다.

워크플로우 아티팩트(set_stats)

워크플로우의 Ansible 작업이 set_stats를 사용하면 해당 변수는 그 실행의 워크플로우 아티팩트로 저장됩니다. 같은 실행의 다운스트림 작업 노드는 이를 추가 변수로 자동으로 전달받습니다.

경고

워크플로우의 단계가 원격 러너에서 실행되는 경우, 워크플로우 아티팩트는 아직 원격 러너 단계 사이에서는 전달되지 않습니다. 아티팩트는 Semaphore 서버에서 로컬로 실행되는 작업 간에만 전달됩니다. 이에 맞게 아티팩트 전달을 계획하거나, 아티팩트를 생성하는 단계와 사용하는 단계를 같은 실행 경로에 두십시오.

권한

  • 워크플로우 관리(생성, 편집, 삭제)에는 프로젝트 리소스 관리 권한이 필요합니다.
  • 워크플로우 실행에는 run_project_tasks 권한이 필요합니다.
  • 승인 처리에는 적절한 프로젝트 액세스 권한이 필요합니다(프로젝트에서 작업을 실행할 수 있는 사용자와 동일).

API

워크플로우 템플릿과 실행은 /api/project/{project_id}/workflows 아래에서 사용할 수 있습니다. delay 노드 필드(delay_seconds)와 중지 엔드포인트(POST …/runs/{run_id}/stop)를 포함한 요청 및 응답 스키마는 API 문서를 참조하십시오.