컨텍스트(Contexts) 살펴보기
컨텍스트(Contexts) 살펴보기
GitHub Actions의 컨텍스트에 대해 함께 알아볼게요.
출처: Contexts
본문
컨텍스트 소개
컨텍스트는 워크플로 실행, 변수, 러너 환경, 작업, 단계에 대한 정보에 접근하는 방법이에요. 각 컨텍스트는 문자열 또는 다른 객체가 될 수 있는 속성(properties)을 포함하는 객체예요.
컨텍스트, 객체, 속성은 워크플로 실행 조건에 따라 크게 달라져요. 예를 들어 matrix 컨텍스트는 매트릭스의 작업에서만 채워져요.
표현식 문법을 사용해 컨텍스트에 접근할 수 있어요. 자세한 내용은 워크플로와 액션에서 표현식 평가하기를 참고하세요.
${{ <context> }}
[!WARNING] 워크플로와 액션을 만들 때 코드가 잠재적 공격자의 신뢰할 수 없는 입력을 실행할 수 있는지 항상 고려해야 해요. 공격자가 자신의 악성 콘텐츠를 삽입할 수 있으므로 특정 컨텍스트는 신뢰할 수 없는 입력으로 취급해야 해요. 자세한 내용은 안전한 사용 참조를 참고하세요.
컨텍스트를 언제 사용할지 결정하기
GitHub Actions에는 컨텍스트라고 하는 변수 컬렉션과 기본 변수(default variables) 라고 하는 유사한 변수 컬렉션이 포함돼 있어요. 이 변수들은 워크플로의 다른 지점에서 사용하도록 설계됐어요:
- 기본 환경 변수(Default environment variables): 이 환경 변수는 작업을 실행 중인 러너에만 존재해요. 자세한 내용은 변수 참조를 참고하세요.
- 컨텍스트(Contexts): 워크플로의 어느 시점에서든 대부분의 컨텍스트를 사용할 수 있어요. 기본 변수를 사용할 수 없는 경우에도 그렇죠. 예를 들어 작업이 실행을 위해 러너로 라우팅되기 전에 표현식과 함께 컨텍스트를 사용해 초기 처리를 할 수 있어요. 이를 통해 조건부
if키워드와 함께 컨텍스트를 사용해 단계를 실행할지 결정할 수 있어요. 작업이 실행되기 시작하면 작업을 실행하는 러너에서runner.os같은 컨텍스트 변수를 가져올 수도 있어요. 워크플로에서 다양한 컨텍스트를 사용할 수 있는 위치에 대한 자세한 내용은 컨텍스트 참조를 참고하세요.
다음 예시는 이 다양한 유형의 변수들이 작업에서 함께 사용될 수 있는 방법을 보여줘요:
name: CI
on: push
jobs:
prod-check:
if: ${{ github.ref == 'refs/heads/main' }}
runs-on: ubuntu-latest
steps:
- run: echo "Deploying to production server on branch $GITHUB_REF"
이 예시에서 if 문은 github.ref 컨텍스트를 확인해 현재 분기 이름을 결정해요. 이름이 refs/heads/main이면 이후 단계가 실행돼요. if 검사는 GitHub Actions가 처리하며, 결과가 true인 경우에만 작업이 러너로 전송돼요. 작업이 러너로 전송되면 단계가 실행되고 러너의 $GITHUB_REF 변수를 참조해요.