@@ -63,31 +63,56 @@ jobs:
6363 if [[ ${{ github.ref_name }} == dev-* ]]; then
6464 echo "ENVIRONMENT=dev" >> $GITHUB_ENV
6565 echo "COMPOSE_FILE=docker-compose-dev.yml" >> $GITHUB_ENV
66- echo "SERVER_HOST=${{ secrets.DEV_SERVER_HOST }}" >> $GITHUB_ENV
67- echo "SERVER_USER=${{ secrets.DEV_SERVER_USER }}" >> $GITHUB_ENV
68- echo "DEPLOY_PATH=${{ secrets.DEV_DEPLOY_PATH }}" >> $GITHUB_ENV
66+ echo "NGINX_FILE=nginx-dev.conf" >> $GITHUB_ENV
67+ echo "SERVER_HOST=${{ vars.DEV_SERVER_HOST }}" >> $GITHUB_ENV
68+ echo "SERVER_USER=${{ vars.DEV_SERVER_USER }}" >> $GITHUB_ENV
69+ echo "DEPLOY_PATH=${{ vars.DEV_DEPLOY_PATH }}" >> $GITHUB_ENV
6970 else
7071 echo "ENVIRONMENT=prod" >> $GITHUB_ENV
7172 echo "COMPOSE_FILE=docker-compose-prod.yml" >> $GITHUB_ENV
72- echo "SERVER_HOST=${{ secrets.PROD_SERVER_HOST }}" >> $GITHUB_ENV
73- echo "SERVER_USER=${{ secrets.PROD_SERVER_USER }}" >> $GITHUB_ENV
74- echo "DEPLOY_PATH=${{ secrets.PROD_DEPLOY_PATH }}" >> $GITHUB_ENV
73+ echo "NGINX_FILE=nginx-prod.conf" >> $GITHUB_ENV
74+ echo "SERVER_HOST=${{ vars.PROD_SERVER_HOST }}" >> $GITHUB_ENV
75+ echo "SERVER_USER=${{ vars.PROD_SERVER_USER }}" >> $GITHUB_ENV
76+ echo "DEPLOY_PATH=${{ vars.PROD_DEPLOY_PATH }}" >> $GITHUB_ENV
7577 fi
7678
77- - name : Setup SSH key
78- run : |
79- mkdir -p ~/.ssh
80- if [[ ${{ github.ref_name }} == dev-* ]]; then
81- echo "${{ secrets.DEV_SERVER_SSH_KEY }}" > ~/.ssh/id_rsa
82- else
83- echo "${{ secrets.PROD_SERVER_SSH_KEY }}" > ~/.ssh/id_rsa
84- fi
85- chmod 600 ~/.ssh/id_rsa
86- ssh-keyscan -H $SERVER_HOST >> ~/.ssh/known_hosts
87-
8879 - name : Copy docker-compose file to server
89- run : |
90- scp -i ~/.ssh/id_rsa deploy/$COMPOSE_FILE $SERVER_USER@$SERVER_HOST:$DEPLOY_PATH/docker-compose.yml
80+ 81+ with :
82+ host : ${{ env.SERVER_HOST }}
83+ username : ${{ env.SERVER_USER }}
84+ key : ${{ startsWith(github.ref_name, 'dev-') && secrets.DEV_SERVER_SSH_KEY || secrets.PROD_SERVER_SSH_KEY }}
85+ source : " deploy/${{ env.COMPOSE_FILE }}"
86+ target : ${{ env.DEPLOY_PATH }}
87+
88+ - name : Copy nginx.conf file to server
89+ 90+ with :
91+ host : ${{ env.SERVER_HOST }}
92+ username : ${{ env.SERVER_USER }}
93+ key : ${{ startsWith(github.ref_name, 'dev-') && secrets.DEV_SERVER_SSH_KEY || secrets.PROD_SERVER_SSH_KEY }}
94+ source : " deploy/${{ env.NGINX_FILE }}"
95+ target : ${{ env.DEPLOY_PATH }}
96+
97+ - name : Rename docker-compose file on server
98+ 99+ with :
100+ host : ${{ env.SERVER_HOST }}
101+ username : ${{ env.SERVER_USER }}
102+ key : ${{ startsWith(github.ref_name, 'dev-') && secrets.DEV_SERVER_SSH_KEY || secrets.PROD_SERVER_SSH_KEY }}
103+ script : |
104+ cd ${{ env.DEPLOY_PATH }}
105+ mv deploy/${{ env.COMPOSE_FILE }} ./docker-compose.yml
106+
107+ - name : Rename nginx.conf file on server
108+ 109+ with :
110+ host : ${{ env.SERVER_HOST }}
111+ username : ${{ env.SERVER_USER }}
112+ key : ${{ startsWith(github.ref_name, 'dev-') && secrets.DEV_SERVER_SSH_KEY || secrets.PROD_SERVER_SSH_KEY }}
113+ script : |
114+ cd ${{ env.DEPLOY_PATH }}
115+ mv deploy/${{ env.NGINX_FILE }} ./nginx.conf
91116
92117 - name : Output server status
93118 id : server-info
@@ -103,14 +128,14 @@ jobs:
103128 run : |
104129 if [[ ${{ github.ref_name }} == dev-* ]]; then
105130 echo "ENVIRONMENT=dev" >> $GITHUB_ENV
106- echo "SERVER_HOST=${{ secrets .DEV_SERVER_HOST }}" >> $GITHUB_ENV
107- echo "SERVER_USER=${{ secrets .DEV_SERVER_USER }}" >> $GITHUB_ENV
108- echo "DEPLOY_PATH=${{ secrets .DEV_DEPLOY_PATH }}" >> $GITHUB_ENV
131+ echo "SERVER_HOST=${{ vars .DEV_SERVER_HOST }}" >> $GITHUB_ENV
132+ echo "SERVER_USER=${{ vars .DEV_SERVER_USER }}" >> $GITHUB_ENV
133+ echo "DEPLOY_PATH=${{ vars .DEV_DEPLOY_PATH }}" >> $GITHUB_ENV
109134 else
110135 echo "ENVIRONMENT=prod" >> $GITHUB_ENV
111- echo "SERVER_HOST=${{ secrets .PROD_SERVER_HOST }}" >> $GITHUB_ENV
112- echo "SERVER_USER=${{ secrets .PROD_SERVER_USER }}" >> $GITHUB_ENV
113- echo "DEPLOY_PATH=${{ secrets .PROD_DEPLOY_PATH }}" >> $GITHUB_ENV
136+ echo "SERVER_HOST=${{ vars .PROD_SERVER_HOST }}" >> $GITHUB_ENV
137+ echo "SERVER_USER=${{ vars .PROD_SERVER_USER }}" >> $GITHUB_ENV
138+ echo "DEPLOY_PATH=${{ vars .PROD_DEPLOY_PATH }}" >> $GITHUB_ENV
114139 fi
115140 echo "IMAGE_TAG=${{ github.ref_name }}" >> $GITHUB_ENV
116141 echo "IMAGE_URI=${{ needs.build-and-push.outputs.image-uri }}" >> $GITHUB_ENV
@@ -126,45 +151,32 @@ jobs:
126151 id : login-ecr
127152 uses : aws-actions/amazon-ecr-login@v2
128153
129- - name : Setup SSH key
130- run : |
131- mkdir -p ~/.ssh
132- if [[ ${{ github.ref_name }} == dev-* ]]; then
133- echo "${{ secrets.DEV_SERVER_SSH_KEY }}" > ~/.ssh/id_rsa
134- else
135- echo "${{ secrets.PROD_SERVER_SSH_KEY }}" > ~/.ssh/id_rsa
136- fi
137- chmod 600 ~/.ssh/id_rsa
138- ssh-keyscan -H $SERVER_HOST >> ~/.ssh/known_hosts
139-
140154 - name : Deploy to server
141- run : |
142- ssh -i ~/.ssh/id_rsa $SERVER_USER@$SERVER_HOST << 'EOF'
155+ 156+ with :
157+ host : ${{ env.SERVER_HOST }}
158+ username : ${{ env.SERVER_USER }}
159+ key : ${{ startsWith(github.ref_name, 'dev-') && secrets.DEV_SERVER_SSH_KEY || secrets.PROD_SERVER_SSH_KEY }}
160+ script : |
143161 cd ${{ env.DEPLOY_PATH }}
144162
145163 # AWS CLI 설정 (서버에 AWS CLI가 설치되어 있다고 가정)
146- aws ecr get-login-password --region ${{ env.AWS_REGION }} | docker login --username AWS --password-stdin ${{ steps.login-ecr.outputs.registry }}
164+ aws ecr get-login-password --region ${{ env.AWS_REGION }} | sudo docker login --username AWS --password-stdin ${{ steps.login-ecr.outputs.registry }}
147165
148166 # 새 이미지 pull (서비스 실행 중에 미리 받아두기)
149- docker pull ${{ env.IMAGE_URI }}
167+ sudo docker pull ${{ env.IMAGE_URI }}
150168
151169 # 현재 latest 이미지를 previous로 백업
152- docker tag potg-backend:latest potg-backend:previous || true
170+ sudo docker tag potg-backend:latest potg-backend:previous || true
153171
154172 # potg-backend 서비스만 중지 (다운타임 시작)
155- docker- compose stop potg-backend
173+ sudo docker compose stop potg-backend
156174
157175 # 기존 latest 이미지 삭제
158- docker rmi potg-backend:latest || true
176+ sudo docker rmi potg-backend:latest || true
159177
160178 # 새 이미지를 latest로 태그 (로컬 이름으로)
161- docker tag ${{ env.IMAGE_URI }} potg-backend:latest
179+ sudo docker tag ${{ env.IMAGE_URI }} potg-backend:latest
162180
163181 # potg-backend 서비스만 시작 (다운타임 종료)
164- docker-compose up -d potg-backend
165- EOF
166-
167- - name : Cleanup SSH key
168- if : always()
169- run : |
170- rm -f ~/.ssh/id_rsa
182+ sudo docker compose up -d potg-backend
0 commit comments