CI/CD 워크플로우 설정

Git Action

CI/CD 툴 이지만 주로 CI 에 특화돼있음. 현재 Kubernetis 환경때문에 ArgoCD 사용중

echo : git action 에서의 워크플로 명령정보 (대소문자 구분 X)

기능 : 환경 변수 설정, 필요에 따른 값 출력 및 출력로그에 디버그 메시지 추가

워크플로우 : GIT ACTION 의 가장 상위 개념, 자동화 해놓은 작업 과정 전반을 의미한다.

.github/workflows 폴더 아래에 yaml 형식 파일로 저장되어진다.

여기에 여러 명렁어로 자동화 작업을 작성할수있다.

on : 해당 워크플로우가 언제 실행되는지 정의한다.

ex.

push : push 이벤트가 발생했을때

schedule : 임의의 시간에 해당 워크플로우 실행

JOB : 워크플로우 내 의 하나의 작업(처리) 단위를 의미한다. 즉 하나의 워크플로우에 최소 1개 이상의 JOB이 있어야 한다.

STEP : 하나의 JOB 에 속해있는 작업단위 하나의 JOB 에는 최소한 1개의 Step 이 있어야함

step 안에 name 은 행동의 이름을 지정하는것이고 여기서 uses 를 이용해 gitAction 체크아웃을 사용가능하다.

run 을 이용해 명령어 수행도 가능

step 에선 with 를 통해 액션의 파라미터를 전달할수있다.

git checkout action

  • cache

이름 그대로 캐시 기능이다.

path : 캐시할 파일의 경로

key : 캐시 키를 정의, 캐시된 데이터를 구분하고 식별하는 고유한 이름을 의미

주로 종속성 설치, 운영체제 정보 등을 캐시한다.

runner.os : 운영체제 정보를 의미, 캐시를 운영체제 별로 구분해서 서로 다른 운영체제에서 캐시가 겹치는 일이 없도록 방지해줌

hashfiles : 파일 안에 내용을 해시값으로 변환해서 캐시로 저장한뒤 해시값의 변화를 감지하면 내용이 변경됨을 의미하므로 변경된 캐시로 다시 새로운 해시값을 생성한다.

restore-keys : 캐시 복원 키 , 해당 값을 접두사로 해당 접두사로 시작하는 캐시를 가져오는 방식이다.

with: key: ubuntu-node-abc123 restore-keys: | ubuntu-node- ubuntu-

처음엔 key 값과 완전히 동일한 캐시를 먼저 찾고 없다면 restore-keys 의 첫번째 값을 접두사로 가지는 캐시를 없다면 두번째 값을 접두사로 가지는 캐시를 찾는 방식이다.

test-reporter

: 테스트를 진행하고 해당 테스트의 결과를 레포트로 작성해주는 체크아웃 액션이다.

각 언어 마다 다양한 테스트 프레임워크를 지원한다. 테스트를 자동으로 실행시켜 주지만 run 을 통해 명령어를 따로 입력해줘야한다.

주 with 옵션은 path (레포트 저장 경로), fali-on-error(테스트 레포트 업로드가 실패했을때 해당 테스트를 실패로 할지 말지 )

reporter (레포트 형식), token (test-reporter 에서 토큰은 주로 GITHUB API에 접근하기 위해 사용된다. 레포트 업로드, 레포트 접근 관련)

ncipollo/release-action@v1

: 릴리스를 생성하고 해당 소스파일도 압축해서 제공해준다.

릴리스 : 애플리케이션의 배포 준비 완료 상태이다. 각 버젼별로 관리하기에 버젼관리의 장점을 가져갈수있고 릴리스노트에 변경사항을 기재할수있어 버젼 별로 어떤 수정사항, 추가사항이 있는지 쉽게 알수있다.

도커 buildx

: 도커를 dockerFile 하나로 다양한 아키텍쳐, OS 에서 동작할 수 있도록 이미지를 빌드해줌

dockerfile 을 작성 (일련의 스크립트 파일 (어떤 행동들을 할지에 대한 정의서))

해당 dokcerfile 을 이미지로 빌드, 이때 bulidx 가 개입,

이미지가 빌드 되면 정상적으로 빌드 되었는지 테스트 후 테스트 통과 하면 해당 이미지를 레지스트릐로 푸시

해당 레지스트리는 보관함, 어디서든 꺼낼수있는 고로 추후 배포 시 레지스트리에서 이미지를 꺼내 배포 함

환경변수 설정은

크게 두 가지 방법으로 가능하다.

도커파일에서, 워크플로우에서,

도커파일에서의 환경변수 설정은 이미지의 실행환경에 대한 환경변수 설정이며

워크플로우는 워크플로우 동작에 필요한 환경변수 설정이다. ex. 테스트, 빌드, 배포

Last updated