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_OUTPUTRules
id를 지정하지 않으면 해당 Step의 출력을 참조할 수 없습니다.
$COLLABOPS_OUTPUT에는 key=value 형태로만 저장해야 합니다.
key에 공백이나 특수문자를 사용하지 마세요.
출력값은 같은 Job 내의 후속 Step에서만 참조 가능합니다. Job 간 출력값 전달은 현재 미지원입니다.
다른 CI/CD 도구의 Step 출력 변수와 동일한 패턴입니다.