배운 내용
Github Actions를 이용해서 배포 자동화가 어떻게 되는지
정리한 내용
Github Actions을 통한 배포 Flow
GithubActions란?
github가 공식적으로 제공하는 빌드, 테스트 및 배포 파이프라인을 자동화할 수 있는 CI/CD플랫폼
레포지토리에서 PullRequest나 push같은 이벤트를 트리거로 Github 작업 워크플로(하나 이상의 작업이 실행되는 자동화 프로세스)를
구성할 수 있다.
워크플로는 .yml or .yaml 파일에 의해 구성되고, 기능에 따라 여러 개의 워크플로도 만들 수 있고(.github/workflows) 디렉터리에 위치
비공개 레포지토리의 경우 작동할 때의 용량과 시간이 제한, 공개는 무료
워크플로 작동방식
main에 push 했을경우 작동, 빌드를 마치면 s3버킷에 저장, code deploy에 Ec2로 배포 명령을 내린다.
S3는 이번에는 저장소로 사용된다.
Code Deploy는 빌드 결과물을 EC2로 이동 .appepec.yml 설정 파일에 의해 쉘 스크립트 등 단계 따라 특정 동작을 한다
Code Deploy가 S3 버킷에서 EC2 인스턴스로 프로젝트를 이동할 수 있도록 EC2 인스턴스에 Code Deploy Agent의 설치가 필요하다.
EC2 는 Code Deploy에 의해 빌드 과정을 거친 프로젝트가 EC2 인스턴스로 전달되고,
.yml (설정 파일)과 .sh (쉘 스크립트)에 의해 각 배포 결과를 로그로 저장하며 빌드 파일(.jar)을 실행
실습해보기
새로운 레포지토리 생성(공개) -> 만든 프로젝트 업로드 -> actions 에서 java with gradle config 클릭 ->
start commit을 눌러 업로드 -> gradle.yml파일이 생성되면서 동시에 워크플로에 작성된 트리거로 인해 실행
(actions 탭에서 생성된 워크플로의 각 단계별 진행상황을 확인가능)
CodeDeploy에 애플리케이션 생성, 그룹 생성, appspec.yml 작성 gradle.yml 수정해 주기 scripts 디렉터리에 deploy.sh 작성
에러
Actions에서 java with gradle config에 start commint을 한 후 에러가 발생
Error: Gradle script '/home/runner/work/practice-githubAction-deploy/practice-githubAction-deploy/gradlew' is not executable.
1. arguments를 build로 바꿔주기,
2. - name: Add permission run: chmod +x ./gradlew - name: Build with Gradle 전에 추가해 주기
빌드 배포까지 다 완료했는데 실행이 안될 때
EC2에서 /home/ubuntu/action 경로에서 deploy_err.log를 본다 에러가 난 이유를 알 수 있다.
오늘의 느낀 점
배포 자동화도 편리하다는 느낌을 받긴 했지만 githubActions가 조금 더 설정이 간편하다는 걸 느꼈다. 프로젝트일 때 잘 사용한다면 매우 편리하겠구나라고 생각했다 조금 아쉬운 건 퍼블릭이 아니라면 제한이 있다는 게...