|
|
@@ -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...'"
|
|
|
'''
|
|
|
}
|
|
|
}
|