Git Action 설명서

YoungHo-Cha·2022년 7월 21일
3

Catch Bug Project

목록 보기
4/12
post-thumbnail

오늘은 내가 공부한 Git Action을 정리하는 시간을 가져보자.


목차

  • 배우는 이유
  • Git Action이란?
  • 용어 정리
  • yml 살펴보기

배우는 이유

프로젝트를 진행하면서 가장 후회되던 부분이 이 부분이다. 모든 테스트, 모든 Git 형상관리, 모든 배포는 맡은 사람이 직접 손으로 구현을 했다. 그래서 이번에 Git Action을 공부하면서 CI/CD를 구축해보려 한다.


Git Action 이란?

Git Action은 Git에서 제공해주는 빌드, 배포, 테스트 파이프라인을 자동화해주는 툴이다.

모두가 정의를 저렇게 한다. 내 생각은 조금.. 다르다?

정의는 많은 사람들이 저렇게 사용해서 저런 툴이라고 말하는 것 같다.

내 생각에 Git Action은 설정해둔 이벤트가 발생하면 우리가 정해놓은 작업을 Git 가상머신(runner)를 이용하여 수행해주는 툴이다. 한마디로 CI/CD와 관련없는 행동도 할 수 있다는 것이다.


바로 이용해보기

연습 레포지토리 생성

먼저 Git Repo를 생성하고 아무 코드를 입력해보자.

나는 다음 Repo를 이용할 계획이다. 해당 Repo는 이전에 도커를 공부하면서 push했던 Repo이다.

✅ Git Repository

Action 탭

Git Hub에서 Repo에 들어가면 "Action"이라는 카테고리가 존재한다 눌러주자.

나는 Gradle java이니까 이거 선택!

다음과 같이 repo 최상위 폴더/.github/workflows/에 gradle.yml 파일이 생성된다.

gradle.yml 파일의 내용은 java gradle build에 필요한 보일러 플레이트를 Git에서 제공된다.

우리는 이제 이 파일을 요리해주면 된다!
요리를 하기 위해서는 yml 명령어 및 기타 용어들을 알아두어야 한다. 하나씩 살펴보자!


용어 정리

Runner

git action으로 어떠한 일을 할 가상머신이다. git에서 제공해준다.

Workflows

  • 프로젝트에 대한 테스트, 빌드, 배포, 기타 등등의 작업을 수행하는 하나의 전체적인 프로세스를 말한다.

  • workflow는 여러 개가 존재할 수 있다.

  • event(pr, push 등) 기반으로 동작한다.

  • 다중 workflow는 병렬적으로 수행될 수 있고, 순차적으로 수행할 수 있다.

  • 하나 이상의 job으로 이루어져 있다.

  • yaml 파일로 작성된다.

Jobs

  • Job은 여러가지의 step으로 구성된다.

  • 다른 Job과 병렬적 및 직렬적으로 수행할 수 있다.

Steps

  • Step은 Task의 집합이다.

  • 순차적으로 수행한다.

  • 커맨드 명령어를 수행할 수 있다.

  • action을 날릴 수 있다.

Actions

  • workflow에서 가장 작은 단위의 블럭을 말한다.

  • Step을 연결할 수 있다.

  • 다른 사람의 action을 공유받을 수 있고, 나의 action을 공유할 수 있다.


yml 살펴보기

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를 명시한다.

    • push : push 이벤트 발생할 경우
    • pull_request : pr 이벤트 발생할 경우
      • branches : 위의 이벤트가 발생하는 브랜치
  • permission : 작업의 권한을 제한한다.

    • contents : content는 read만 가능하도록 한다.
  • jobs : 실행해야할 job을 정의한다.

    • build : 빌드를 한다.
    • runs-on : 빌드할 환경을 말한다.
    • steps : 스탭을 설정한다.
      • uses : 다른사람의 action을 사용한다. (actions/checkout@v3은 체크아웃을 시키는 action이다.)
      • name : step의 이름을 정의한다.
      • with : 위의 step을 수행하면서 필요한 내용을 명시한다.
        • java-version : 자바 버전을 명시한다.
        • arguments : 파라미터를 명시한다.

이것말고도 수 없이 많다. 필요하면 찾아서 그때그때 알아보는 방향으로 가자!

✅ Git Action 레퍼런스


다음 글은 Git Action으로

  • jacoco를 이용한 커버리지 분석, 소나큐브를 이용한 정적 코드분석 그리고 테스트 코드 진행을 하는 CI
  • Docker와 Docker Hub를 이용한 Spring, Ec2를 CD

해보자.

profile
관심많은 영호입니다. 궁금한 거 있으시면 다음 익명 카톡으로 말씀해주시면 가능한 도와드리겠습니다! https://open.kakao.com/o/sE6T84kf

0개의 댓글