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
를 구축하자.💡 GithubActions
프로젝트 최상단에
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 }}
💡 AWS IAM
권한 설정을 위해
IAM
-> 대시보드
-> 사용자
아래 숫자 클릭사용자가 없다면 생성을 해주고 권한을 준다.
이렇게 생성된 사용자는 권한에 따라 관리를 하는데
루트 계정을 사용하지 않고 권한들을 분사해서 관리한다.
필자는 하나의 IAM 계정으로 관리하기에 생성하지 않았고,
중요한건
AdministratorAccess-AWSElasticBeanstalk
권한이 있어야 한다는 것생성된 사용자를 클릭하고
보안 자격 증명
탭에서 엑세스 키 만들기
를 클릭액세스 키 만들기
클릭 (둘 중 아무거나)서드 파티 서비스
, 확인
체크 후 다음
설명 태그 값은 선택 사항이다.
액세스 키 만들기
AccessKey 와 SecretAccessKey 를 발급받는다.
재발급 불가,
메모
or .csv
알아서 잘 관리한다.💡 Github Actions
해당 프로젝트의
Repository
-> Settings
-> Secrets and variables
-> Actions
이 후
Repository secrets
에서 New repository secret
아까 발급 받은 AccessKey 와 SecretAccessKey 를 생성해준다.
이후 커밋하고 푸쉬를 하면 완료
Repository
-> Actions
에서 확인이 가능하다.이상 SpringBootPrj 를 EB 에 배포하고 GithubActions 를 통해 CI/CD 환경을 구축했다. 👊