Skip to content

[CHORE] 인프라 수정 (#348) #189

[CHORE] 인프라 수정 (#348)

[CHORE] 인프라 수정 (#348) #189

Workflow file for this run

name: CD API DEV
on:
push:
branches: [ develop ]
jobs:
build:
runs-on: ubuntu-latest
defaults:
run:
shell: bash
working-directory: .
steps:
- uses: actions/checkout@v4
- name: Set up JDK 17
uses: actions/setup-java@v4
with:
distribution: 'corretto'
java-version: '17'
- name: Grant execute permission for gradlew
run: chmod +x gradlew
- name: Grant execute permission for run-test-mysql-redis.sh
run: chmod +x run-test-mysql-redis.sh
- name: Start MySQL for testing
run: ./run-test-mysql-redis.sh
- name: Test & Build
run: ./gradlew build
- name: Sign in Dockerhub
uses: docker/login-action@v3
with:
username: ${{ secrets.DOCKER_USERNAME }}
password: ${{ secrets.DOCKER_PASSWORD }}
- name: Build the Docker image
run: docker build -f ./Dockerfile --platform linux/amd64 --no-cache -t samhap/kokomen-interview-api:dev .
- name: Push the Docker Image to Dockerhub
run: docker push samhap/kokomen-interview-api:dev
deploy:
needs: build
runs-on: [ self-hosted, dev, org, new ] # 규칙대로는 dev-api가 더 자연스럽지만, 기존 runner 사용하기 위해 dev 유지
steps:
- name: Create dev-kokomen-net Docker network
run: |
NETWORK_NAME="dev-kokomen-net"
if ! sudo docker network inspect "$NETWORK_NAME" >/dev/null 2>&1; then
echo "Creating Docker network: $NETWORK_NAME"
sudo docker network create --driver bridge "$NETWORK_NAME"
else
echo "Docker network '$NETWORK_NAME' already exists. Skipping."
fi
- name: pull docker compose yaml files
working-directory: /home/ubuntu
run: |
[ -d kokomen-backend ] || git clone --filter=blob:none --no-checkout https://github.com/samhap-soft/kokomen-backend.git
cd kokomen-backend
git sparse-checkout init --cone
git fetch origin develop
git checkout develop
git sparse-checkout set docker/dev
git pull origin develop
- name: Stop existing container
run: sudo docker rm -f kokomen-interview-api-dev
- name: Remove old API Docker image
run: |
if sudo docker images samhap/kokomen-interview-api:dev -q | grep -q .; then
sudo docker rmi -f samhap/kokomen-interview-api:dev || true
fi
- name: Docker Image pull
run: sudo docker pull samhap/kokomen-interview-api:dev
- name: Docker run
working-directory: /home/ubuntu
env:
SPRING_DATASOURCE_URL_DEV: ${{ secrets.SPRING_DATASOURCE_URL_DEV }}
SPRING_DATASOURCE_USERNAME_DEV: ${{ secrets.SPRING_DATASOURCE_USERNAME_DEV }}
SPRING_DATASOURCE_PASSWORD_DEV: ${{ secrets.SPRING_DATASOURCE_PASSWORD_DEV }}
OPEN_AI_API_KEY: ${{ secrets.OPEN_AI_API_KEY }}
KAKAO_CLIENT_ID_DEV: ${{ secrets.KAKAO_CLIENT_ID_DEV }}
KAKAO_CLIENT_SECRET_DEV: ${{ secrets.KAKAO_CLIENT_SECRET_DEV }}
KAKAO_ADMIN_KEY_DEV: ${{ secrets.KAKAO_ADMIN_KEY_DEV }}
MYSQL_ROOT_PASSWORD_DEV: ${{ secrets.MYSQL_ROOT_PASSWORD_DEV }} # docker-compose-dev.yml에서 kokomen-mysql-dev를 실행시킬 때 필요
SUPERTONE_API_TOKEN: ${{ secrets.SUPERTONE_API_TOKEN }}
GOOGLE_CLIENT_ID_DEV: ${{ secrets.GOOGLE_CLIENT_ID_DEV }}
GOOGLE_CLIENT_SECRET_DEV: ${{ secrets.GOOGLE_CLIENT_SECRET_DEV }}
WIDGET_SECRET_KEY_DEV: ${{ secrets.WIDGET_SECRET_KEY_DEV }}
run: |
export HOSTNAME=$(hostname)
cd kokomen-backend/docker/dev
sudo -E docker compose -f docker-compose-dev.yml up -d