Skip to Content
문서트리거

트리거

Workflow를 어떻게 발동시킬지 정의하는 객체예요.
하나의 워크플로우에 여러 트리거를 붙일 수 있어요.

공통 옵션

옵션설명
agentId어느 Agent에서 실행할지
scopeTypeworkflow(특정 1개) 또는 agent(같은 Agent의 모든 워크플로우)
workflowNamescopeType이 workflow일 때만
responseModeasync(즉시 jobId 반환) 또는 sync(완료 대기)
responseTimeoutMssync 모드일 때 최대 대기 (기본 30000)
allowedRefs허용할 ref 값 목록 (생략 시 전부 허용)
allowDebugdebug: true 호출 허용 여부
notifyProviderslack / discord / null
notifyChannelId알림 채널 ID
notifyOnalways / failure / success / none

Webhook

가장 기본적인 트리거예요.

curl -X POST https://api.deplite.io/triggers/<id>/run \ -H "Authorization: Bearer tk_..." \ -H "Idempotency-Key: <unique-id>" \ -d '{ "ref": "main", "debug": false, "params": { "environment": "production", "replicas": 3 } }'

응답 모드

  • async: 즉시 {jobId, status: "queued", statusUrl} 반환
  • sync: 워크플로우 완료까지 대기 후 결과(status, output) 반환. responseTimeoutMs 초과 시 timeout

Idempotency

Idempotency-Key 헤더를 같은 값으로 다시 호출하면, 첫 호출의 Job을 그대로 돌려줘요.
재시도 안전성 확보 시 꼭 쓰세요.

Cron

서버 측 스케줄러가 시간이 되면 자동으로 발동시켜요.

{ "type": "cron", "cronExpression": "0 2 * * *", "cronTimezone": "Asia/Seoul", "cronEnabled": true }

표현식은 5필드 표준이에요.

표현식의미
0 2 * * *매일 02:00
*/15 * * * *15분마다
0 9 * * 1-5평일 09:00
0 0 1 * *매월 1일 00:00

Slack

OAuth로 Slack 워크스페이스를 연결한 뒤, 채널에서 키워드 매칭으로 발동해요.

{ "type": "slack", "chatProvider": "slack", "chatTeamId": "T0123456789", "chatChannelId": "C0123456789", "chatKeyword": "deploy" }

사용 방식 두 가지:

  • 앱 멘션: @deplite deploy
  • 슬래시 명령: /deplite deploy

호출자에게는 ephemeral 메시지(“dispatching…”)가 즉시 보이고, 완료 후 채널에 결과가 알림으로 들어가요(notify 설정 시).

OAuth 설치

# 1. 설치 URL 받기 curl https://app.deplite.io/api/orgs/<orgId>/slack/install-url \ -H "Authorization: Bearer $JWT" # 2. 받은 URL을 브라우저에서 열어 워크스페이스 승인 # 3. 콜백 자동 처리 후 연결 완료

Discord

Slack과 거의 동일한 모델이에요.

{ "type": "discord", "chatProvider": "discord", "chatTeamId": "<guild-id>", "chatChannelId": "<channel-id>", "chatKeyword": "deploy" }

수동 실행 (대시보드)

대시보드에서 직접 실행할 수도 있어요.

curl -X POST https://app.deplite.io/api/triggers/<id>/run-manual \ -H "Authorization: Bearer $JWT" \ -d '{ "ref": "develop", "debug": true, "force": false }'

force: true(owner만 가능)를 주면 레이트 리밋을 우회해요.
이 경우 forceReason을 함께 적어야 하고, audit log에 그대로 남아요.

알림 메시지 예시 (Slack)

Job #abc123 — deploy-prod [SUCCESS] Ref: main Duration: 2m 34s Exit Code: 0
Job #def456 — deploy-prod [FAILED] Ref: feature/x Duration: 0m 12s Exit Code: 1 Error: timeout exceeded in step "Push"

실전 예시

GitHub Actions에서 webhook 호출

.github/workflows/deploy.yml

name: Deploy on: push: branches: [main] jobs: deploy: runs-on: ubuntu-latest steps: - name: Trigger Deplite run: | curl -fsS -X POST https://api.deplite.io/triggers/${{ secrets.TRIGGER_ID }}/run \ -H "Authorization: Bearer ${{ secrets.DEPLITE_TOKEN }}" \ -H "Idempotency-Key: ${{ github.run_id }}" \ -d '{ "ref": "${{ github.sha }}", "params": { "actor": "${{ github.actor }}" } }'

GitHub의 CI는 그대로 두고, 민감한 배포 단계만 Deplite로 옮기는 패턴이에요.

Cron 표현식 자주 쓰는 패턴

표현식의미쓰임새
*/5 * * * *5분마다헬스체크
0 * * * *매시 정각큐 정리
0 2 * * *매일 02:00DB 백업
0 9 * * 1-5평일 09:00주간 리포트
0 0 * * 0매주 일요일 자정주간 통계
0 0 1 * *매월 1일 0시월간 정산
15 3 1,15 * *매월 1·15일 03:15격주 배치

cronTimezone을 명시하지 않으면 UTC예요. “Asia/Seoul”처럼 IANA 시간대 이름을 쓰세요.

Slack 슬래시 명령 실제 흐름

[user] /deplite deploy ref=v1.2.3 [Deplite] (ephemeral, 호출자만 보임) ⚙️ Received: deploy ref=v1.2.3 — dispatching… Job: j-7af9 ... Agent에서 워크플로우 실행 ... [Deplite] (notify 채널 게시) Job #j-7af9 — deploy-prod [SUCCESS] Ref: v1.2.3 · Duration: 2m 18s · Exit Code: 0 url: https://app.example.com

params는 슬래시 명령의 인수에서 자동 파싱돼서 워크플로우의 PARAMS_REF 환경변수로 들어가요.

동기 응답으로 즉시 결과 받기

responseMode: sync로 만든 webhook은 워크플로우가 끝날 때까지 기다린 뒤 결과를 그대로 돌려줘요. 응답 시간이 짧고 결과 JSON이 바로 필요할 때 유용해요.

curl -X POST https://api.deplite.io/triggers/<id>/run \ -H "Authorization: Bearer tk_..." \ -d '{"ref": "v1.2.3"}'
{ "jobId": "j-7af9", "status": "success", "exitCode": 0, "output": { "deployedRef": "v1.2.3", "url": "https://app.example.com" } }

responseTimeoutMs(기본 30000)를 넘기면 응답은 timeout이지만 워크플로우는 계속 실행돼요. jobId로 나중에 상태를 조회할 수 있어요.

다음으로

  • 제한과 정책 — 트리거 발동을 제어하는 리밋
  • API — 모든 엔드포인트 레퍼런스
최종 수정 일자: