Skip to content

feat: EC2 환경 변수 경로 및 배포 스크립트 개선 #29

feat: EC2 환경 변수 경로 및 배포 스크립트 개선

feat: EC2 환경 변수 경로 및 배포 스크립트 개선 #29

Workflow file for this run

name: Deploy to EC2
on:
push:
branches:
- main
- feat/internal-server-api
jobs:
build-and-push:
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Log in to Docker Hub
uses: docker/login-action@v3
with:
username: ${{ secrets.DOCKERHUB_USERNAME }}
password: ${{ secrets.DOCKERHUB_TOKEN }}
- name: Build and push
uses: docker/build-push-action@v6
with:
context: .
push: true
tags: |
${{ secrets.DOCKERHUB_USERNAME }}/auth-server:latest
${{ secrets.DOCKERHUB_USERNAME }}/auth-server:${{ github.sha }}
deploy:
needs: build-and-push
runs-on: ubuntu-latest
steps:
- name: Setup SSH
run: |
mkdir -p ~/.ssh
echo "${{ secrets.EC2_KEY }}" > ~/.ssh/ec2_key.pem
chmod 600 ~/.ssh/ec2_key.pem
- name: Prepare env file
env:
ENV_FILE_CONTENT: ${{ secrets.AUTH_BE_ENV_FILE }}
run: |
printf '%s\n' "$ENV_FILE_CONTENT" > auth-be.env
- name: Create env dir on EC2
run: |
ssh -o StrictHostKeyChecking=no -i ~/.ssh/ec2_key.pem ${{ secrets.EC2_USER }}@${{ secrets.EC2_HOST }} 'mkdir -p ~/env'
- name: Copy env file to EC2
run: |
scp -o StrictHostKeyChecking=no -i ~/.ssh/ec2_key.pem auth-be.env ${{ secrets.EC2_USER }}@${{ secrets.EC2_HOST }}:~/env/auth-be.env
- name: Deploy to EC2
run: |
ssh -o StrictHostKeyChecking=no -i ~/.ssh/ec2_key.pem ${{ secrets.EC2_USER }}@${{ secrets.EC2_HOST }} '
set -e
export PATH="/usr/bin:/usr/local/bin:$PATH"
echo "${{ secrets.DOCKERHUB_TOKEN }}" | /usr/bin/docker login -u "${{ secrets.DOCKERHUB_USERNAME }}" --password-stdin
/usr/bin/docker pull ${{ secrets.DOCKERHUB_USERNAME }}/auth-server:latest
/usr/bin/docker stop auth-be 2>/dev/null || true
/usr/bin/docker rm auth-be 2>/dev/null || true
/usr/bin/docker run -d \
--name auth-be \
--restart unless-stopped \
-p 9000:9000 \
--env-file ~/env/auth-be.env \
${{ secrets.DOCKERHUB_USERNAME }}/auth-server:latest
/usr/bin/docker logout
'