Merge pull request #123 from TeamMody/feature/#121-post-is_public #101
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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\"}}" |