1- name : CI/CD Direct Deploy to Server
1+ name : Auto Deploy
22
33on :
44 push :
55 branches :
6- - main
6+ - master
77
88jobs :
99 deploy :
10- runs-on : ubuntu-latest
10+ runs-on : self-hosted
1111 steps :
12- - name : Checkout repo
13- uses : actions/checkout@v4
14-
15- - name : Deploy to server via SSH
16- uses : appleboy/ssh-action@v1.1.0
17- with :
18- host : ${{ secrets.SERVER_HOST }}
19- username : ${{ secrets.SERVER_USER }}
20- key : ${{ secrets.SERVER_SSH_KEY }}
21- script : |
22- set -e
23- APP_NAME=iiitt-new-dev
24- echo "Updating repository..."
25- git fetch origin main
26- git pull origin main
27-
28- if [ "$(docker ps -q -f name=$APP_NAME)" ]; then
29- echo "Backing up current container..."
30- docker commit $APP_NAME ${IMAGE_NAME}:backup
31- docker stop $APP_NAME || true
32- docker rm $APP_NAME || true
33- fi
34-
35- echo "Building new image..."
36- docker build -t ${IMAGE_NAME}:latest -t ${IMAGE_NAME}:${COMMIT_SHA} .
37-
38- echo "Running new container..."
39- docker run -d --name $APP_NAME -p ${SERVER_PORT}:${DOCKER_PORT} ${IMAGE_NAME}:latest
40-
41- echo "Cleaning up old images..."
42- docker image prune -a --filter "until=48h" --filter "dangling=true" -f
43- for img in $(docker images -q); do
44- if ! docker ps -a --format '{{.Image}}' | grep -q $img; then
45- echo "Removing unused image $img"
46- docker rmi -f $img || true
47- fi
48- done
12+ - uses : actions/checkout@v4
13+
14+ - name : Build & Deploy Docker
15+ run : |
16+ set -e
17+ APP_NAME=iiitt-dev-website
18+ IMAGE_NAME=${APP_NAME}
19+ COMMIT_SHA=${GITHUB_SHA::7}
20+ SERVER_PORT=4908
21+ DOCKER_PORT=3000
22+
23+ cd /var/www/html/iiitt.ac.in
24+
25+ git pull
26+
27+ echo "Stopping old container if running..."
28+ docker stop $APP_NAME || true
29+ docker rm $APP_NAME || true
30+
31+ echo "Building Docker image..."
32+ docker build -t ${IMAGE_NAME}:latest -t ${IMAGE_NAME}:${COMMIT_SHA} .
33+
34+ echo "Starting new container..."
35+ docker run -d --name $APP_NAME -p ${SERVER_PORT}:${DOCKER_PORT} ${IMAGE_NAME}:latest
36+
37+ echo "Cleanup dangling images..."
38+ docker image prune -f --filter "dangling=true"
0 commit comments