오늘은 내가 공부한 Git Action을 정리하는 시간을 가져보자.
프로젝트를 진행하면서 가장 후회되던 부분이 이 부분이다. 모든 테스트, 모든 Git 형상관리, 모든 배포는 맡은 사람이 직접 손으로 구현을 했다. 그래서 이번에 Git Action을 공부하면서 CI/CD를 구축해보려 한다.
Git Action은 Git에서 제공해주는 빌드, 배포, 테스트 파이프라인을 자동화해주는 툴이다.
모두가 정의를 저렇게 한다. 내 생각은 조금.. 다르다?
정의는 많은 사람들이 저렇게 사용해서 저런 툴이라고 말하는 것 같다.
내 생각에 Git Action은 설정해둔 이벤트가 발생하면 우리가 정해놓은 작업을 Git 가상머신(runner)를 이용하여 수행해주는 툴이다. 한마디로 CI/CD와 관련없는 행동도 할 수 있다는 것이다.
먼저 Git Repo를 생성하고 아무 코드를 입력해보자.
나는 다음 Repo를 이용할 계획이다. 해당 Repo는 이전에 도커를 공부하면서 push했던 Repo이다.
Git Hub에서 Repo에 들어가면 "Action"이라는 카테고리가 존재한다 눌러주자.
나는 Gradle java이니까 이거 선택!
다음과 같이 repo 최상위 폴더/.github/workflows/에 gradle.yml 파일이 생성된다.
gradle.yml 파일의 내용은 java gradle build에 필요한 보일러 플레이트를 Git에서 제공된다.
우리는 이제 이 파일을 요리해주면 된다!
요리를 하기 위해서는 yml 명령어 및 기타 용어들을 알아두어야 한다. 하나씩 살펴보자!
git action으로 어떠한 일을 할 가상머신이다. git에서 제공해준다.
프로젝트에 대한 테스트, 빌드, 배포, 기타 등등의 작업을 수행하는 하나의 전체적인 프로세스를 말한다.
workflow는 여러 개가 존재할 수 있다.
event(pr, push 등) 기반으로 동작한다.
다중 workflow는 병렬적으로 수행될 수 있고, 순차적으로 수행할 수 있다.
하나 이상의 job으로 이루어져 있다.
yaml 파일로 작성된다.
Job은 여러가지의 step으로 구성된다.
다른 Job과 병렬적 및 직렬적으로 수행할 수 있다.
Step은 Task의 집합이다.
순차적으로 수행한다.
커맨드 명령어를 수행할 수 있다.
action을 날릴 수 있다.
workflow에서 가장 작은 단위의 블럭을 말한다.
Step을 연결할 수 있다.
다른 사람의 action을 공유받을 수 있고, 나의 action을 공유할 수 있다.
name: Java CI with Gradle
on:
push:
branches: [ "master" ]
pull_request:
branches: [ "master" ]
permissions:
contents: read
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- name: Set up JDK 11
uses: actions/setup-java@v3
with:
java-version: '11'
distribution: 'temurin'
- name: Build with Gradle
uses: gradle/gradle-build-action@67421db6bd0bf253fb4bd25b31ebb98943c375e1
with:
arguments: build
name : 해당 workflow의 이름을 정의한다.
on : event를 명시한다.
permission : 작업의 권한을 제한한다.
jobs : 실행해야할 job을 정의한다.
이것말고도 수 없이 많다. 필요하면 찾아서 그때그때 알아보는 방향으로 가자!
다음 글은 Git Action으로
해보자.