issues
search
kim-kiwon
/
yoriking-joriking-be
요리킹 조리킹 BE
0
stars
0
forks
source link
Github action CI/CD 구축
#3
Closed
kim-kiwon
closed
1 year ago
kim-kiwon
commented
1 year ago
작업내용
Github Action 활용 CI/CD 구축
Github Action) 특정 브랜치로 체크아웃을 수행해 Github 의 코드를 가져온다.
Github Action) Gradle Build 를 위한 Jdk 를 설치한다.
Github Action) Github 코드 내의 gradlew에 실행권한을 부여한다.
Github Action) Gradle build 를 수행해 실행 가능한 jar를 만든다.
Github Action) Aws CLI 를 통해 CodeDeploy 와 S3 에 접근할 것이므로. IAM 계정의 엑세스키를 통해 권한을 얻는다.
Access 키는 Github Secrets 에 보관
Github Action) Aws CLI로 CodeDeploy 어플리케이션에게 코드를 압축해 S3로 업로드할 것을 명령한다.
CodeDeploy App) appspec.yml 경로 기준 포함되는 코드들을 압축해 S3로 업로드한다.
Github Action) Aws CLI로 CodeDeploy 어플리케이션에게. 특정 서버그룹에 특정 S3 의 zip 파일을 배포할 것을 명령한다.
CodeDeploy App) 특정 서버그룹에 해당하는 CodeDeploy Agent 들에게 특정 S3의 zip 파일을 땡겨가서. appspec 에 명시된 곳에 압축해제하라고 명령한다.
CodeDeploy Agent ) zip 파일을 땡겨와서 서버에 압축해제한다.
CodeDeploy Agent ) appspec.yml 에 명시된 permission 와 hooks 등을 수행한다.
hook 의 스크립트에서 실제 배포가 일어난다.
멀티모듈과 GithubAction & CodeDeploy
[ Github Action ]
Github Action 은
.github/workflows
로 경로 고정이다.
멀티 모듈에서 필요하다면 여러 워크 플로우를 만들자.
특정 워크플로우는 app-external-api 만 수정되었을때 배포한다던지...
[ appspec.yml ]
CodeDeploy 는 appspec.yml 파일 기준 하위의 파일들만 S3로 업로드한다.
따라서 Application 모듈별로 최상단에 appspec.yml 을 둔다면. 해당 모듈만 S3로 업로드한다.
또한 S3 로 업로드하는 Cli 에서
—source
로 어떤 appspec.yml 을 사용할지 경로를 지정해 줄 수 있다.
App 계층 모듈마다 S3 업로드 & 서버에 저장할 파일 분리
Application 모듈별로 루트에 별도 appsepc.yml 을 두자.
App 계층 모듈마다 배포 분리
따로 배포해야 한다면 CodeDeploy 어플리케이션에서 서버그룹도 분리하자.
작업내용
Github Action 활용 CI/CD 구축
멀티모듈과 GithubAction & CodeDeploy
[ Github Action ]
.github/workflows
로 경로 고정이다.[ appspec.yml ]
—source
로 어떤 appspec.yml 을 사용할지 경로를 지정해 줄 수 있다.