Skip to content

Merge pull request #123 from TeamMody/feature/#121-post-is_public #101

Merge pull request #123 from TeamMody/feature/#121-post-is_public

Merge pull request #123 from TeamMody/feature/#121-post-is_public #101

Workflow file for this run

name: MODY service Dev Build and Deploy to AWS
on:
push:
branches:
- develop
jobs:
build-and-deploy:
runs-on: ubuntu-latest
steps:
# 1. 코드 체크아웃
- name: Checkout Code
uses: actions/checkout@v3
# 1-1. Java 21 세팅
- name: Set up JDK 21
uses: actions/setup-java@v3
with:
java-version: '21'
distribution: 'temurin'
# 1-2. application.yml 파일 생성
- name: make application.yml
run: |
# create application.yml
cd ./src/main
cd ./resources
# application.yml 파일 생성하기
touch ./application.yml
# Secrets에 저장한 값을 application.yml 파일에 쓰기
echo "${{ secrets.DEV_YML }}" >> ./application.yml
shell: bash # 스크립트가 Bash 셸에서 실행
# 1-2-1 start.sh 파일 생성
- name: make start.sh
run: |
# create start.sh
cd ./scripts
# start.sh 파일 생성하기
touch ./start.sh
# Secrets에 저장한 값을 start.sh 파일에 쓰기
echo "${{ secrets.START_SH }}" >> ./start.sh
# 1-3. Spring Boot 애플리케이션 빌드
- name: Build with Gradle
run: |
chmod +x ./gradlew
./gradlew clean build -x test
# 2. AWS CLI 설정
- name: Configure AWS Credentials
uses: aws-actions/configure-aws-credentials@v2
with:
aws-access-key-id: ${{ secrets.AWS_ACCESS_KEY_ID }}
aws-secret-access-key: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
aws-region: ${{ secrets.AWS_REGION }}
# 3. Docker 로그인
- name: Log in to Amazon ECR
run: |
aws ecr get-login-password --region ${{ secrets.AWS_REGION }} | docker login --username AWS --password-stdin ${{ secrets.AWS_ECR_REPO }}
# 4. Docker 이미지 빌드
- name: Build Docker Image
run: |
docker build -t ${{ secrets.AWS_ECR_REPO }}:latest .
docker tag ${{ secrets.AWS_ECR_REPO }}:latest ${{ secrets.AWS_ECR_REPO }}:latest
# 5. Docker 이미지 푸시
- name: Push to Amazon ECR
run: |
docker push ${{ secrets.AWS_ECR_REPO }}:latest
# 6-0. S3 업로드
- name: Upload to S3
run: |
zip -r deploy.zip appspec.yml scripts/
aws s3 cp deploy.zip s3://modi-service-bucket/deploy/deploy.zip
# 6. CodeDeploy 트리거
- name: Trigger CodeDeploy Deployment
run: |
aws deploy create-deployment \
--application-name modi-server \
--deployment-group-name modi-server-group \
--revision "{\"revisionType\":\"S3\",\"s3Location\":{\"bucket\":\"modi-service-bucket\",\"key\":\"deploy/deploy.zip\",\"bundleType\":\"zip\"}}"