Dalla dashboard di Jenkins:
Nella scheda di configurazione dell'elemento appena creato, imposta i seguenti parametri:
| GitHub hook trigger for GITScm polling | ✓ da abilitare |
| Definition | Pipeline script from SCM |
| SCM | Git |
| Depositi › URL di deposito |
URL HTTPS del repository GitHub Reperibile su GitHub tramite Code › Clone › HTTPS
|
| Depositi › Credenziali | enesisrl |
| Rami a costruire | */main |
Scarica il file di riferimento e aggiungilo alla radice del progetto.
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!"
}
}
}
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 |
Accedi al repository su GitHub (o richiedi al proprietario di farlo) e naviga in Settings › Webhooks › Add webhook.
| Payload URL |
|
| Content type | application/json |
Conferma con Add webhook.
Esegui un commit sul branch main e attendi che Jenkins esegua automaticamente la pipeline.
.env non è presente nella cartella di deploy. In tal caso:
.env nella cartella DEPLOY_DIRAggiungi 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
Genera il certificato SSL/TLS tramite Certbot:
certbot --apache -d dominio.enesi8.it