Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
64 changes: 42 additions & 22 deletions .github/workflows/cd.yml
Original file line number Diff line number Diff line change
@@ -1,8 +1,7 @@
name: COCKPLE_CD

on:
push:
branches: [ "main" ]
branches: [ "main", "develop" ]

permissions:
contents: read
Expand All @@ -20,16 +19,30 @@ jobs:
distribution: "adopt"
cache: gradle


- name: Remove existing application.yml (if exists)
- name: Set environment variables by branch
id: vars
run: |
rm -f src/main/resources/application.yml
if [ "${{ github.ref_name }}" == "main" ]; then
echo "APP_SECRET=APPLICATION" >> $GITHUB_OUTPUT
echo "DOCKER_TAG=latest" >> $GITHUB_OUTPUT
echo "COMPOSE_FILE=docker-compose.prod.yml" >> $GITHUB_OUTPUT
else
echo "APP_SECRET=APPLICATION_STAGING" >> $GITHUB_OUTPUT
echo "DOCKER_TAG=staging" >> $GITHUB_OUTPUT
echo "COMPOSE_FILE=docker-compose.staging.yml" >> $GITHUB_OUTPUT
fi

- name: Remove existing application.yml
run: rm -f src/main/resources/application.yml

- name: Make application.yml
run: |
mkdir -p src/main/resources
echo "${{ secrets.APPLICATION }}" > src/main/resources/application-dev.yml
mv src/main/resources/application-dev.yml src/main/resources/application.yml
if [ "${{ github.ref_name }}" == "main" ]; then
echo "${{ secrets.APPLICATION }}" > src/main/resources/application.yml
else
echo "${{ secrets.APPLICATION_STAGING }}" > src/main/resources/application.yml
fi

- name: Build with Gradle
run: |
Expand All @@ -39,9 +52,8 @@ jobs:
- name: Docker BUILD_PUSH
run: |
docker login -u ${{ secrets.DOCKER_USERNAME }} -p ${{ secrets.DOCKER_PASSWORD }}
docker build -f Dockerfile -t ${{ secrets.DOCKER_REPO }} .
docker push ${{ secrets.DOCKER_REPO }}

docker build -f Dockerfile -t ${{ secrets.DOCKER_REPO }}:${{ steps.vars.outputs.DOCKER_TAG }} .
docker push ${{ secrets.DOCKER_REPO }}:${{ steps.vars.outputs.DOCKER_TAG }}

- name: Deploy_EC2
uses: appleboy/ssh-action@master
Expand All @@ -52,22 +64,30 @@ jobs:
key: ${{ secrets.KEY }}
script: |
cd /home/ubuntu/home/monitor

echo "=== 배포 전 상태 ==="
sudo docker ps

sudo docker image prune -f
sudo docker pull ${{ secrets.DOCKER_REPO }}
sudo docker stop cockple-app || true
sudo docker rm -f cockple-app || true
sudo docker pull ${{ secrets.DOCKER_REPO }}:${{ steps.vars.outputs.DOCKER_TAG }}

if ! sudo docker ps | grep -q redis; then
echo "Redis가 죽었음, 재시작 중..."
sudo docker compose up -d redis
sleep 10
if [ "${{ github.ref_name }}" == "main" ]; then
sudo docker stop cockple-app || true
sudo docker rm -f cockple-app || true
if ! sudo docker ps | grep -q cockple-redis; then
echo "Redis(prod)가 죽었음, 재시작 중..."
sudo docker compose -f docker-compose.prod.yml up -d redis
sleep 10
fi
sudo docker compose -f docker-compose.prod.yml up -d cockple-app
else
sudo docker stop cockple-app-staging || true
sudo docker rm -f cockple-app-staging || true
if ! sudo docker ps | grep -q cockple-redis-staging; then
echo "Redis(staging)가 죽었음, 재시작 중..."
sudo docker compose -f docker-compose.staging.yml up -d redis-staging
sleep 10
fi
sudo docker compose -f docker-compose.staging.yml up -d cockple-app-staging
fi

sudo docker compose up -d cockple-app

echo "=== 배포 후 상태 ==="
sudo docker ps
sudo docker ps
8 changes: 6 additions & 2 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -22,10 +22,14 @@ jobs:
distribution: 'temurin'
cache: gradle

- name: Make application.yml (test용)
- name: Make application.yml (브랜치별 분기 - 개발용, 운영용)
run: |
mkdir -p src/main/resources
echo "${{ secrets.APPLICATION }}" > src/main/resources/application.yml
if [ "${{ github.base_ref }}" == "main" ]; then
echo "${{ secrets.APPLICATION }}" > src/main/resources/application.yml
else
echo "${{ secrets.APPLICATION_STAGING }}" > src/main/resources/application.yml
fi

- name: Grant execute permission for Gradle
run: chmod +x gradlew
Expand Down