SEB_BE 75일차 - 배포 자동화2

subimm_·2022년 12월 8일
0

코드스테이츠

목록 보기
73/83

💡 오늘의 학습목표

  • GitHub Actions

  • S3버킷 비우기, 정적 웹 호스팅 비활성화, 파이프라인 실습 리소스 삭제 (코드디플로이 애플리케이션과 배포그룹 삭제)

📔 Github Actions

  • Github가 공식적으로 제공하는 빌드, 테스트 및 배포 파이프라인을 자동화 할 수 있는 CI/CD 플랫폼
  • 레포지토리에서 PR이나 Push 같은 이벤트를 트리거로 GitHub 작업 워크플로를 구성할 수 있다.
  • 워크플로는 .yml 파일에 의해 구성, 여러개 워크플로도 만들 수 있다.
    생성된 워크플로는 .github/workflows 디렉토리 이하에 위치
  • Github Actions
    • 설정파일(.yml)에 따라 깃헙 레포지토리에 특정 변동사항을 트리거로 작동
  • S3
    • 지난 실습에서는 정적 웹 페이지 배포에 사용하였으나 여기서는 저장소로써 사용, 깃헙 액션에서 빌드한 결과물이 압축되어 S3로 전송되고 버킷에 저장됨.
  • Code Deploy
    • 배포 명령을 받은 Code Deploy는 S3에 저장되어 있는 빌드 결과물을 EC2 인스턴스로 이동, 프로젝트 최상단에 위치한 appepec.yml 설정 파일에 의해 쉘 스크립트 등 단계에 따라 특정 동작을 함.
  • EC2
    • Code Deploy에 의해 빌드 과정을 거친 프로젝트가 EC2 인스턴스로 전달되고, .yml.sh에 의해 각 배포 결과를 로그로 저장하며 빌드파일(.jar)을 실행한다.
  • EC2 인스턴스에 알맞은 Code Deploy Agent와 JDK11 버전 설치 필요

📖 리소스 설정하기 튜토리얼

  • 레포지토리 공개로 생성하여 만들어둔 프로젝트 업로드

  • 레포지토리에서 액션 탭 - 추천 워크플로 (Java with Gradle) 선택 - 기본 구성 그대로 워크플로 생성 start Commit -

    🔐 오류
    깃헙 액션에서 커밋하니 빌드 시 오류 발생
    Error: Gradle script '/home/runner/work/practice-githubAction-deploy/practice-githubAction-deploy/gradlew' is not executable.

    • 권한 문제로 생각됨.
      git update-index --chmod=+x gradlew 명령어 입력이나,
      gradle.yml 파일에 아예 추가 해서 해결
      - name: Run chmod to make gradlew executable
      run: chmod +x ./gradlew
  • 레포지토리 - 세팅 - 시크릿 - 액션 탭 New repository secret - 액세스 키 ID 값과 비밀 액세스 키 값 각각 저장 - build.yml에 코드 추가

  • 워크플로가 성공적으로 완료되면 S3 버킷에 압축파일이 전송됨.

📖 빌드파일 배포 및 실행 튜토리얼

  • S3에 저장된 빌드 파일을 EC2 인스턴스로 전달하기 위해 CodeDeploy 설정
  • CodeDeploy 애플리케이션 생성
    • 배포 - 애플리케이션 생성 - 이름 플랫폼 설정 - 배포 그룹 생성 - EC2 인스턴스 태그를 이용해 환경 구성 ( 오류 무시 )
  • .yml 파일 설정
    • 최상위 디렉토리에 appspec.yml 파일 생성
  • script 디렉토리 생성 후 deploy.sh 파일 생성
    • EC2 배포 진행 상황 별 로그 기록과 새로 배포된 빌드 파일 실행
  • gradle.yml 파일에 Code Deploy 배포 명령 추가
  • 수정하고 푸쉬하면 깃헙 액션이 실행됨.

📖 배포 결과 및 로그 확인 튜토리얼

  • 배포 결과 확인
    • 깃헙 액션이 실행되고 워크플로, CodeDeploy 배포가 모두 성공하면 배포 결과 확인 가능
      EC2 인스턴스에서 퍼블릭 DNS로 접속하여 접근 가능 확인
    • EC2 인스턴스에서 actions 파일 들어가서 확인 가능
      cat deploy.log 파일이나 deploy_err.log 파일 확인 가능

profile
코린이의 공부 일지

0개의 댓글