컨텍스트
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-notificationsenv
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
| Key | Type | Example | Description |
|---|---|---|---|
collabops.ref | string | refs/heads/main | 전체 Git ref 경로 |
collabops.ref_name | string | main | 브랜치 또는 태그 이름 (경로 제외) |
collabops.ref_type | string | branch | ref 타입 (branch 또는 tag) |
collabops.sha | string | abc123def456... | 트리거된 커밋의 전체 SHA |
collabops.event_name | string | push | 트리거 이벤트 이름 (push, change_request, schedule, workflow_dispatch) |
collabops.actor | string | username | Workflow를 트리거한 사용자 |
collabops.commit_message | string | fix: login bug | 트리거 커밋의 메시지 |
collabops.head_ref | string | feature/login | CR의 source(head) 브랜치명 (change_request 이벤트 시) |
collabops.workspace_id | string | ws-abc123 | 워크스페이스 식별자 |
collabops.repository_id | string | repo-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: [...]