From 48f64cc6117b73f8b8b6f1172480a647d99b2ae2 Mon Sep 17 00:00:00 2001 From: Murtadha Date: Sat, 27 Jul 2024 20:36:49 -0400 Subject: [PATCH] Refactor pipeline script --- .woodpecker.yml | 220 +++++++++++++++++++++--------------------------- 1 file changed, 96 insertions(+), 124 deletions(-) diff --git a/.woodpecker.yml b/.woodpecker.yml index f3dbefb..4d407e0 100644 --- a/.woodpecker.yml +++ b/.woodpecker.yml @@ -1,131 +1,103 @@ steps: - build: - when: - - branch: master - event: push - image: node:22 - commands: - - npm ci - - npm run build - - echo "VERSION=$(cat version.txt)" > .env + - name: build + image: node:22 + commands: + - npm ci + - npm run build + - echo "VERSION=$(cat version.txt)" > .env - clear-from-host: - when: - - branch: master - event: push - image: appleboy/drone-ssh - settings: - host: - from_secret: ssh_host - username: - from_secret: ssh_username - key: - from_secret: ssh_key - port: 2332 - script: - - rm -rf /home/mnisyif/docker-containers/mnisyif/frontend/* - - echo "Target directory cleared" + - name: 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: + - rm -rf /home/mnisyif/docker-containers/mnisyif/frontend/* + - echo "Target directory cleared" - copy-to-host: - when: - - branch: master - event: push - 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 + - name: 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 - webserver-deploy: - when: - - branch: master - event: push - 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" + - name: webserver-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) + - docker stop frontend-$VERSION || true + - docker rm frontend-$VERSION || true + - > + docker run -d --name frontend-$VERSION -p 5173:80 + -v $PWD/dist:/usr/share/nginx/html:ro + -v $PWD/nginx.conf:/etc/nginx/nginx.conf:ro + nginx:alpine + - echo "Deployment completed" - confirm-deployment: - when: - - branch: master - event: push - 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 and test nginx configuration - - docker logs frontend - - docker exec frontend nginx -t - - docker exec frontend ps aux | grep nginx + - name: 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: + - VERSION=$(cat /home/mnisyif/docker-containers/mnisyif/frontend/version.txt) + - docker ps | grep frontend-$VERSION || { echo "Container failed to start"; exit 1; } + - docker logs frontend-$VERSION + - docker exec frontend-$VERSION nginx -t + - docker exec frontend-$VERSION ls -la /usr/share/nginx/html + - curl -I http://localhost:5173 || { echo "HTTP request failed"; exit 1; } + - echo "Deployment confirmed successfully" - # 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" + - name: 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" - cleanup: - when: - - branch: master - event: push - 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..." - # 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" \ No newline at end of file +trigger: + branch: + - master + event: + - push