Github Actions#2

Donghoon Nam
원티드랩 기술 블로그
4 min readDec 28, 2019

목록

1. Github Actions 선택 배경
2. branch별로 S3에 배포
3. 빌드, 배포 step을 job으로 그룹핑 및 의존성 선언을 통한 배포
4. 배포 성공, 실패 슬랙 메세지 전송 공통 모듈 작성
5. Lighthouse action을 Github Actions scheduler 구현

이번 내용에서는 앞서 loakick님이 설명해 놓으신 아래 예제를 가지고 시나리오를 추가해 보고자 합니다.

추가 시나리오
1. branch별로 S3에 배포
2. 빌드, 배포 step을 job으로 그룹핑 및 의존성 선언을 통한 배포
3. 배포 성공, 실패 슬랙 메세지 전송 공통 모듈 작성
4. 스케쥴러를 이용한 자동화

이번 내용은 1번 branch별로 S3에 배포하는걸 진행해보고자 합니다.

시나리오#1은 위의 블로그에서 설명해 놓은 시나리오이고 #2는 제가 변경하고자 하는 시나리오 입니다.

시나리오#1은 기존 예제의 시나리오 이고, 2번은 제가 변경하고자 하는 시나리오 입니다.
2번의 내용으로 변경하여 다음과 같이 S3에 배포하고자 합니다.

Branch별 S3 배포

코드를 보기 전에 Github Actions는 Github과 관련된 다양한 환경 변수를 제공합니다.
여기서 사용한 환경변수는 GITHUB_REF를 사용하였습니다.
GITHUB_REF는 다음과 같이 정의 되어 있습니다.

The branch or tag ref that triggered the workflow. For example, refs/heads/feature-branch-1. If neither a branch or tag is available for the event type, the variable will not exist.

develop에서 workflow가 실행되어 지면 현재 실행중인 branch, tag값을 가지게 됩니다.
ex) refs/heads/develop

위의 내용을 이용하여 구현한 코드 입니다.

예제 코드

새로 추가한 step은 개발자가 필요한 환경변수를 셋팅하는 것을 step으로 만들어 추가하였습니다.
환경 변수를 셋팅하는 부분을 별도로 만든 이유는 여러가지 세팅을 이 step을 구분하여 코드를 작성시 구분을 잘 할 수 있도록 하려고 하였습니다.
set-env를 통하여 job내에서 environment variable로 사용할 수 있습니다.

https://help.github.com/en/actions/automating-your-workflow-with-github-actions/development-tools-for-github-actions#set-an-environment-variable-set-env

Github Actions의 장점 중 하나인 환경 변수를 이용하여 해당 브랜치별 배포를 진행해 보았습니다.
별 다른 Github Login 진행 없이 다양한 환경 변수들을 이용해 여러 조건들을 쉽게 해결 할 수 있다는 걸 보여드리고자 했습니다.
예제는 https://github.com/seye2/github_actions 에서 보실 수 있습니다.

다음 시간에는 job과 needs를 이용한 의존성 선언 및 job별로 data공유는 어떻게 진행하는지 얘기해보려고 합니다.

--

--