Refactor pipeline script

This commit is contained in:
Murtadha 2024-07-27 20:36:49 -04:00
parent ad7079ef38
commit 48f64cc611

View file

@ -1,131 +1,103 @@
steps: steps:
build: - name: build
when: image: node:22
- branch: master commands:
event: push - npm ci
image: node:22 - npm run build
commands: - echo "VERSION=$(cat version.txt)" > .env
- npm ci
- npm run build
- echo "VERSION=$(cat version.txt)" > .env
clear-from-host: - name: clear-from-host
when: image: appleboy/drone-ssh
- branch: master settings:
event: push host:
image: appleboy/drone-ssh from_secret: ssh_host
settings: username:
host: from_secret: ssh_username
from_secret: ssh_host key:
username: from_secret: ssh_key
from_secret: ssh_username port: 2332
key: script:
from_secret: ssh_key - rm -rf /home/mnisyif/docker-containers/mnisyif/frontend/*
port: 2332 - echo "Target directory cleared"
script:
- rm -rf /home/mnisyif/docker-containers/mnisyif/frontend/*
- echo "Target directory cleared"
copy-to-host: - name: copy-to-host
when: image: appleboy/drone-scp
- branch: master settings:
event: push host:
image: appleboy/drone-scp from_secret: ssh_host
settings: username:
host: from_secret: ssh_username
from_secret: ssh_host key:
username: from_secret: ssh_key
from_secret: ssh_username port: 2332
key: target: /home/mnisyif/docker-containers/mnisyif/frontend
from_secret: ssh_key source:
port: 2332 - dist/
target: /home/mnisyif/docker-containers/mnisyif/frontend - nginx.conf
source: - version.txt
- dist/
- nginx.conf
- version.txt
webserver-deploy: - name: webserver-deploy
when: image: appleboy/drone-ssh
- branch: master settings:
event: push host:
image: appleboy/drone-ssh from_secret: ssh_host
settings: username:
host: from_secret: ssh_username
from_secret: ssh_host key:
username: from_secret: ssh_key
from_secret: ssh_username port: 2332
key: script:
from_secret: ssh_key - cd /home/mnisyif/docker-containers/mnisyif/frontend
port: 2332 - VERSION=$(cat version.txt)
script: - docker stop frontend-$VERSION || true
- cd /home/mnisyif/docker-containers/mnisyif/frontend - docker rm frontend-$VERSION || true
- VERSION=$(cat version.txt) - >
- echo "Nginx configuration:" docker run -d --name frontend-$VERSION -p 5173:80
- cat nginx.conf -v $PWD/dist:/usr/share/nginx/html:ro
- echo "Contents of dist directory:" -v $PWD/nginx.conf:/etc/nginx/nginx.conf:ro
- ls -la dist nginx:alpine
# Stop and remove the existing container if it exists - echo "Deployment completed"
- 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"
confirm-deployment: - name: confirm-deployment
when: image: appleboy/drone-ssh
- branch: master settings:
event: push host:
image: appleboy/drone-ssh from_secret: ssh_host
settings: username:
host: from_secret: ssh_username
from_secret: ssh_host key:
username: from_secret: ssh_key
from_secret: ssh_username port: 2332
key: script:
from_secret: ssh_key - VERSION=$(cat /home/mnisyif/docker-containers/mnisyif/frontend/version.txt)
port: 2332 - docker ps | grep frontend-$VERSION || { echo "Container failed to start"; exit 1; }
script: - docker logs frontend-$VERSION
- echo "Verifying deployment..." - docker exec frontend-$VERSION nginx -t
# Verify the container is running - docker exec frontend-$VERSION ls -la /usr/share/nginx/html
- docker ps | grep frontend || { echo "Container failed to start"; exit 1; } - curl -I http://localhost:5173 || { echo "HTTP request failed"; exit 1; }
# Display container logs and test nginx configuration - echo "Deployment confirmed successfully"
- docker logs frontend
- docker exec frontend nginx -t
- docker exec frontend ps aux | grep nginx
# Check contents of /usr/share/nginx/html in the container - name: cleanup
- docker exec frontend ls -la /usr/share/nginx/html image: appleboy/drone-ssh
# Perform a simple HTTP request to check if the server is responding settings:
- curl -I http://localhost:5173 || { echo "HTTP request failed"; exit 1; } host:
- echo "Deployment confirmed successfully" 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"
cleanup: trigger:
when: branch:
- branch: master - master
event: push event:
image: appleboy/drone-ssh - push
settings:
host:
from_secret: ssh_host
username:
from_secret: ssh_username
key:
from_secret: ssh_key
port: 2332
script:
- echo "Performing cleanup..."
# Clean up unused containers, images, and volumes
- docker system prune -f --volumes
# Remove older versions of the Docker image
- >
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"