실전 프로젝트가 시작되고나서 끝없는 회의 와 자료탐색 등으로 요 며칠 간 TIL작성을 못했다.
오늘 여유는 아니지만 그래도 githubactions를 활용하여 CI와 CD를 어느정도 구축하게 되어 글을 남기려고 한다.
우선 앞에서 설명했듯이 CI는 간단하게 진행됐다. 깃허브 액션에서 workflow를 생성하면
여러가지 자주 쓰이는 configure 를 제공해주는데 사용하는 언어에 따라 선택하면 주어지는 틀에서 작성하면 어렵지 않게 설정할 수 있었다.
name: Java CI with Gradle
on:
push:
branches: [ "develop" ]
pull_request:
branches: [ "develop" ]
permissions:
contents: read
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- name: Set up JDK 11
uses: actions/setup-java@v3
with:
java-version: '11'
distribution: 'temurin'
- name: Build with Gradle
uses: gradle/gradle-build-action@67421db6bd0bf253fb4bd25b31ebb98943c375e1
with:
arguments: build
위와 같은 yml파일을 원하는 브랜치에 커밋 해주면 적용할 수 있었다.
CD는 조금 복잡하여 뱀귤 및 각종 블로그를 참고하여 진행했다.
우선 구조는 다음과 같다
출처 :https://velog.io/@rycando/%EA%B0%9C%EB%B0%9C-%EC%9D%BC%EC%A7%80-Github-Action-AWS-codedeploy%EB%A1%9C-%EB%A1%A4%EB%B0%B1-%EA%B0%80%EB%8A%A5%ED%95%9C-CI-CD%ED%99%98%EA%B2%BD-%EA%B5%AC%EC%84%B1%ED%95%98%EA%B8%B0
우리가 설정해놓은 event에 따라 push 나 pullrequest 등이 발생 했을 때
github actions 이 자동으로 빌드를 해주고 그 파일을 아마존 s3에 업로드 한다.
그 후에 github actions 가 배포 요청을 aws CodeDeploy에게 보내면
CodeDeploy는 s3에 업로드 되어있는 jar파일을 가져와 실행하는 구조이다.
이를 설정하는 과정에서 어려움을 겪었지만 각종블로그의 글과 aws공식문서를 참고하여 진행하면 어렵지 않게 진행할 수 있을 것이다.
아직 적용하지 않은 문제는 빌드시에 우리가 git-ignore 해놓았던 secret.properties를 s3에서의 보다 명확한 권한 및 정책설정이다.
적용시켜 빌드할 수 있는 방법과
(해당 문제는 deploy.yml 파일에 env처리를 해줌으로 해결했다)
나아가 빌드시에 여러가지 Test까지 진행시킬 수 있도록 노력해봐야겠다.
이로써 누군가는 당직을 서며 서버를 키고끄는 수고를 덜 수 있게 되었다.
감사합니다 덕분에 당직을 안서도됩니다