모두 자동화해버리는 Github Actions!
글 작성자: 택시 운전사
반응형
Github Actions란?
- Github에서 제공하는 저장소에서 소프트웨어 개발
Workflow
를 자동화, 커스터마이징, 실행할 수 있는 서비스 Jenkins
를 이용했던 CI/CD를 포함하여 원하는 작업을 수행하기 위한 작업을 검색, 생성 및 공유 가능Action
들을 결합해서 맞춤형Workflow
생성 가능- 기존에
Jenkins
,Lambda
를 이용했던 자동화 작업들을 OSS로 통합 가능 - 간단히하자면 Workflow 툴
- Build, Test, Deploy, Release Drafter, Labeler ...
- 자세한 설명은 역시 Github Actions 공식문서 참고
개념
Github Action은 다음과 같은 개념들로 이루어져있습니다.
Workflow
- 최상위 개념,
yaml
로 작성하는 파일의 단위 .github/workflows
하위에 위치하면 저장소에서 자동으로 인식- 단일 혹은 여러개의
Job
으로 구성되어, 특정Event
에 트리거 될 수 있는 프로세스
Event
Workflow
를 실행하는 규칙
Job
- 가상 환경에서 실해되는 주체, 다른
Job
과의 의존성을 가질 수 있고 병렬로도 실행가능 Jenkins
의Job
과 비슷한 개념
Step
Task
의 집합으로Command
혹은Action
을 실행
Action
Workflow
의 가장 작은 단위- 다른 사람들의
Action
이 public으로 공개되어있다면, 이를 아무런 조건없이 사용할 수 있음 Job
과Step
을 연결할 수 있음
Runner
- Github Action Runner App이 설치된 머신으로 Workflow가 실제로 실행될 인스턴스
- Jenkins가 설치된 Server와 비슷한 개념
- github-hosted runner와 Self-hosted runner로 구분
- github-hosted runner: 저장소에서 설치된 서버에 자동으로 설치되어 있는 runner
- self-hosted runner: 사용자가 직접 설치한 서버에 자동으로 설치되어 있는 runner
workflow 작성하기
가장 간단한 형태인 Build Test를 위한 Workflow를 작성해보겠습니다.
name: Build
on:
# PR의 base 브렌치가 master, RB-**인 경우 해당 workflow를 실행합니다.
pull_request:
branches: [ master, RB-** ]
jobs:
build:
# 사용할 러너를 설정합니다.
runs-on: [ self-hosted ]
# 변수를 정의합니다.
strategy:
matrix:
node-version: [ 14.17 ]
steps:
# 소스를 가져옵니다.
- name: Checkout code
uses: actions/checkout@v2
with:
fetch-depth: 100
# node-version에 해당하는 Node 세팅합니다.
- name: Use Node.js
uses: actions/setup-node@v1
with:
node-version: ${{ matrix.node-version }}
# 프로젝트를 build합니다.
- name: Build
run: |
npm install -g yarn
yarn install --prefer-offline --frozen-lockfile
yarn build
해당 코드를 .github/workflows/build.yml
파일로 저장하고, base 브렌치가 master
혹은 RB-**
인 PR이 올라오면 Workflow
가 자동으로 실행됩니다. 위 코드에서 사용된 actions/checkout@v2
, actions/setup-node@v1
는 Github에서 제공하는 action들로 위와 같이 바로 사용할 수 있습니다.
사용할만한 커스텀 Action
- Release Drafter - 수정한 파일의 확장자, 브렌치명, PR 제목등에 따라 자동으로 라벨을 추가해주고 정해진 형식에따라 자동으로 릴리즈 초안을 작성해주는 Action
- Auto Author Assign - PR을 올린 유저를 자동으로 해당 PR의 어사인에 추가해주는 Action
- Merge pull requests - 조건을 만족하면 PR을 자동으로 merge하는 Action
참고자료
반응형
'Git' 카테고리의 다른 글
로컬 브렌치와 같은 이름의 리모트 브렌치에 푸쉬하게 설정하기 (0) | 2021.09.07 |
---|---|
git 커밋 어떻게 써야하는가? 🤔 (0) | 2020.03.01 |
댓글
이 글 공유하기
다른 글
-
로컬 브렌치와 같은 이름의 리모트 브렌치에 푸쉬하게 설정하기
로컬 브렌치와 같은 이름의 리모트 브렌치에 푸쉬하게 설정하기
2021.09.07 -
git 커밋 어떻게 써야하는가? 🤔
git 커밋 어떻게 써야하는가? 🤔
2020.03.01