Skip to content

Deploy to Development Server #135

Deploy to Development Server

Deploy to Development Server #135

Workflow file for this run

name: Deploy to Development Server
on:
workflow_run:
workflows: ["Build and Push to GHCR"]
types:
- completed
branches: [ develop ]
jobs:
deploy:
runs-on: ubuntu-latest
if: ${{ github.event.workflow_run.conclusion == 'success' }}
steps:
- name: Deploy to development server
uses: appleboy/ssh-action@master
with:
host: 144.24.78.166
username: ubuntu
key: ${{ secrets.DEV_SERVER_PRIVATE_KEY }}
script: |
# GitHub Container Registry 로그인
echo ${{ secrets.PAT_TOKEN }} | docker login ghcr.io -u ${{ github.actor }} --password-stdin
# 프로젝트 디렉토리 생성 및 이동
mkdir -p ~/memory/memory-backend
cd ~/memory/memory-backend
# 기존 저장소가 없다면 클론, 있다면 풀
if [ ! -d ".git" ]; then
git clone -b develop https://github.com/${{ github.repository }}.git .
else
git fetch origin develop
git reset --hard origin/develop
fi
# docker compose 실행
cd memory-infra/docker/dev
# .env 파일 생성
cat > .env << EOF
POSTGRES_DB=${{ secrets.POSTGRES_DB }}
POSTGRES_USER=${{ secrets.POSTGRES_USER }}
POSTGRES_PASSWORD=${{ secrets.POSTGRES_PASSWORD }}
JWT_TOKEN_SECRET=${{ secrets.JWT_TOKEN_SECRET }}
ELASTIC_PASSWORD=${{ secrets.ELASTIC_PASSWORD }}
KIBANA_PASSWORD=${{ secrets.KIBANA_PASSWORD }}
[email protected]
EOF
# 기존 컨테이너 중지 및 제거
docker compose down
# 기존 이미지 제거 (추가)
docker compose pull
# Elasticsearch 디렉토리 권한 설정
sudo mkdir -p data/elasticsearch-data
sudo chown -R ubuntu:ubuntu data/elasticsearch-data
sudo chmod -R 777 data/elasticsearch-data
# 컨테이너 빌드 및 시작
docker compose up -d --build
# kibana_system 사용자 비밀번호 설정
docker exec memory-elasticsearch-dev curl -X POST "localhost:9200/_security/user/kibana_system/_password" \
-H "Content-Type: application/json" \
-u elastic:${{ secrets.ELASTIC_PASSWORD }} \
-d "{\"password\": \"${{ secrets.KIBANA_PASSWORD }}\"}"
# Kibana 재시작
docker compose restart kibana
# 사용하지 않는 이미지 정리
docker image prune -f