CollabOps

Step 출력

Step 간 데이터 전달 — $COLLABOPS_OUTPUT과 steps 컨텍스트 사용법

Step에서 생성한 값을 다른 Step에서 참조할 수 있습니다. $COLLABOPS_OUTPUT 파일에 key=value 형태로 저장하고, $\{\{ steps.<id>.outputs.<key> \}\}로 읽습니다.

기본 사용법

steps:
  # 1. 출력값 저장 — id를 반드시 지정해야 합니다
  - name: prepare
    id: meta                   # 다른 Step에서 참조할 식별자
    image: node:18
    run: |
      # key=value 형태로 $COLLABOPS_OUTPUT에 저장
      echo "version=1.2.3" >> $COLLABOPS_OUTPUT
      echo "timestamp=$(date -u +%Y%m%dT%H%M%S)" >> $COLLABOPS_OUTPUT

  # 2. 출력값 참조 — steps.<id>.outputs.<key> 형태
  - name: use-output
    image: alpine:3.19
    run: |
      echo "Version: ${{ steps.meta.outputs.version }}"
      echo "Timestamp: ${{ steps.meta.outputs.timestamp }}"

실전 예제: package.json에서 버전 추출

steps:
  - name: checkout
    uses: "collabops/checkout@v2"
    with:
      repo-url: "https://<collabops-host>/<workspace>/<repository>.git"

  # package.json에서 버전 추출하여 출력에 저장
  - name: extract-version
    id: pkg
    image: node:18
    run: |
      VERSION=$(node -p "require('./package.json').version")
      echo "app_version=${VERSION}" >> $COLLABOPS_OUTPUT
      echo "Extracted version: ${VERSION}"

  # 추출된 버전으로 Docker 이미지 태깅
  - name: build-image
    uses: "collabops/docker-build-push@v1"
    with:
      tags: "my-registry/my-app:${{ steps.pkg.outputs.app_version }}"

실전 예제: Git 정보 수집

steps:
  - name: checkout
    uses: "collabops/checkout@v2"
    with:
      repo-url: "https://<collabops-host>/<workspace>/<repository>.git"
      fetch-depth: "0"    # 전체 히스토리 필요 (태그 조회용)

  # Git에서 다양한 정보 추출
  - name: git-info
    id: git
    image: alpine/git:2.43.0
    run: |
      cd /workspace/source

      # 최신 태그
      LATEST_TAG=$(git describe --tags --abbrev=0 2>/dev/null || echo "v0.0.0")
      echo "latest_tag=${LATEST_TAG}" >> $COLLABOPS_OUTPUT

      # 짧은 SHA
      SHORT_SHA=$(git rev-parse --short HEAD)
      echo "short_sha=${SHORT_SHA}" >> $COLLABOPS_OUTPUT

      # 커밋 수 (태그 이후)
      COMMIT_COUNT=$(git rev-list ${LATEST_TAG}..HEAD --count 2>/dev/null || echo "0")
      echo "commit_count=${COMMIT_COUNT}" >> $COLLABOPS_OUTPUT

  # 수집된 정보로 이미지 태그 생성
  - name: tag-image
    run: |
      echo "Tag: ${{ steps.git.outputs.latest_tag }}"
      echo "SHA: ${{ steps.git.outputs.short_sha }}"
      echo "Commits since tag: ${{ steps.git.outputs.commit_count }}"

여러 출력값 저장

$COLLABOPS_OUTPUT에 여러 key=value를 줄바꿈으로 구분하여 저장합니다.

- name: collect-metadata
  id: metadata
  run: |
    # 여러 값을 한 번에 저장
    echo "build_number=42" >> $COLLABOPS_OUTPUT
    echo "git_branch=${{ collabops.ref_name }}" >> $COLLABOPS_OUTPUT
    echo "git_sha=${{ collabops.sha }}" >> $COLLABOPS_OUTPUT
    echo "build_date=$(date -u +%Y-%m-%d)" >> $COLLABOPS_OUTPUT

Rules

id를 지정하지 않으면 해당 Step의 출력을 참조할 수 없습니다.

$COLLABOPS_OUTPUT에는 key=value 형태로만 저장해야 합니다.

key에 공백이나 특수문자를 사용하지 마세요.

출력값은 같은 Job 내의 후속 Step에서만 참조 가능합니다. Job 간 출력값 전달은 현재 미지원입니다.

다른 CI/CD 도구의 Step 출력 변수와 동일한 패턴입니다.

목차