24.08.14 TIL - GitHub Actions
오늘 배운 것
- GitHub Actions
CI / CD란
CI
- = continuous integration = 코드의 지속적 통합이라는 의미
- 개발자가 변경한 코드를 자주 통합하고 통합한 코드가 문제가 없는지 자동으로 테스트하는 프로세스
- 코드 변경 발생할 때마다 빌드 및 테스트를 수행
- 코드 품질 유지하고 문제 조기에 발견 가능
CD
- = continuous Delivery = 지속적 전달이라는 의미
- CI의 결과물을 사용자에게 자동으로 배포하는 프로세스
- CI 성공하면 (코드 변경이 통합되고 테스트 통과되면) 자동으로 스테이징 or 프로덕션 환경 (= 테스트용 운영 서버, 실제 운영 서버)에 배포하는 것
CI / CD 장점
- 빠른 피드백 : 코드 변경 후 즉각적인 빌드 및 테스트 결과 확인 가능해 문제 빠르게 인지 및 수정 가능
- 자동화된 프로세스 : 빌드, 테스트, 배포 과정이 자동화되어 수동 작업을 줄이고, 인적 오류를 방지 가능
- 일관된 배포 : 동일한 배포 프로세스로 모든 환경에서 일관된 결과 보장
- 높은 품질 유지 : 코드 품질 지속적 검증, 잠재적인 문제 조기 발견
- 개발 속도 향상 : 자동화된 프로세스로 개발 주기 단축
CI / CD 도구
- GitHub Actions
- Jenkins
- GitLab CI
GitHub Actions이란
- 빌드, 테스트, 배포 파이프라인 자동화 할 수 있는 CI / CD 도구다.
- GitHub 저장소에 직접 통합되어 있는 CI/CD 도구다.
- GitHub 내 어떤 이벤트(push, pull, merge ...)가 발생하면 해당 이벤트에 대해 정해진 동작을 실행하게 하는 도구다.
- YAML 파일을 사용하여 워크플로우를 정의할 수 있다.
GitHub Actions 구성 요소
Workflow
- workflow는 GitHub Actions의 기본 구성 단위
- 여러 Job으로 구성되고 Event에 의해 트리거 될 수 있는 자동화된 프로세스
- Workflow 파일은 YAML 로 작성됨
- Github Repository의 ./github/workflows 폴더 아래에 (workflow name).yml 파일 저장하면 됨
Event
- Event는 Workflow를 트리거 = 실행하는 특정 활동이나 규칙
- Event에는 push, pull_request, 일정 등이 포함됨
- 사용자 지정 Event도 만들 수 있음
Job
- Job은 Workflow 내에서 실행되는 개별 작업
- Job은 여러 Step으로 구성됨
- 가상 환경의 인스턴스에서 실행됨
- 다른 Job에 의존관계 가질 수 있음
- Job은 종속성에 따라 병렬 또는 순차적으로 실행될 수 있음
Step
- Step은 Task들의 집합
- 명령어를 날리거나 Action을 실행할 수 있음
- Step은 Workflow 파일에 지정된 순서대로 실행됨
- 각 Step은 동일한 실행기 인스턴스 내에서 실행됨
Action
- Action은 Workflow의 가장 작은 블록임
- Action은 Workflow에서 공유 및 결합할 수 있는 재사용 가능한 코드 단위
- 개인적으로 Action 만들 수도 있고 Marketplace의 Action 사용할 수 있음
Runner
- Github Action Runner 어플리케이션이 설치된 머신
- Workflow가 실행될 인스턴스
- Workflow가 실행되는 가상 머신 또는 자체 호스팅 환경
GitHub Actions 문법
on
- Event를 작성하는 부분
- 어떤 Event에 Workflow를 트리거 = 실행할지 작성하는 부분
- push, pull_request 등의 Event 사용할 수 있음
- 단일 Event, Event 배열로 작성할 수 있음
- push의 경우 branches 작성할 수 있음
- branches도 단일 branch, branch 배열, 특정 branch 하위 등으로 작성할 수 있음
자주 사용하는 것 : push, pull_request, branches
on:
push:
branches:
- main
- 'branch/**'
- [develop, feature/*]
pull_request:
branches:
-develop
jobs
- Job을 작성하는 부분
- 여러 Job이 있는 경우 default로 병렬 실행
- jobs 바로 아래 해당 Job의 id 작성 (id는 Actions UI에 표시됨)
- runs-on으로 실행되는 OS 지정
- needs로 해당 Job이 시작되기 전에 완료되어야 하는 Job 지정
- env로 Job에서 사용할 수 있는 변수 지정 가능, 변수의 형식은 map처럼 key-value로 작성
- steps로 진행할 Step 지정
자주 사용하는 것 : runs-on, needs, env, steps
jobs:
job-name1:
runs-on: ubuntu-latest
env:
FIRST_NAME : KIM
LAST_NAME : MINJI
steps:
...
job-name2:
needs: job-name1
steps:
...
steps
- Step을 작성하는 부분
- 명령어를 날리거나 Action을 실행할 수 있음
- name으로 각 step의 이름 작성할 수 있음 (name은 Actions UI에 표시됨)
- run으로 명령어를 날릴 수 있음
- uses로 재사용 가능한 workflow 파일 불러와 실행할 수 있음 (jobs에서도 사용 가능)
- with로 uses에 명시한 workflow에 필요한 값들 key-value로 전달할 수 있음 (jobs에서도 사용 가능)
- with로 전달할 값들은 전달할 workflow 파일에 정의된 변수와 일치해야 함
자주 사용하는 것 : name, run, uses, with
steps:
- name: Checkout
uses: actions/checkout@v3
- name: Set up JDK 17
uses: actions/setup-java@v2
with:
java-version: '17'
distribution: 'adopt'
- name: Grant execute permission for gradlew
run: chmod +x ./gradlew
- name: build project
run: ./gradlew clean build -Dspring.profiles.active=test
더 많은 문법은 아래 공식 문서를 참조하자.
https://docs.github.com/ko/actions/writing-workflows/workflow-syntax-for-github-actions
GitHub Actions에 대한 워크플로 구문 - GitHub Docs
docs.github.com
좋은 참고 블로그
1. Github Action이란?
Overview 오늘은 Github Action에 대해서 공부해보려고 한다. Github Action이란? GitHub Actions는 빌드, 테스트 및 배포 파이프라인을 자동화할 수 있는 지속적 통합 및 지속적 배포(CI/CD) 플랫폼이다. 리포지
somaz.tistory.com
2. Github Action (With Syntax)
Overview 오늘은 Github Action 문법에 대해서 공부해보려고 한다. 2023.05.19 - [IaC/CI CD Tool] - 1. Github Action이란? 1. Github Action이란? Overview 오늘은 Github Action에 대해서 공부해보려고 한다. Github Action이란? Gi
somaz.tistory.com
Github Action에 대한 소개와 사용법
Github Action은 github에서 공식적으로 제공하는 CI/CD 툴, 다시 말해 개발의 work flow를 자동화할 수 있게 도와주는 툴이다. CI는 Continuous Integration(지속적 통합), CD는 Continuous Delivery(지속적 전
velog.io
https://zzsza.github.io/development/2020/06/06/github-action/
Github Action 사용법 정리
Github Action 사용법 및 cron 사용 방법에 대해 정리한 글입니다 Github Action으로 YES24 IT 신간을 파이썬으로 크롤링 후 Issue에 업로드하는 예제가 있습니다 Github Action with Python Github action with cron, Github a
zzsza.github.io
https://docs.github.com/ko/actions/about-github-actions/understanding-github-actions
GitHub Actions 이해 - GitHub Docs
GitHub Actions는 빌드, 테스트 및 배포 파이프라인을 자동화할 수 있는 CI/CD(연속 통합 및 지속적인 업데이트) 플랫폼입니다. 리포지토리에 대한 모든 끌어오기 요청을 빌드 및 테스트하거나 병합된
docs.github.com