Continuous Delivery (지속적 전달)
- 자동화된 배포 준비: CI 단계가 완료된 후, 배포 가능한 상태로 패키징합니다.
- 스테이징 배포: 프로덕션에 배포하기 전에 스테이징 환경에 배포하여 최종 검증을 수행합니다.
- 수동 승인: 프로덕션 배포 전에 수동 승인을 요구할 수 있습니다.
1. AWS 배포를 위한 세팅
.github/workflows/deploy.yml
name: bodykey on: push: branches: - master //master 브랜치에 푸시 이벤트가 발생할 때 이 워크플로우가 트리거. # https://github.com/actions/setup-java # actions/setup-java@v2는 사용자 정의 배포를 지원하고 Zulu OpenJDK, Eclipse Temurin 및 Adopt OpenJDK를 기본적으로 지원합니다. v1은 Zulu OpenJDK만 지원합니다. jobs: build: runs-on: ubuntu-latest steps: - name: Checkout uses: actions/checkout@v4 - name: Set up JDK 21 uses: actions/setup-java@v4 with: java-version: 21 distribution: 'temurin' - name: Permission run: chmod +x ./gradlew - name: Build with Gradle run: ./gradlew clean build - name: Deploy packaging run: | mkdir deploy cp build/libs/*.jar deploy/application.jar cp Procfile deploy/Procfile cp -r .ebextensions deploy/.ebextensions cd deploy && zip -r deploy.zip . # Amazon Elastic Beanstalk에 배포 - name: Deploy to EB uses: einaregilsson/beanstalk-deploy@v22 with: aws_access_key: ${{ secrets.AWS_ACCESS_KEY }} aws_secret_key: ${{ secrets.AWS_SECRET_KEY }} application_name: bodykey environment_name: bodykey-env version_label: ${{ github.run_number }} // GitHub의 실행 번호를 사용 region: ap-northeast-2 // 지역을 서울로 설정 deployment_package: deploy/deploy.zip
.ebextensions/00-makeFiles.config
files: "/sbin/appstart": //스크립트 파일의 경로 mode: "000755" // 파일의 권한을 설정. 000755는 소유자에게 읽기, 쓰기, 실행 권한을 부여하고, 그룹과 다른 사용자에게 읽기 및 실행 권한을 부여. owner: webapp group: webapp content: | #!/usr/bin/env bash //이 스크립트가 Bash 셸에서 실행됨을 지정 JAR_PATH=/var/app/current/application.jar //JAR_PATH 변수에 애플리케이션 JAR 파일의 경로를 설정 java -Dspring.profiles.active=prod -Dfile.encoding=UTF-8 -jar ${JAR_PATH}
Prodfile
springapp: appstart // 00-makeFiles.config 의 /sbin/appstart 스크립트와 관련이 있으며, 이 스크립트를 사용하여 Spring Boot 애플리케이션을 특정 환경에서 시작하는 역할
2. AWS 엑세스 키, 시크릿 키 만들기
aws 의 IAM 페이지를 들어간다.
사용자 생성을 한다.
정책 설정
사용자 생성 후 엑세스 키를 만든다.
엑세스키 생성 후 .csv 파일을 다운받는다. 파일에는 access 키와 secret 키를 확인할 수 있다.
3. Github 에 엑세스 키, 시크릿 키 등록
aws 에서 생성한 엑세스 키와 시크릿 키를 깃헙에 등록한다.
3. 사진 파일 빌드하기
.jar 파일이 있는 폴더를 연다.
그리고 사진이 저장되는 upload 폴더를 복사한다.
그리고 .jar 파일 옆에 upload 폴더를 붙여넣는다.
참고로 사진이 저장되는 경로는 상대 경로여야 한다. 절대 경로로 만들게 되면 추후에 별도 설정이 필요하기 때문에 귀찮다.
.github/workflows/deploy.yml
cp -r upload deploy/upload
그리고 deploy.yml에 upload 폴더도 복사하는 코드를 작성한다.
Share article