|
@@ -29,11 +29,10 @@ pipeline {
|
|
|
REMOTE_USER = 'fratini'
|
|
REMOTE_USER = 'fratini'
|
|
|
REMOTE_DIR = '/var/www/html/polizia'
|
|
REMOTE_DIR = '/var/www/html/polizia'
|
|
|
|
|
|
|
|
- // Store the SSH password as an environment variable
|
|
|
|
|
- // You need to set this in Jenkins as a secret text credential
|
|
|
|
|
- SSH_PASS = credentials('fratini-ssh-password')
|
|
|
|
|
-
|
|
|
|
|
ADMIN_EMAIL = 'f.fratini@webmagistri.it'
|
|
ADMIN_EMAIL = 'f.fratini@webmagistri.it'
|
|
|
|
|
+
|
|
|
|
|
+ // Define the SSH password credential
|
|
|
|
|
+ SSH_PASS = credentials('fratini-ssh-password')
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
stages {
|
|
stages {
|
|
@@ -52,8 +51,8 @@ pipeline {
|
|
|
sh 'node --version || echo "Node not available locally"'
|
|
sh 'node --version || echo "Node not available locally"'
|
|
|
sh 'npm --version || echo "NPM not available locally"'
|
|
sh 'npm --version || echo "NPM not available locally"'
|
|
|
|
|
|
|
|
- // Check if sshpass is installed
|
|
|
|
|
- sh 'sshpass -V || echo "sshpass not available, please install it on Jenkins server"'
|
|
|
|
|
|
|
+ // Verify sshpass is installed
|
|
|
|
|
+ sh 'sshpass -V || echo "sshpass not installed"'
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
|
|
|
|
@@ -80,7 +79,7 @@ pipeline {
|
|
|
stage('Deploy to Server') {
|
|
stage('Deploy to Server') {
|
|
|
when {
|
|
when {
|
|
|
expression {
|
|
expression {
|
|
|
- // Always deploy from develop branch
|
|
|
|
|
|
|
+ // Always deploy from develop branch or if we're in a detached HEAD state
|
|
|
return env.CURRENT_BRANCH == 'HEAD' || env.CURRENT_BRANCH == 'develop' ||
|
|
return env.CURRENT_BRANCH == 'HEAD' || env.CURRENT_BRANCH == 'develop' ||
|
|
|
env.GIT_BRANCH == 'origin/develop' || env.BRANCH_NAME == 'develop'
|
|
env.GIT_BRANCH == 'origin/develop' || env.BRANCH_NAME == 'develop'
|
|
|
}
|
|
}
|
|
@@ -88,30 +87,40 @@ pipeline {
|
|
|
steps {
|
|
steps {
|
|
|
echo "Starting deployment to ${REMOTE_HOST} as user ${REMOTE_USER}"
|
|
echo "Starting deployment to ${REMOTE_HOST} as user ${REMOTE_USER}"
|
|
|
|
|
|
|
|
- // Create remote directory
|
|
|
|
|
- sh "sshpass -p \"\${SSH_PASS}\" ssh -o StrictHostKeyChecking=no ${REMOTE_USER}@${REMOTE_HOST} 'mkdir -p ${REMOTE_DIR}'"
|
|
|
|
|
|
|
+ // Using environment file approach for password
|
|
|
|
|
+ sh '''
|
|
|
|
|
+ # Create a temporary password file with correct permissions
|
|
|
|
|
+ echo "${SSH_PASS}" > /tmp/ssh_password
|
|
|
|
|
+ chmod 600 /tmp/ssh_password
|
|
|
|
|
+
|
|
|
|
|
+ # Create remote directory
|
|
|
|
|
+ sshpass -f /tmp/ssh_password ssh -o StrictHostKeyChecking=no ${REMOTE_USER}@${REMOTE_HOST} "mkdir -p ${REMOTE_DIR}"
|
|
|
|
|
+
|
|
|
|
|
+ # Sync files excluding unnecessary ones
|
|
|
|
|
+ sshpass -f /tmp/ssh_password rsync -avz -e "ssh -o StrictHostKeyChecking=no" --exclude '.git' --exclude 'node_modules' --exclude 'vendor' ./ ${REMOTE_USER}@${REMOTE_HOST}:${REMOTE_DIR}/
|
|
|
|
|
|
|
|
- // Sync files
|
|
|
|
|
- sh "sshpass -p \"\${SSH_PASS}\" rsync -avz -e \"ssh -o StrictHostKeyChecking=no\" --exclude '.git' --exclude 'node_modules' --exclude 'vendor' ./ ${REMOTE_USER}@${REMOTE_HOST}:${REMOTE_DIR}/"
|
|
|
|
|
|
|
+ # Run composer install
|
|
|
|
|
+ sshpass -f /tmp/ssh_password ssh -o StrictHostKeyChecking=no ${REMOTE_USER}@${REMOTE_HOST} "cd ${REMOTE_DIR} && composer install --no-interaction --no-dev --prefer-dist"
|
|
|
|
|
|
|
|
- // Run composer install
|
|
|
|
|
- sh "sshpass -p \"\${SSH_PASS}\" ssh -o StrictHostKeyChecking=no ${REMOTE_USER}@${REMOTE_HOST} 'cd ${REMOTE_DIR} && composer install --no-interaction --no-dev --prefer-dist'"
|
|
|
|
|
|
|
+ # Run npm install and build
|
|
|
|
|
+ sshpass -f /tmp/ssh_password ssh -o StrictHostKeyChecking=no ${REMOTE_USER}@${REMOTE_HOST} "cd ${REMOTE_DIR} && npm install && npm run build"
|
|
|
|
|
|
|
|
- // Run npm install and build
|
|
|
|
|
- sh "sshpass -p \"\${SSH_PASS}\" ssh -o StrictHostKeyChecking=no ${REMOTE_USER}@${REMOTE_HOST} 'cd ${REMOTE_DIR} && npm install && npm run build'"
|
|
|
|
|
|
|
+ # Run Laravel artisan commands
|
|
|
|
|
+ sshpass -f /tmp/ssh_password 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"
|
|
|
|
|
|
|
|
- // Run Laravel artisan commands
|
|
|
|
|
- sh "sshpass -p \"\${SSH_PASS}\" 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'"
|
|
|
|
|
|
|
+ # Set permissions
|
|
|
|
|
+ sshpass -f /tmp/ssh_password ssh -o StrictHostKeyChecking=no ${REMOTE_USER}@${REMOTE_HOST} "cd ${REMOTE_DIR} && chmod -R 775 storage bootstrap/cache && sudo chown -R www-data:www-data ."
|
|
|
|
|
|
|
|
- // Set permissions
|
|
|
|
|
- sh "sshpass -p \"\${SSH_PASS}\" 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
|
|
|
|
|
+ sshpass -f /tmp/ssh_password 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'"
|
|
|
|
|
+ sshpass -f /tmp/ssh_password ssh -o StrictHostKeyChecking=no ${REMOTE_USER}@${REMOTE_HOST} "sudo systemctl restart nginx || echo 'Nginx restart failed, may need manual intervention'"
|
|
|
|
|
|
|
|
- // Restart services
|
|
|
|
|
- sh "sshpass -p \"\${SSH_PASS}\" 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\"'"
|
|
|
|
|
- sh "sshpass -p \"\${SSH_PASS}\" ssh -o StrictHostKeyChecking=no ${REMOTE_USER}@${REMOTE_HOST} 'sudo systemctl restart nginx || echo \"Nginx restart failed, may need manual intervention\"'"
|
|
|
|
|
|
|
+ # Clear cache
|
|
|
|
|
+ sshpass -f /tmp/ssh_password ssh -o StrictHostKeyChecking=no ${REMOTE_USER}@${REMOTE_HOST} "cd ${REMOTE_DIR} && php artisan cache:clear"
|
|
|
|
|
|
|
|
- // Clear cache
|
|
|
|
|
- sh "sshpass -p \"\${SSH_PASS}\" ssh -o StrictHostKeyChecking=no ${REMOTE_USER}@${REMOTE_HOST} 'cd ${REMOTE_DIR} && php artisan cache:clear'"
|
|
|
|
|
|
|
+ # Clean up temporary password file
|
|
|
|
|
+ rm -f /tmp/ssh_password
|
|
|
|
|
+ '''
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|