[12일차] CI/CD, githubactions

Woozy9ucci·2022년 11월 9일
1

실전 프로젝트가 시작되고나서 끝없는 회의 와 자료탐색 등으로 요 며칠 간 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까지 진행시킬 수 있도록 노력해봐야겠다.

이로써 누군가는 당직을 서며 서버를 키고끄는 수고를 덜 수 있게 되었다.

1개의 댓글

comment-user-thumbnail
2022년 11월 19일

감사합니다 덕분에 당직을 안서도됩니다

답글 달기