Jenkins

Configurazione pipeline CI/CD con Jenkins e GitHub
Ultimo aggiornamento: March 2026

Configurazione Jenkins

Crea la Pipeline

Dalla dashboard di Jenkins:

  1. Clicca su Nuovo Elemento
  2. Inserisci un nome elemento
  3. Seleziona Pipeline e conferma

Parametri di configurazione

Nella scheda di configurazione dell'elemento appena creato, imposta i seguenti parametri:

Build Triggers
GitHub hook trigger for GITScm polling ✓  da abilitare
Pipeline
Definition Pipeline script from SCM
SCM Git
Depositi › URL di deposito URL HTTPS del repository GitHub
Reperibile su GitHub tramite Code › Clone › HTTPS
https://github.com/enesisrl/progetto.git
Depositi › Credenziali enesisrl
Rami a costruire */main

Jenkinsfile

Download

Scarica il file di riferimento e aggiungilo alla radice del progetto.

Scarica Jenkinsfile

pipeline {
    agent any

    environment {
        DEPLOY_DIR = "/home/www/html/web/PQR/progetto"
        REPO_URL = "git@github.com:enesisrl/progetto.git"
        BRANCH = "main"
    }

    stages {
        stage('Checkout Repository') {
            steps {
                dir("${DEPLOY_DIR}") {
                    checkout scm
                }
            }
        }

        stage('Install Dependencies') {
            steps {
                sh """
                cd ${DEPLOY_DIR}/private
                php82 /usr/bin/composer update --optimize-autoloader
                """
            }
        }

        stage('Database Migration') {
            steps {
                sh "cd ${DEPLOY_DIR}/private && php82 artisan migrate"
            }
        }

        stage('Set Permissions & Optimize') {
            steps {
                sh """
                cd ${DEPLOY_DIR}
                chown -R nobody.nobody *
                cd ${DEPLOY_DIR}/private
                php82 artisan optimize
                """
            }
        }
    }

    post {
        success {
            echo "Deploy completato con successo!"
        }
        failure {
            echo "Errore nel deploy!"
        }
    }
}

Variabili d'ambiente

Aggiorna le variabili nel blocco environment del Jenkinsfile:

Variabile Descrizione Esempio
DEPLOY_DIR Percorso della cartella di deploy sul server /home/www/html/PQR/progetto
REPO_URL URL SSH del repository GitHub
Reperibile su GitHub tramite Code › Clone › SSH
git@github.com:enesisrl/progetto.git
Attenzione
Il Jenkinsfile è configurato per progetti Laravel standard. Verifica che gli stage siano congrui con la struttura del progetto prima di eseguire il deploy.

Webhook GitHub

Accedi al repository su GitHub (o richiedi al proprietario di farlo) e naviga in Settings › Webhooks › Add webhook.

Payload URL
https://enesisrl:118414cd16289571c5600cfe86bb518534@jenkins.enesi.it/github-webhook/
Content type application/json

Conferma con Add webhook.

Primo deploy

Esegui un commit sul branch main e attendi che Jenkins esegua automaticamente la pipeline.

Progetti Laravel — file .env mancante
La prima esecuzione potrebbe fallire se il file .env non è presente nella cartella di deploy. In tal caso:
  1. Crea e configura il file .env nella cartella DEPLOY_DIR
  2. Crea il database
  3. Rilancia manualmente la pipeline dall'interfaccia Jenkins

Configurazione Server 9

Virtual Host

Aggiungi il virtual host nel file di configurazione Apache e ricarica il servizio:

# Modifica il file di configurazione
vi /home/www/html/config/vhosts-web.conf

# Ricarica Apache
systemctl reload httpd

Certificato HTTPS

Genera il certificato SSL/TLS tramite Certbot:

certbot --apache -d dominio.enesi8.it