Skip to content

[deploy] - 콕찌르기/Platform 연동 안정화 & Slack 로깅 예외 방지 prod 배포 (#608) #140

[deploy] - 콕찌르기/Platform 연동 안정화 & Slack 로깅 예외 방지 prod 배포 (#608)

[deploy] - 콕찌르기/Platform 연동 안정화 & Slack 로깅 예외 방지 prod 배포 (#608) #140

Workflow file for this run

name: 🚀MAKERS-APP-RELEASE!
on:
push:
branches: [ 'main' ]
tags: [ 'makers-app-prod' ]
env:
SPRING_PROFILES_ACTIVE: prod
ECR_APP_NAME: ${{ secrets.ECR_APP_NAME }}-prod
APP_ECR_REPO: ${{ secrets.ECR_HOST }}/${{ secrets.ECR_APP_NAME }}-prod
ECR_HOST: ${{ secrets.ECR_HOST }}
jobs:
build:
name: CD Pipeline
runs-on: ubuntu-latest
steps:
- name: checkout
uses: actions/checkout@v3
- name: set up JDK 21
uses: actions/setup-java@v3
with:
distribution: 'corretto'
java-version: '21'
- name: touch yml files
run: |
touch ./src/main/resources/application-prod.yml
touch ./src/test/resources/application-test.yml
shell: bash
- name: copy application.yml files
run: |
echo "${{ secrets.APPLICATION_PROD_YML }}" > ./src/main/resources/application-prod.yml
echo "${{ secrets.APPLICATION_TEST_YML }}" > ./src/test/resources/application-test.yml
- name: Configure AWS credentials
uses: aws-actions/configure-aws-credentials@v2
with:
aws-access-key-id: ${{ secrets.AWS_ACCESS_ID }}
aws-secret-access-key: ${{ secrets.AWS_SECRET_KEY }}
aws-region: ap-northeast-2
- name: 🐘Gradle Build
run: |
chmod +x ./gradlew
./gradlew clean build -x test
- name: Login to ECR
run: |
aws ecr-public get-login-password --region us-east-1 | docker login --username AWS --password-stdin $ECR_HOST
- name: 🐳Docker Image Build & Push
run: |
docker build \
--no-cache \
-f Dockerfile-prod \
--build-arg SPRING_PROFILES_ACTIVE=$SPRING_PROFILES_ACTIVE \
-t $ECR_APP_NAME .
docker tag $ECR_APP_NAME:latest $APP_ECR_REPO
docker push $APP_ECR_REPO
- name: Copy docker-compose.yml
run: echo "${{ secrets.DOCKER_COMPOSE_PROD_YML }}" > ./docker-compose.yml
- name: Send docker-compose.yml to EC2 Instance
uses: appleboy/scp-action@master
with:
username: ubuntu
host: ${{ secrets.PROD_SERVER_IP }}
key: ${{ secrets.PROD_PEM_KEY }}
source: "./docker-compose.yml"
target: "/home/ubuntu/app/"
- name: Send deploy script to EC2 Instance
uses: appleboy/scp-action@master
with:
username: ubuntu
host: ${{ secrets.PROD_SERVER_IP }}
key: ${{ secrets.PROD_PEM_KEY }}
source: "./script/"
target: "/home/ubuntu/app/"
- name: Docker Container Run
uses: appleboy/ssh-action@master
with:
username: ubuntu
host: ${{ secrets.PROD_SERVER_IP }}
key: ${{ secrets.PROD_PEM_KEY }}
script: |
cd ~
cd ./app
echo "Creating .env file..."
echo "AWS_ACCESS_KEY_ID=${{ secrets.AWS_ACCESS_ID }}" > .env
echo "AWS_SECRET_ACCESS_KEY=${{ secrets.AWS_SECRET_KEY }}" >> .env
sudo chmod +x ./script/*.sh
./script/deploy.sh
docker image prune -f