2/16 TIL

정민세·2023년 2월 16일
0

이 글을 쓰게 된 이유

  • 나는 메인프로젝트를 진행할 때 클라이언트 파일을 빌드하여 따로 zip을 만들어 서버 측에 제공 하면 서버 분들께서 EC2로 배포 반영을 하였었다. 하지만 이는 시간적인 효율성이 많이 떨어짐으로 Git actions를 통해 자동 배포하는 법을 공부하게 되었다.

Git actions이란?

Github에서 제공하는 워크플로우(workflow)를 자동화하도록 도와주는 도구이다. 테스트, 빌드, 배포 등의 다양한 작업들을 자동화하여 처리한다.

Git actions 시작

  • Git actions는 git 저장소에서 등록할 수도 있고 .github/workflows라는 폴더를 만들어 .yml파일로도 등록할 수 있다.

Git actions의 구성

  1. workflows
  • 저장소에 추가되는 자동화된 프로세스이다. 하나 이상의 job으로 이루어져 있으며 events에 의해 실행된다.
  1. events
  • 워크 플로우를 실행하는 특정 활동이나 규칙이다. 커밋의 push, pull request가 생성되었을 때뿐만 아니라 저장소 dispatch event를 통해 Github 외부에서 발생하는 활동으로도 이벤트를 발생시킬 수도 있다.

예시

on: [push, pull_request]
  1. runners
  • Github action runner App이 설치된 서버다. Github에서 호스팅 하는 러너를 사용할 수도 있고 직접 호스팅할 수도 있다. Ubuntu Linux, Windows, macOs 환경을 기반으로 하며 워크 플로우의 각 작업은 새로운 가상 환경에서 실행된다.
    4.jobs
  • 워크플로우의 기본 단위로 더 작은 단위인 step으로 이루어져 있다.
    기본적으로 워크 플로우는 여러 작업을 병렬적을오 실행하며 순차적으로 실행하도록 설정할 수도 있다.
    예를 들어 테스트 코드의 수행인 두 작업을 순차적으로 실행할 수도 있으며 이 경우에는 빌드 작업이 실패하면 테스트 작업은 실행 되지 않는다.
  1. step
  • 작업에서 커맨드를 실행하는 독립적인 단위다. 한 작업(job)의 각 스텝들은 동일한 러너에서 실행되므로 해당 작업의 액션들은 서로 데이터를 공유한다.
  1. actions
  • 워크 플로우의 가장 작은 요소로 직접 만들어 사용할 수도 있고, 마켓에 등록된 이미 만들어진 것을 가져와 사용할 수도 있다.

workflows 관리

  1. 민감한 정보 저장
  • 워크 플로우가 비밀번호나 인증서 같은 민감한 정보를 사용한다면 Github에 secret으로 저장하여 환경 변수로 사용이 가능 하다. 나의 프로젝트에서는 aws에서 발급된 access/secret key들을 사용할 것 같다.
  1. 의존적인 작업 구성
  • 기본적으로 작업은 병렬적으로 수행된다. 다른 작업이 완전히 끝난 후에 작업을 실행시키고 싶다면 needs 키워드를 통해 작업이 의존성을 갖도록 지정하면 된다.
  1. 빌드 매트릭스 활용하기
  • 워크 플로우가 다양한 OS, 플랫폼, 언어의 여러 조합에서 테스트를 실행하려는 경우 빌드 매트릭스를 활용하면 된다. 빌드 옵션을 배열로 받는 strategy 키워드를 사용한다.
  1. 종속성 캐싱
  • Github의 러너는 각 작업에서 새로운 환경으로 실행되므로 작업들이 종속성을 재사용하는 경우 파일들을 캐싱하여 성능을 높인다. 캐시를 생성하면 해당 저장소의 모든 워크 플로우에서 사용이 가능하다.
profile
하잇

0개의 댓글