Refactor pipeline script

This commit is contained in:
Murtadha 2024-07-27 21:18:10 -04:00
parent dc780a3ec4
commit 6bb221cbce

View file

@ -1,120 +1,121 @@
steps:
build:
image: node:22
commands:
- npm ci
- npm run build
- echo "VERSION=$(cat version.txt)" > .env
build:
image: node:22
commands:
- npm ci
- npm run build
- echo "VERSION=$(cat version.txt)" > .env
clear-from-host:
image: appleboy/drone-ssh
settings:
host:
from_secret: ssh_host
username:
from_secret: ssh_username
key:
from_secret: ssh_key
port: 2332
script:
- cd /home/mnisyif/docker-containers/mnisyif/frontend
- rm -rf data index-*.js index-*.css logos papers pp projects
- find . -maxdepth 1 -type f -delete
- echo "Target directory cleared, resumes folder preserved"
clear-from-host:
image: appleboy/drone-ssh
settings:
host:
from_secret: ssh_host
username:
from_secret: ssh_username
key:
from_secret: ssh_key
port: 2332
script:
- cd /home/mnisyif/docker-containers/mnisyif/frontend
- rm -rf data index-*.js index-*.css logos papers pp projects
- find . -maxdepth 1 -type f -delete
- echo "Target directory cleared, resumes folder preserved"
copy-to-host:
image: appleboy/drone-scp
settings:
host:
from_secret: ssh_host
username:
from_secret: ssh_username
key:
from_secret: ssh_key
port: 2332
target: /home/mnisyif/docker-containers/mnisyif/frontend
source:
- dist/
- nginx.conf
- version.txt
deploy:
image: appleboy/drone-ssh
settings:
host:
from_secret: ssh_host
username:
from_secret: ssh_username
key:
from_secret: ssh_key
port: 2332
script:
- cd /home/mnisyif/docker-containers/mnisyif/frontend
- VERSION=$(cat version.txt)
- echo "Nginx configuration:"
- cat nginx.conf
- echo "Contents of dist directory:"
- ls -la dist
# Stop and remove the existing container if it exists
- docker stop frontend || true
- docker rm frontend || true
# Run the new container with the current version, mounting the files
- >
docker run -d --name frontend -p 5173:80
-v /home/mnisyif/docker-containers/mnisyif/frontend/dist:/usr/share/nginx/html:ro
-v /home/mnisyif/docker-containers/mnisyif/frontend/nginx.conf:/etc/nginx/nginx.conf:ro
nginx:alpine
# Tag the running container with the version
- docker tag nginx:alpine frontend:$VERSION
- echo "Deployment completed"
image: appleboy/drone-scp
settings:
host:
from_secret: ssh_host
username:
from_secret: ssh_username
key:
from_secret: ssh_key
port: 2332
target: /home/mnisyif/docker-containers/mnisyif/frontend
source:
- dist/
- nginx.conf
- version.txt
confirm-deployment:
image: appleboy/drone-ssh
settings:
host:
from_secret: ssh_host
username:
from_secret: ssh_username
key:
from_secret: ssh_key
port: 2332
script:
- cd /home/mnisyif/docker-containers/mnisyif/frontend
- VERSION=$(cat version.txt)
- echo "Confirming deployment for version: $VERSION"
- docker ps -a
- if ! docker ps | grep -q frontend-$VERSION; then
echo "Container failed to start";
docker logs frontend-$VERSION;
exit 1;
fi
- echo "Container is running, checking Nginx configuration..."
- docker exec frontend-$VERSION nginx -t || { echo "Nginx configuration test failed"; exit 1; }
- echo "Listing contents of /usr/share/nginx/html"
- docker exec frontend-$VERSION ls -la /usr/share/nginx/html
- echo "Listing contents of /usr/share/nginx/html/resumes"
- docker exec frontend-$VERSION ls -la /usr/share/nginx/html/resumes || echo "Resumes directory not found"
- echo "Checking HTTP response..."
- curl -I http://localhost:5173 || { echo "HTTP request failed"; exit 1; }
- echo "Deployment confirmed successfully"
deploy:
image: appleboy/drone-ssh
settings:
host:
from_secret: ssh_host
username:
from_secret: ssh_username
key:
from_secret: ssh_key
port: 2332
script:
- cd /home/mnisyif/docker-containers/mnisyif/frontend
- VERSION=$(cat version.txt)
- echo "Nginx configuration:"
- cat nginx.conf
- echo "Contents of dist directory:"
- ls -la dist
# Stop and remove the existing container if it exists
- docker stop frontend || true
- docker rm frontend || true
# Run the new container with the current version, mounting the files
- >
docker run -d --name frontend -p 5173:80
-v /home/mnisyif/docker-containers/mnisyif/frontend/dist:/usr/share/nginx/html:ro
-v /home/mnisyif/docker-containers/mnisyif/frontend/nginx.conf:/etc/nginx/nginx.conf:ro
nginx:alpine
# Tag the running container with the version
- docker tag nginx:alpine frontend:$VERSION
- echo "Deployment completed"
cleanup:
image: appleboy/drone-ssh
settings:
host:
from_secret: ssh_host
username:
from_secret: ssh_username
key:
from_secret: ssh_key
port: 2332
script:
- echo "Performing cleanup..."
- docker system prune -f --volumes
- >
for img in $(docker images frontend --format "{{.Tag}}" | grep -v $(cat /home/mnisyif/docker-containers/mnisyif/frontend/version.txt)); do
docker rmi frontend:$img || true;
done
- echo "Cleanup completed"
confirm-deployment:
image: appleboy/drone-ssh
settings:
host:
from_secret: ssh_host
username:
from_secret: ssh_username
key:
from_secret: ssh_key
port: 2332
script:
- cd /home/mnisyif/docker-containers/mnisyif/frontend
- VERSION=$(cat version.txt)
- echo "Confirming deployment for version: $VERSION"
- docker ps -a
- if ! docker ps | grep -q frontend-$VERSION; then
echo "Container failed to start"
docker logs frontend-$VERSION
exit 1
fi
- echo "Container is running, checking Nginx configuration..."
- docker exec frontend-$VERSION nginx -t || { echo "Nginx configuration test failed"; exit 1; }
- echo "Listing contents of /usr/share/nginx/html"
- docker exec frontend-$VERSION ls -la /usr/share/nginx/html
- echo "Listing contents of /usr/share/nginx/html/resumes"
- docker exec frontend-$VERSION ls -la /usr/share/nginx/html/resumes || echo "Resumes directory not found"
- echo "Checking HTTP response..."
- curl -I http://localhost:5173 || { echo "HTTP request failed"; exit 1; }
- echo "Deployment confirmed successfully"
cleanup:
image: appleboy/drone-ssh
settings:
host:
from_secret: ssh_host
username:
from_secret: ssh_username
key:
from_secret: ssh_key
port: 2332
script:
- echo "Performing cleanup..."
- docker system prune -f --volumes
- >
for img in $(docker images frontend --format "{{.Tag}}" | grep -v $(cat /home/mnisyif/docker-containers/mnisyif/frontend/version.txt)); do
docker rmi frontend:$img || true
done
- echo "Cleanup completed"
trigger:
branch: