Skip to content

Commit 55cd18d

Browse files
committed
Add deployment workflow
1 parent c7b6c51 commit 55cd18d

File tree

1 file changed

+62
-0
lines changed

1 file changed

+62
-0
lines changed

.github/workflows/deploy.yaml

+62
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,62 @@
1+
name: Deploy to EC2
2+
3+
on:
4+
push:
5+
branches:
6+
- dev
7+
8+
jobs:
9+
deploy:
10+
runs-on: ubuntu-latest
11+
12+
steps:
13+
- name: Checkout repository
14+
uses: actions/checkout@v4
15+
16+
- name: Set environment variables
17+
run: |
18+
if [[ "${{ github.ref }}" == "refs/head/main" ]]; then
19+
echo "DEPLOY_DIR=/data/MusicCPRProd" >> $GITHUB_ENV
20+
echo "IMAGE_NAME=backend:prod" >> $GITHUB_ENV
21+
echo "CONTAINER_NAME=backend-prod" >> $GITHUB_ENV
22+
echo "HOST_POST=8001" >> $GITHUB_ENV
23+
else
24+
echo "DEPLOY_DIR=/data/MusicCPRDev" >> $GITHUB_ENV
25+
echo "IMAGE_NAME=backend:dev" >> $GITHUB_ENV
26+
echo "CONTAINER_NAME=backend-dev" >> $GITHUB_ENV
27+
echo "HOST_POST=8000" >> $GITHUB_ENV
28+
fi
29+
- name: Set up SSH
30+
run: |
31+
mkdir -p ~/.ssh
32+
echo "${{ secrets.EC2_SSH_PRIVATE_KEY }}" > ~/.ssh/id_rsa
33+
chmod 600 ~/.ssh/id_rsa
34+
ssh-keyscan -H ${{ secrets.EC2_HOST }} >> ~/.ssh/known_hosts
35+
36+
- name: Deploy to EC2
37+
run: |
38+
ssh ${{ secrets.EC2_USER }}@${{ secrets.EC2_HOST }} << 'EOF'
39+
set -e
40+
echo "Deploying to ${{ env.DEPLOY_DIR }}"
41+
42+
cd ${{ env.DEPLOY_DIR }}
43+
44+
echo "Pulling latest changes..."
45+
git pull origin ${{ github.ref_name }}
46+
47+
echo "Stopping and removing old container"
48+
docker stop ${{ env.CONTAINER_NAME }} || true
49+
docker rm ${{ env.CONTAINER_NAME }} || true
50+
51+
echo "Removing old image"
52+
docker rmi ${{ env.IMAGE_NAME }} || true
53+
54+
echo "Building new image..."
55+
docker build -t ${{ env.IMAGE_NAME }} .
56+
57+
echo "Starting new container..."
58+
docker run -d --name ${{ env.CONTAINER_NAME }} \
59+
-p ${{ env.HOST_PORT }}:8000 \
60+
-v ./.env:/app/.env \
61+
${{ env.IMAGE_NAME }}
62+

0 commit comments

Comments
 (0)