CollabOps

개요

CollabOps CI/CD 파이프라인 개요 및 핵심 개념

CollabOps Workflow DSL은 YAML 기반 문법으로 CI/CD 파이프라인을 정의합니다. 이 문서는 Workflow를 작성하는 데 필요한 구문, 규칙, 제약 사항 및 지원 범위를 설명합니다.

Concepts

CollabOps Workflow는 다음과 같은 계층 구조로 구성됩니다:

Workflow
├── triggers          # 언제 실행할지 (push, change_request, schedule, ...)
├── env               # 전역 환경 변수
└── jobs
    ├── job-a
    │   ├── steps     # 순차 실행되는 명령 목록
    │   ├── env       # Job 레벨 환경 변수
    │   └── services  # 보조 서비스 (Docker 등)
    └── job-b
        ├── needs: [job-a]   # DAG 의존성
        └── steps

Workflow — 파이프라인 정의의 최상위 단위입니다. 하나 이상의 Job을 포함하며, 실행 조건(triggers)에 의해 시작됩니다.

Job — Workflow 내 실행 단위입니다. 기본적으로 병렬 실행되며, needs를 통해 실행 순서를 정의할 수 있습니다.

Step — Job 내부에서 순차적으로 실행되는 최소 단위입니다. run(셸 명령) 또는 uses(템플릿 참조)로 정의합니다.

Expression ($\{\{ \}\}) — 런타임 값(환경 변수, secrets 등)을 참조하기 위한 표현식입니다.

Template — 재사용 가능한 Step 정의입니다. uses로 참조하여 워크플로우에서 사용합니다.

저장소 체크아웃 인증repo-urlhttps://...로 작성하면 JobToken이 자동 주입됩니다. 개인 SSH 키를 변수로 등록하지 않는 것을 권장합니다. 자세한 내용은 인증 문서를 참조하세요.

Quick Start

아래는 저장소에서 Workflow 파일을 생성하는 화면입니다.

Workflow는 직접 원격 저장소에서 생성하거나 로컬 저장소에서 생성 후 push 하여 등록할 수 있습니다.

main 브랜치에 push할 때 소스를 체크아웃하고 빌드하는 최소 Workflow입니다.

# Workflow 이름 — 대시보드에 표시됩니다
name: my-first-workflow

# 트리거 — main 브랜치 push 시 실행
triggers:
  push:
    branches: [main]

# Jobs — 실행할 작업 정의
jobs:
  build:
    steps:
      # 1. 소스코드 체크아웃 (HTTPS — JobToken 자동 주입)
      - name: checkout
        uses: "collabops/checkout@v2"
        with:
          repo-url: "https://<collabops-host>/<workspace>/<repository>.git"

      # 2. Node.js 프로젝트 빌드
      - name: install
        run: npm ci
        image: node:18

      # 3. 빌드 실행
      - name: build
        run: npm run build
        image: node:18

아래는 일반적인 파이프라인 성공 플로우 예시입니다.

아래는 checkout에서 실패했을 때의 플로우 예시입니다. 실패한 Job은 빨간색으로 표시되며, 이후 Job은 skip 됩니다.

Workflow Syntax Overview

Workflow YAML 파일의 전체 구조입니다. 각 필드의 상세 문법은 하위 문서에서 다룹니다.

name: <string>               # Workflow 이름 (필수)

triggers: <object>            # 실행 조건 (필수)

env: <object>                 # 전역 환경 변수 (선택)

jobs:                         # Job 정의 (필수, 최소 1개)
  <job_id>:
    include: <string>          # 워크스페이스 템플릿 참조 (선택)
    needs: <list>             # 의존 Job (선택)
    if: <expression>          # 조건부 실행 (선택)
    phase: <string>           # 메타데이터 (선택)
    env: <object>             # Job 환경 변수 (선택)
    services: <list>          # 보조 서비스 (선택)
    steps:                    # Step 목록 (include 사용 시 생략 가능)
      - name: <string>
        run: <string>         # 셸 명령
        image: <string>       # 컨테이너 이미지
        uses: <string>        # 템플릿 참조
        with: <object>        # 템플릿 입력
        env: <object>         # Step 환경 변수
        id: <string>          # 출력 참조용 식별자

Top-level Schema

FieldRequiredTypeDescription
nameYESstringWorkflow 이름 (최대 255자, 대소문자 구분 없음)
triggersYESobject실행 조건 — Triggers 문서 참조
jobsYESobjectJob 정의 (최소 1개) — Jobs 문서 참조
envNOobject전역 환경 변수 — Environment Variables 문서 참조
matrix-미지원 (향후 지원 예정)

목차