125 lines
4.3 KiB
YAML
125 lines
4.3 KiB
YAML
steps:
|
|
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"
|
|
|
|
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
|
|
--restart always
|
|
-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"
|
|
|
|
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:
|
|
- echo "Verifying deployment..."
|
|
# Verify the container is running
|
|
- docker ps | grep frontend || { echo "Container failed to start"; exit 1; }
|
|
# Display container logs
|
|
- docker logs frontend
|
|
# Test Nginx configuration
|
|
- docker exec frontend nginx -t
|
|
# Check Nginx process
|
|
- docker exec frontend ps aux | grep nginx
|
|
# Check contents of /usr/share/nginx/html in the container
|
|
- docker exec frontend ls -la /usr/share/nginx/html
|
|
# Perform a simple HTTP request to check if the server is responding
|
|
- 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:
|
|
# - master
|
|
# event:
|
|
# - push
|
|
|
|
when:
|
|
- branch: master
|
|
event: push
|