浏览代码

setup composer

FabioFratini 10 月之前
父节点
当前提交
a43b86615c
共有 1 个文件被更改,包括 36 次插入25 次删除
  1. 36 25
      Jenkinsfile

+ 36 - 25
Jenkinsfile

@@ -27,7 +27,7 @@ pipeline {
 
         REMOTE_HOST = '10.2.0.10'
         REMOTE_USER = 'fratini'
-        REMOTE_DIR = '/var/www/html/polizia'
+        REMOTE_DIR = '/var/www/polizia'  // Updated to the correct path
 
         ADMIN_EMAIL = 'f.fratini@webmagistri.it'
     }
@@ -41,18 +41,6 @@ pipeline {
             }
         }
 
-        stage('Check Dependencies') {
-            steps {
-                sh 'php --version || echo "PHP not available locally"'
-                sh 'composer --version || echo "Composer not available locally"'
-                sh 'node --version || echo "Node not available locally"'
-                sh 'npm --version || echo "NPM not available locally"'
-
-                // Check for rsync
-                sh 'rsync --version || echo "rsync not available, please install it on Jenkins server"'
-            }
-        }
-
         stage('Get Code') {
             steps {
                 checkout scm
@@ -61,10 +49,6 @@ pipeline {
 
         stage('Debug Branch Info') {
             steps {
-                sh 'git branch -v || echo "Could not get branch info"'
-                sh 'git status || echo "Could not get status"'
-                sh 'echo "BRANCH_NAME: ${BRANCH_NAME:-not set}"'
-                sh 'echo "GIT_BRANCH: ${GIT_BRANCH:-not set}"'
                 script {
                     // Store the branch info for later use
                     env.CURRENT_BRANCH = sh(script: 'git rev-parse --abbrev-ref HEAD || echo "HEAD"', returnStdout: true).trim()
@@ -84,7 +68,6 @@ pipeline {
             steps {
                 echo "Starting deployment to ${REMOTE_HOST} as user ${REMOTE_USER}"
 
-                // Using SSH key authentication - no password required
                 sh '''
                     # Make sure SSH directory exists with correct permissions
                     mkdir -p ~/.ssh
@@ -93,8 +76,7 @@ pipeline {
                     # Create remote directory
                     ssh -o StrictHostKeyChecking=no ${REMOTE_USER}@${REMOTE_HOST} "mkdir -p ${REMOTE_DIR}"
 
-                    # Since rsync isn't available, use scp to copy files
-                    # First, create a tar archive
+                    # Create a tar archive excluding unnecessary files
                     tar --exclude='.git' --exclude='node_modules' --exclude='vendor' -czf /tmp/deployment.tar.gz .
 
                     # Copy the archive to the remote server
@@ -107,24 +89,53 @@ pipeline {
                     rm -f /tmp/deployment.tar.gz
                     ssh -o StrictHostKeyChecking=no ${REMOTE_USER}@${REMOTE_HOST} "rm -f /tmp/deployment.tar.gz"
 
-                    # Run composer install
+                    # Check for PHP
+                    ssh -o StrictHostKeyChecking=no ${REMOTE_USER}@${REMOTE_HOST} "php -v || echo 'PHP not available on remote server'"
+
+                    # Check for Composer and install it if missing
+                    echo "Checking for Composer..."
+                    COMPOSER_INSTALLED=$(ssh -o StrictHostKeyChecking=no ${REMOTE_USER}@${REMOTE_HOST} "command -v composer || echo 'not found'")
+                    if [[ "$COMPOSER_INSTALLED" == *"not found"* ]]; then
+                        echo "Installing Composer..."
+                        ssh -o StrictHostKeyChecking=no ${REMOTE_USER}@${REMOTE_HOST} "cd /tmp && curl -sS https://getcomposer.org/installer | php && sudo mv composer.phar /usr/local/bin/composer && sudo chmod +x /usr/local/bin/composer"
+                    else
+                        echo "Composer is already installed."
+                    fi
+
+                    # Run Composer install
+                    echo "Running composer install..."
                     ssh -o StrictHostKeyChecking=no ${REMOTE_USER}@${REMOTE_HOST} "cd ${REMOTE_DIR} && composer install --no-interaction --no-dev --prefer-dist"
 
-                    # Run npm install and build
-                    ssh -o StrictHostKeyChecking=no ${REMOTE_USER}@${REMOTE_HOST} "cd ${REMOTE_DIR} && npm install && npm run build"
+                    # Check for Node.js/NPM
+                    NODE_INSTALLED=$(ssh -o StrictHostKeyChecking=no ${REMOTE_USER}@${REMOTE_HOST} "command -v node || echo 'not found'")
+                    if [[ "$NODE_INSTALLED" == *"not found"* ]]; then
+                        echo "Node.js not found - skipping npm steps"
+                    else
+                        echo "Running npm install and build..."
+                        ssh -o StrictHostKeyChecking=no ${REMOTE_USER}@${REMOTE_HOST} "cd ${REMOTE_DIR} && npm install && npm run build"
+                    fi
 
                     # Run Laravel artisan commands
-                    ssh -o StrictHostKeyChecking=no ${REMOTE_USER}@${REMOTE_HOST} "cd ${REMOTE_DIR} && php artisan migrate --force && php artisan config:cache && php artisan route:cache && php artisan view:cache && php artisan optimize && php artisan storage:link"
+                    echo "Running Laravel artisan commands..."
+                    ssh -o StrictHostKeyChecking=no ${REMOTE_USER}@${REMOTE_HOST} "cd ${REMOTE_DIR} && php artisan migrate --force || echo 'Migration failed, continuing...'"
+                    ssh -o StrictHostKeyChecking=no ${REMOTE_USER}@${REMOTE_HOST} "cd ${REMOTE_DIR} && php artisan config:cache || echo 'Config cache failed, continuing...'"
+                    ssh -o StrictHostKeyChecking=no ${REMOTE_USER}@${REMOTE_HOST} "cd ${REMOTE_DIR} && php artisan route:cache || echo 'Route cache failed, continuing...'"
+                    ssh -o StrictHostKeyChecking=no ${REMOTE_USER}@${REMOTE_HOST} "cd ${REMOTE_DIR} && php artisan view:cache || echo 'View cache failed, continuing...'"
+                    ssh -o StrictHostKeyChecking=no ${REMOTE_USER}@${REMOTE_HOST} "cd ${REMOTE_DIR} && php artisan optimize || echo 'Optimize failed, continuing...'"
+                    ssh -o StrictHostKeyChecking=no ${REMOTE_USER}@${REMOTE_HOST} "cd ${REMOTE_DIR} && php artisan storage:link || echo 'Storage link failed, continuing...'"
 
                     # Set permissions
+                    echo "Setting permissions..."
                     ssh -o StrictHostKeyChecking=no ${REMOTE_USER}@${REMOTE_HOST} "cd ${REMOTE_DIR} && chmod -R 775 storage bootstrap/cache && sudo chown -R www-data:www-data ."
 
                     # Restart services
+                    echo "Restarting services..."
                     ssh -o StrictHostKeyChecking=no ${REMOTE_USER}@${REMOTE_HOST} "sudo systemctl restart php8.1-fpm || sudo systemctl restart php-fpm || echo 'PHP service restart failed, may need manual intervention'"
                     ssh -o StrictHostKeyChecking=no ${REMOTE_USER}@${REMOTE_HOST} "sudo systemctl restart nginx || echo 'Nginx restart failed, may need manual intervention'"
 
                     # Clear cache
-                    ssh -o StrictHostKeyChecking=no ${REMOTE_USER}@${REMOTE_HOST} "cd ${REMOTE_DIR} && php artisan cache:clear"
+                    echo "Clearing cache..."
+                    ssh -o StrictHostKeyChecking=no ${REMOTE_USER}@${REMOTE_HOST} "cd ${REMOTE_DIR} && php artisan cache:clear || echo 'Cache clear failed, continuing...'"
                 '''
             }
         }