Skip to content

Merge pull request #122 from TeamMody/develop #1

Merge pull request #122 from TeamMody/develop

Merge pull request #122 from TeamMody/develop #1

Workflow file for this run

name: MODY service Build and Deploy to AWS
on:
push:
branches:
- main
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.YML }}" >> ./application.yml
shell: bash # 스크립트가 Bash 셸에서 실행
# 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에 로그인 (AWS CLI 사용)
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 }}:prod .
docker tag ${{ secrets.AWS_ECR_REPO }}:prod ${{ secrets.AWS_ECR_REPO }}:prod
# 5. Docker 이미지 푸시
- name: Push to Amazon ECR
run: |
docker push ${{ secrets.AWS_ECR_REPO }}:prod
# 6. CodeDeploy 트리거
- name: Trigger CodeDeploy Deployment
run: |
aws deploy create-deployment \
--application-name my-app \
--deployment-group-name my-app-group \
--revision "{\"revisionType\":\"AppSpecContent\",\"appSpecContent\":{\"content\":\"$(cat appspec.yml)\"}}"