CollabOps

컨텍스트

secrets, vars, env, collabops 컨텍스트 상세 레퍼런스

Expression에서 사용 가능한 컨텍스트입니다. $\{\{ context.key \}\} 형태로 참조합니다.

secrets

워크스페이스 또는 저장소에 등록된 시크릿 값을 참조합니다. 민감한 정보(API 키, 비밀번호, 인증 토큰 등)를 안전하게 전달할 때 사용합니다.

steps:
  - name: deploy
    run: ./deploy.sh
    env:
      # secrets에 등록된 값을 환경 변수로 전달
      API_KEY: "${{ secrets.API_KEY }}"
      DB_PASSWORD: "${{ secrets.DB_PASSWORD }}"
      DEPLOY_TOKEN: "${{ secrets.DEPLOY_TOKEN }}"

시크릿 값은 로그에 마스킹 처리됩니다.

vars

조직/저장소/환경 레벨에서 설정한 변수를 참조합니다. 비밀이 아닌 설정값(배포 환경, 리전, URL 등)을 관리할 때 사용합니다.

env:
  # 조직/저장소에서 설정한 변수 참조
  DEPLOY_ENV: "${{ vars.DEPLOY_ENV }}"         # production, staging 등
  AWS_REGION: "${{ vars.AWS_REGION }}"         # ap-northeast-2
  SLACK_CHANNEL: "${{ vars.SLACK_CHANNEL }}"   # #deploy-notifications

env

Workflow에서 env로 정의한 환경 변수를 Expression 내에서 참조합니다.

env:
  APP_NAME: my-app
  APP_VERSION: "1.0.0"

jobs:
  build:
    steps:
      - name: build-image
        run: |
          # $env.APP_NAME 으로 참조
          docker build -t ${{ env.APP_NAME }}:${{ env.APP_VERSION }} .

run 내에서 일반 환경 변수($APP_NAME)로도 접근 가능합니다. Expression(${{ env.APP_NAME }})은 YAML 레벨에서 치환되는 반면, 셸 변수($APP_NAME)는 런타임에 치환됩니다.

collabops

Workflow 실행 시 자동으로 제공되는 빌트인 컨텍스트입니다.

collabops Context Keys

KeyTypeExampleDescription
collabops.refstringrefs/heads/main전체 Git ref 경로
collabops.ref_namestringmain브랜치 또는 태그 이름 (경로 제외)
collabops.ref_typestringbranchref 타입 (branch 또는 tag)
collabops.shastringabc123def456...트리거된 커밋의 전체 SHA
collabops.event_namestringpush트리거 이벤트 이름 (push, change_request, schedule, workflow_dispatch)
collabops.actorstringusernameWorkflow를 트리거한 사용자
collabops.commit_messagestringfix: login bug트리거 커밋의 메시지
collabops.head_refstringfeature/loginCR의 source(head) 브랜치명 (change_request 이벤트 시)
collabops.workspace_idstringws-abc123워크스페이스 식별자
collabops.repository_idstringrepo-def456레포지토리 식별자

사용 예시

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

      - name: tag-image
        run: |
          # 커밋 SHA를 이미지 태그로 사용
          IMAGE_TAG="${{ collabops.sha }}"
          echo "Building image with tag: $IMAGE_TAG"

          # 브랜치 이름 기반 로직
          echo "Branch: ${{ collabops.ref_name }}"
          echo "Event: ${{ collabops.event_name }}"
          echo "Actor: ${{ collabops.actor }}"

조건부 실행에서 사용

jobs:
  deploy-prod:
    # main 브랜치 push일 때만 프로덕션 배포
    if: "collabops.ref == 'refs/heads/main' && collabops.event_name == 'push'"
    steps: [...]

  deploy-staging:
    # develop 브랜치이거나 CR 이벤트일 때 스테이징 배포
    if: "collabops.ref_name == 'develop' || collabops.event_name == 'change_request'"
    steps: [...]

목차