해당 글은 아래 도서의 내용을 참고하며 정리한 개인학습용 글입니다.
스프링 부트 3 벡엔드 개발자 되기 - 자바 편, 신선영
- Spring Boot, AWS, Github Action
- 게시글 등록, 수정, 삭제 기능 구현
- Oauth2 인증 : 구글 소셜 로그인, JWT 토큰 인증
- AWS 배포 : Elastic Beanstalk 로 배포
- CI/CD : AGithub Actions를 이용하여 배포전 과정 자동화
# 워크플로의 이름 지정
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 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:
environment_name:
version_label: github-action-${{ steps.current-time.outputs.formattedTime }}
region: ap-northeast-2
deployment_package: ./build/libs/${{ env.artifact }}
- aws_access_key: AWS에 접근하기 위한 액세스 키
- aws_secret_key: AWS에 접근하기 위한 비밀 키
- application_name: 배포할 애플리케이션의 이름
- environment_name: 배포할 환경의 이름
- version_label: 배포 버전을 라벨링합니다. 현재 시간으로 생성된 라벨을 사용합니다.
- region: AWS 리전 (여기서는 ap-northeast-2, 즉 서울 리전)
- deployment_package: 배포할 패키지의 경로. 앞서 저장한 artifact 환경 변수를 사용하여 최근 빌드 결과를 지정
현재 aws 비용문제로 배포 중단상태입니다.