GitHub Action의 Context Data
GitHub Action은 CI/CD에 도움이 되는 여러 데이터를 생성하는데, 이를 Context Data 라 한다.
Context 데이터의 종류
Context 데이터의 종류는 다음과 같다.
Context명 | Type | 설명 |
github | object | Workflow 실행과 관련된 정보. 더 많은 정보를 원한다면 github context를 참고하라 |
env | object | Workflow, Job, Step과 관련된 환경 변수를 포함. 더 많은 정보를 원한다면 env context를 참고하라 |
job | object | 현재 실행 중인 Job에 대한 정보. 더 많은 정보를 원한다면 job context를 참고하라. |
jobs | object | 재사용 가능한 Workflow에만 적용되며, 재사용 가능한 Workflow의 output을 포함한다. 더 많은 정보를 원한다면 jobs context를 참고하라. |
steps | object | 현재 Job에서 실행 중인 Step에 대한 정보. 더 많은 정보를 원한다면 steps context를 참고하라. |
runner | object | 현재 Job을 실행하는 Virtual Machine(Runner)에 대한 정보. 더 많은 정보를 원한다면 runner context를 참고하라. |
secrets | object | Workflow 실행에 필요한 secret 정보 저장. name - value 쌍으로 저장된다. 보안이 필요한 정보들을 저장할 수 있다. 더 많은 정보를 원한다면 secrets context를 참고하라. |
strategy | object | 현재 Job에 대한 Matrix 실행 전략에 대한 정보. 더 많은 정보를 원한다면 strategy context.를 참고하라. |
matrix | object | 현재 Job에 적용되는 Matrix 프로퍼티에 대한 정보. 더 많은 정보를 원한다면 matrix context를 참고하라. |
needs | object | 현재 Job에 의존성이 있는 것으로 정의된 모든 Job에 대한 정보 포함. 더 많은 정보를 원한다면 needs context를 참고하라. |
inputs | object | 재사용 가능하거나 직접 조작해서 실행되는 Workflow에 대한 input 값 정보. 더 많은 정보를 원한다면 inputs context를 참고하라. |
이 중에서 중요한 것은 secrets이다. 보안이 필요한 정보는 secrets에 저장하고 불러와야 한다.
Context Data 확인해보기
Context Data를 출력하기 위해 간단한 Workflow를 하나 작성할 것이다.
name: Context Data
on: workflow_dispatch
jobs:
print-data:
runs-on: ubuntu-latest
steps:
- name: Print GitHub Context
run: echo "${{ toJSON(github) }}"
여기서 ${{ ... }} 는 식을 표현하는 방식이고 Kotlin의 식과 같아 함수를 실행하거나 변수를 출력할 수 있다. 내부의 toJSON은 객체를 JSON 형태로 읽기 편하게 출력해주는 함수이다.
이를 이제 Commit 한 후 GitHub Action에 올려보면 다음과 같이 나온다. github 변수는 Workflow 실행과 관련된 모든 정보를 포함하기 때문에 거의 500줄 정도의 output이 나오는 것을 볼 수 있다.
이 정보들은 이후에 만드는 Job들에서 유용하게 사용된다.
정리
Workflow는 다양한 Context Data를 참조할 수 있고 이러한 데이터들은 CI/CD 작업을 만드는데 사용된다.
참조
https://docs.github.com/en/actions/learn-github-actions/contexts
반응형