|
@@ -46,50 +46,41 @@ pipeline {
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
- stage('Setup Tools') {
|
|
|
|
|
|
|
+ stage('Check Remote Tools') {
|
|
|
steps {
|
|
steps {
|
|
|
script {
|
|
script {
|
|
|
- // Check and install PHP if not available
|
|
|
|
|
- def phpInstalled = sh(script: 'php --version', returnStatus: true)
|
|
|
|
|
- if (phpInstalled != 0) {
|
|
|
|
|
- echo "Installing PHP ${PHP_VERSION}..."
|
|
|
|
|
- sh """
|
|
|
|
|
- sudo apt-get update
|
|
|
|
|
- sudo apt-get install -y software-properties-common
|
|
|
|
|
- sudo add-apt-repository -y ppa:ondrej/php
|
|
|
|
|
- sudo apt-get update
|
|
|
|
|
- sudo apt-get install -y php${PHP_VERSION} php${PHP_VERSION}-cli php${PHP_VERSION}-common php${PHP_VERSION}-curl php${PHP_VERSION}-mbstring php${PHP_VERSION}-mysql php${PHP_VERSION}-xml php${PHP_VERSION}-zip
|
|
|
|
|
- """
|
|
|
|
|
- }
|
|
|
|
|
-
|
|
|
|
|
- // Check and install Composer if not available
|
|
|
|
|
- def composerInstalled = sh(script: 'composer --version', returnStatus: true)
|
|
|
|
|
- if (composerInstalled != 0) {
|
|
|
|
|
- echo "Installing Composer..."
|
|
|
|
|
- sh """
|
|
|
|
|
- php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');"
|
|
|
|
|
- php composer-setup.php --install-dir=/usr/local/bin --filename=composer
|
|
|
|
|
- php -r "unlink('composer-setup.php');"
|
|
|
|
|
- chmod +x /usr/local/bin/composer
|
|
|
|
|
- """
|
|
|
|
|
- }
|
|
|
|
|
-
|
|
|
|
|
- // Check and install Node.js and NPM if not available
|
|
|
|
|
- def nodeInstalled = sh(script: 'node --version', returnStatus: true)
|
|
|
|
|
- if (nodeInstalled != 0) {
|
|
|
|
|
- echo "Installing Node.js ${NODE_VERSION}..."
|
|
|
|
|
- sh """
|
|
|
|
|
- curl -sL https://deb.nodesource.com/setup_${NODE_VERSION} | sudo -E bash -
|
|
|
|
|
- sudo apt-get install -y nodejs
|
|
|
|
|
- """
|
|
|
|
|
|
|
+ // Check if the remote server has the required tools
|
|
|
|
|
+ sshagent(['ssh-key-10.2.0.10']) {
|
|
|
|
|
+ // Check PHP on remote server
|
|
|
|
|
+ def remotePhp = sh(script: "ssh -o StrictHostKeyChecking=no ${REMOTE_USER}@${REMOTE_HOST} 'php --version || echo PHP_NOT_FOUND'", returnStdout: true).trim()
|
|
|
|
|
+ echo "Remote PHP: ${remotePhp}"
|
|
|
|
|
+
|
|
|
|
|
+ // Check Composer on remote server
|
|
|
|
|
+ def remoteComposer = sh(script: "ssh -o StrictHostKeyChecking=no ${REMOTE_USER}@${REMOTE_HOST} 'composer --version || echo COMPOSER_NOT_FOUND'", returnStdout: true).trim()
|
|
|
|
|
+ echo "Remote Composer: ${remoteComposer}"
|
|
|
|
|
+
|
|
|
|
|
+ // Check Node.js on remote server
|
|
|
|
|
+ def remoteNode = sh(script: "ssh -o StrictHostKeyChecking=no ${REMOTE_USER}@${REMOTE_HOST} 'node --version || echo NODE_NOT_FOUND'", returnStdout: true).trim()
|
|
|
|
|
+ echo "Remote Node.js: ${remoteNode}"
|
|
|
|
|
+
|
|
|
|
|
+ // Check NPM on remote server
|
|
|
|
|
+ def remoteNpm = sh(script: "ssh -o StrictHostKeyChecking=no ${REMOTE_USER}@${REMOTE_HOST} 'npm --version || echo NPM_NOT_FOUND'", returnStdout: true).trim()
|
|
|
|
|
+ echo "Remote NPM: ${remoteNpm}"
|
|
|
|
|
+
|
|
|
|
|
+ // If any tool is missing, log a warning
|
|
|
|
|
+ if (remotePhp.contains("PHP_NOT_FOUND") || remoteComposer.contains("COMPOSER_NOT_FOUND") ||
|
|
|
|
|
+ remoteNode.contains("NODE_NOT_FOUND") || remoteNpm.contains("NPM_NOT_FOUND")) {
|
|
|
|
|
+ echo "WARNING: Some required tools are missing on the remote server!"
|
|
|
|
|
+ echo "Please install PHP, Composer, Node.js and NPM on ${REMOTE_HOST}"
|
|
|
|
|
+ }
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
- // Verify installations
|
|
|
|
|
- sh 'php --version'
|
|
|
|
|
- sh 'composer --version'
|
|
|
|
|
- sh 'node --version'
|
|
|
|
|
- sh 'npm --version'
|
|
|
|
|
|
|
+ // Check what's actually available locally (for logging purposes)
|
|
|
|
|
+ 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"'
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
|
|
|
|
@@ -101,22 +92,20 @@ pipeline {
|
|
|
|
|
|
|
|
stage('Install Dependencies') {
|
|
stage('Install Dependencies') {
|
|
|
steps {
|
|
steps {
|
|
|
- sh 'composer install --no-interaction --no-progress --prefer-dist'
|
|
|
|
|
|
|
+ echo "Dependencies will be installed on the target server during deployment"
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
stage('Setup Environment') {
|
|
stage('Setup Environment') {
|
|
|
steps {
|
|
steps {
|
|
|
- sh 'php artisan key:generate || echo "Skipping key generation"'
|
|
|
|
|
- sh 'php artisan config:clear'
|
|
|
|
|
- sh 'php artisan cache:clear'
|
|
|
|
|
|
|
+ echo "Environment will be set up on the target server during deployment"
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
stage('Build Assets') {
|
|
stage('Build Assets') {
|
|
|
steps {
|
|
steps {
|
|
|
- sh 'npm install'
|
|
|
|
|
- sh 'npm run build'
|
|
|
|
|
|
|
+ // Skip asset building on Jenkins server
|
|
|
|
|
+ echo "Assets will be built on the target server during deployment"
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
|
|
|
|
@@ -167,9 +156,7 @@ pipeline {
|
|
|
|
|
|
|
|
post {
|
|
post {
|
|
|
always {
|
|
always {
|
|
|
- node('any') {
|
|
|
|
|
- cleanWs()
|
|
|
|
|
- }
|
|
|
|
|
|
|
+ cleanWs()
|
|
|
}
|
|
}
|
|
|
success {
|
|
success {
|
|
|
echo 'Build successful! The Polizia application is now deployed to 10.2.0.10'
|
|
echo 'Build successful! The Polizia application is now deployed to 10.2.0.10'
|