본문으로 건너뛰기

작업

작업은 작업 템플릿을 한 번 실행한 것입니다. 즉 Ansible playbook 한 번의 실행, Terraform/OpenTofu/Terragrunt 구성 한 번의 실행, 또는 Bash, PowerShell, Python 스크립트 한 번의 실행을 의미합니다. 모든 작업은 자체 로그, 상태, 세부 정보를 보관하므로 무엇이 언제, 누구에 의해, 리포지토리의 어떤 리비전으로 실행되었는지 항상 확인할 수 있습니다.

작업 시작​

프로젝트에서 Task Runner 역할 이상이 필요합니다(팀 참고). 다음 두 곳에서 작업을 시작할 수 있습니다:

  • Task Templates에서 템플릿 행의 play 버튼을 클릭합니다.
  • 템플릿 페이지에서 오른쪽 상단의 버튼을 클릭합니다. 버튼 레이블은 템플릿 유형에 따라 Run, Build, Deploy로 달라집니다.

두 방법 모두 New Task 대화 상자를 엽니다. 대화 상자의 내용은 애플리케이션과 템플릿에서 활성화된 옵션에 따라 달라집니다.

Ansible 템플릿의 새 작업 대화 상자

필드표시 대상설명
Message모든 템플릿작업과 함께 저장되며 이력과 알림에 표시되는 선택적 메모입니다.
Build Version배포 템플릿배포할 빌드입니다. 가장 최근에 성공한 빌드가 기본으로 선택됩니다. 빌드 및 배포 템플릿을 참고하십시오.
설문 변수설문 변수가 있는 템플릿변수마다 입력 필드가 하나씩 표시되며, 필수 변수는 반드시 입력해야 합니다.
Dry Run --check, Diff --diffAnsibleplaybook을 점검 모드로 실행하거나 파일 변경 사항을 표시합니다. 다른 Ansible 프롬프트(Limit, Tags, Skip tags, Debug)는 템플릿에서 활성화한 경우 표시됩니다. 프롬프트를 참고하십시오.
Plan, Destroy, Auto Approve, Upgrade, ReconfigureTerraform, OpenTofu, Terragruntplan만 실행하거나 -destroy, -auto-approve, -upgrade, -reconfigure를 추가합니다. Terraform/OpenTofu를 참고하십시오.
Branch, Inventory, CLI args모든 애플리케이션이번 실행에 대해 템플릿 값을 재정의합니다. 각 재정의는 템플릿 설정에서 허용되어 있어야 합니다.

Terraform 템플릿의 새 작업 대화 상자

Run(또는 Build / Deploy)을 클릭하면 작업이 대기열에 추가됩니다.

대기열과 병렬 실행​

동일한 템플릿의 작업은 템플릿에서 Allow parallel tasks를 활성화하지 않은 경우 순차적으로 실행됩니다. 또한 프로젝트 설정의 Max number of parallel tasks로 프로젝트 전체의 실행 중 작업 수를 제한할 수 있습니다. 대기해야 하는 작업은 waiting 상태로 유지되며 여유 슬롯이 생기면 자동으로 시작됩니다.

작업 창​

UI에서 작업을 클릭하면 작업 창이 열립니다. 헤더에는 템플릿, 작업 번호, 리포지토리 리비전의 커밋 메시지, 상태 배지, 작업을 시작한 사용자와 시각, 소요 시간이 표시됩니다. 화살표 아이콘을 클릭하면 창이 전체 화면으로 확장됩니다.

작업 로그

탭내용
Log타임스탬프가 포함된 작업의 실시간 출력입니다. 작업이 실행되는 동안 로그가 스트리밍됩니다. Raw log를 클릭하면 가공되지 않은 출력이 새 브라우저 탭에서 열립니다.
Details템플릿 정보(애플리케이션, 템플릿), 커밋 정보(메시지와 해시), 실행 정보(메시지, 생성 시각, 시작 시각, 종료 시각, 소요 시간), 그리고 설정된 경우 해당 실행에 사용된 러너, 브랜치, limit, 변수가 표시됩니다.
Summary (Pro)Ansible 작업의 경우 정상적으로 완료된 호스트 수와 실패한 호스트 수를 서버별 실패 작업 표와 함께 보여줍니다.

작업 세부 정보

작업 요약

작업 상태​

상태의미
waiting작업이 대기열에 있습니다. 동일한 템플릿의 다른 작업이 실행 중이거나, 프로젝트 제한에 도달했거나, 아직 사용 가능한 러너가 없습니다.
starting러너가 작업을 가져와 리포지토리와 환경을 준비하고 있습니다.
waiting_confirmation도구가 질문을 하고 사용자를 기다리고 있습니다. 예를 들어 Auto Approve 없이 실행한 terraform apply나 입력을 읽는 스크립트가 이에 해당합니다. 작업 창에서 Confirm 또는 Reject를 사용하십시오.
confirmed사용자가 질문을 확인했으며 작업이 계속됩니다.
rejected사용자가 질문을 거부했으며 작업이 종료됩니다.
runningplaybook 또는 스크립트가 실행 중입니다.
stopping중지가 요청되었으며 프로세스가 종료되고 있습니다.
stopped사용자가 작업을 중지했습니다.
success종료 코드 0으로 완료되었습니다.
error0이 아닌 종료 코드로 완료되었거나 시작에 실패했습니다. UI에는 Failed로 표시됩니다.

작업 중지​

실행 중인 작업의 작업 창을 열고 Stop을 클릭합니다. Semaphore가 종료 신호를 보내고, 프로세스가 종료되는 동안 작업은 stopping 상태가 됩니다. 프로세스가 반응하지 않으면 버튼이 Force Stop으로 바뀌며, 이를 클릭하면 프로세스를 즉시 종료합니다.

하나의 템플릿에서 실행 중이거나 대기 중인 모든 작업을 중지하려면 템플릿 페이지를 열고 Stop all을 사용하십시오. 드롭다운에서 Stop과 Force stop을 모두 선택할 수 있습니다.

모두 중지 메뉴

작업 다시 실행​

템플릿의 Tasks 탭에서 각 행에는 rerun 버튼이 있습니다. 이 버튼을 클릭하면 해당 작업의 메시지와 파라미터가 채워진 새 작업 대화 상자가 열립니다.

다시 실행 버튼이 있는 템플릿 작업 목록

작업이 표시되는 위치​

  • Dashboard → History: 프로젝트의 모든 작업입니다. 이력을 참고하십시오.
  • Template page → Tasks: 하나의 템플릿에 속한 작업입니다.
  • Task Templates: 왼쪽의 화살표로 행을 펼치면 목록을 벗어나지 않고 해당 템플릿의 최근 작업을 확인할 수 있습니다.

환경 변수​

모든 작업은 애플리케이션(Ansible, Terraform, Bash, PowerShell, Python)에 관계없이 Semaphore에서 작업을 식별하는 변수를 받습니다.

변수값
SEMAPHORE_TASK_ID작업 ID
SEMAPHORE_PROJECT_ID작업이 속한 프로젝트 ID
SEMAPHORE_WORKFLOW_ID작업이 워크플로 실행의 노드인 경우 워크플로 ID
SEMAPHORE_WORKFLOW_RUN_ID작업이 속한 워크플로 실행 ID
SEMAPHORE_WORKFLOW_VERSION작업이 속한 워크플로 실행의 버전 (실행에 버전이 있는 경우)
SEMAPHORE_WORKFLOW_URL워크플로 실행 페이지 링크 (서버 설정에 web_host가 필요함)
SEMAPHORE_OUTPUTS_FILE워크플로 작업이 출력을 기록하는 파일의 경로

워크플로에서 시작하지 않은 작업에는 워크플로 변수가 설정되지 않습니다.

특정 앱에만 설정되는 변수와 git 및 SSH 보조 변수를 포함한 전체 목록은 참조 문서 작업 환경 변수에 있습니다.

특정한 경우에는 다음 변수도 설정됩니다.

  • 빌드 및 배포 템플릿의 경우 SEMAPHORE_TASK_TYPE, SEMAPHORE_TASK_INCOMING_VERSION, SEMAPHORE_TASK_TARGET_VERSION 및 SEMAPHORE_TASK_DETAILS_* 계열 변수
  • 템플릿이 JWT를 발급할 때 SEMAPHORE_JWT

Bash 예시:

echo "Task $SEMAPHORE_TASK_ID of project $SEMAPHORE_PROJECT_ID"
if [ -n "$SEMAPHORE_WORKFLOW_RUN_ID" ]; then
echo "Started by workflow run: $SEMAPHORE_WORKFLOW_URL"
fi

로그 보관​

작업과 로그는 기본적으로 영구히 보관됩니다. 각 템플릿의 최근 작업만 보관하려면 max_tasks_per_template를 사용하십시오. 이력을 참고하십시오.