Github Action
Github Action
Github Action 이란
- 테스트, 빌드, 배포 등 개발하는 과정에서의 작업 흐름(workflow)를 자동화 하는 도구.
- Github에서 제공하고, CI / CD를 수행할 수 있게 해 줌.
- Public 저장소는 무료이며, 사용 제한이 있음. Private 저장소에서 사용하려면 유료.
개념
Github action은 다음과 같은 개념들로 구성됨.
- Workflow: Github action이 수행하는 자동화된 작업 과정.
- YML로 작성.
- 프로젝트의
.github/workflows/
폴더에 저장. - 여러 개의 Job으로 구성.
- Event: Workflow를 실행하는 활동. push, pull_request 등을 event로 설정할 수 있음.
- Job: Workflow를 구성하는 처리 단위. 여러 step으로 구성.
- Step: Job에서 순차적으로 수행되는 프로세스 단위. Command 혹은 action을 수행 가능.
- Action: 재사용이 가능한 workflow의 컴포넌트.
- Runner: Workflow가 실행될 인스턴스 / 머신.
실제 YML 예시 일부분 (Spring boot + Gradle)
- name: Workflow의 이름을 지정.
name: spring-test gradle CI CD
- on: Event를 설정함. master branch에 push / pull이 일어났을 때 실행하도록 설정.
on:
push:
branches: ["master"]
pull_request:
branches: ["master"]
- jobs: Workflow를 구성하는 여러 job을 명시. (여기서는 job1 하나)
- runs-on: Job이 수행될 OS.
- steps: Job 내의 step들을 명시.
jobs:
job1:
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v3
- name: 각 step의 이름.
- uses: 다른 action을 가져와서 수행.
- run: 커맨드 / 스크립트 실행.
- actions/ACTION_NAME : ACTION_NAME이라는 이름의 action.
# 앞부분과 연결
steps:
- name: Checkout
uses: actions/checkout@v3
- name: Grant execute permission for gradlew
run: chmod +x gradlew
- name: Make Directory for deliver
run: mkdir deploy
- env: 환경 변수를 넘겨주는 부분.
- ${{secrets.SECRET_KEY}}: 저장소의 secrets에 등록한 비밀 키
# 앞부분과 연결
- name: Deliver to AWS S3
env:
AWS_ACCESS_KEY_ID: ${{secrets.AWS_ACCESS_KEY_ID}}
AWS_SECRET_ACCESS_KEY: ${{secrets.AWS_SECRET_ACCESS_KEY}}
run: aws s3 cp ./example.zip s3://example/
References
- https://zzsza.github.io/development/2020/06/06/github-action/
- https://www.daleseo.com/github-actions-basics/