Spring Boot 를 AWS 로 배포해보자.
PRJ : Spring Boot (java17)
배포 : Elastic Beanstalk
DB : RDS (MySQL) Elastic Cache Redis
CI/CD : GithubAcations
이전 포스팅에서 Elastic Beanstalk
에 .jar
를 배포했다.
매번 구현할 때마다 프로젝트를 build
해서 배포할 수 없는 법!
GithubActions
를 이용해 CI/CD
를 구축하자.
프로젝트 최상단에 cicd.yml
을 생성해 줘야 한다.
디렉토리부터 오탈자 없이 생성
.github
-> workflows
-> cicd.yml
이제 cicd.yml
을 설정해야한다.
# 워크 플로우의 이름
name : CI/CD
# 워크 플로우가 시작될 브랜치 지정
on:
push:
branches: [ main ]
jobs:
build:
runs-on: ubuntu-latest # 실행 환경 지정
# 실행 스텝 지정
steps:
- uses: actions/checkout@v3
- uses: actions/setup-java@v3
with:
distribution: 'corretto'
java-version: '17'
- name: Grant execute permission for gradlew
run: chmod +x gradlew
# 테스트 환경
- name: Build and Test with Gradle
run: ./gradlew clean build test
env:
SPRING_DATASOURCE_URL: jdbc:h2:mem:test;MODE=MYSQL
SPRING_DATASOURCE_DRIVER_CLASS_NAME: org.h2.Driver
SPRING_DATASOURCE_USERNAME: sa
SPRING_DATASOURCE_PASSWORD: password
- name: Build with Gradle
run: ./gradlew clean build
# 현재 시간 가져오기
- name: Get current time
uses: josStorer/get-current-time@v2.0.2
id: current-time
with:
format: YYYY-MM-DDTHH-mm-ss
utcOffset: "+09:00"
# 배포용 패키지 경로 저장
- name: Set artifact
run: echo "artifact=$(ls ./build/libs)" >> $GITHUB_ENV
# 빈스토크 배포
- name: Beanstalk Deploy
uses: einaregilsson/beanstalk-deploy@v20
with:
aws_access_key: ${{ secrets.AWS_ACCESS_KEY_ID }}
aws_secret_key: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
application_name: temfriend
environment_name: temfriend-env
version_label: github-action-${{ steps.current-time.outputs.formattedTime }}
region: ap-northeast-2
deployment_package: ./build/libs/${{ env.artifact }}
권한 설정을 위해 IAM
-> 대시보드
-> 사용자
아래 숫자 클릭
사용자가 없다면 생성을 해주고 권한을 준다.
이렇게 생성된 사용자는 권한에 따라 관리를 하는데
루트 계정을 사용하지 않고 권한들을 분사해서 관리한다.
필자는 하나의 IAM 계정으로 관리하기에 생성하지 않았고,
중요한건 AdministratorAccess-AWSElasticBeanstalk
권한이 있어야 한다는 것
생성된 사용자를 클릭하고 보안 자격 증명
탭에서 엑세스 키 만들기
를 클릭
액세스 키 만들기
클릭 (둘 중 아무거나)
서드 파티 서비스
, 확인
체크 후 다음
설명 태그 값은 선택 사항이다. 액세스 키 만들기
AccessKey 와 SecretAccessKey 를 발급받는다.
재발급 불가, 메모
or .csv
알아서 잘 관리한다.
해당 프로젝트의 Repository
-> Settings
-> Secrets and variables
-> Actions
이 후 Repository secrets
에서 New repository secret
아까 발급 받은 AccessKey 와 SecretAccessKey 를 생성해준다.
이후 커밋하고 푸쉬를 하면 완료 Repository
-> Actions
에서 확인이 가능하다.
이상 SpringBootPrj 를 EB 에 배포하고 GithubActions 를 통해 CI/CD 환경을 구축했다. 👊