GoCD è un sistema di consegna e automazione continuo open source. Ti permette di modellare flussi di lavoro complessi usando la sua esecuzione parallela e sequenziale. La mappa dei flussi di valori consente di visualizzare facilmente un flusso di lavoro complesso con facilità. GoCD ti consente di confrontare facilmente due build e distribuire qualsiasi versione dell'applicazione desiderata. L'ecosistema GoCD è costituito da server GoCD e agente GoCD. GoCD è responsabile del controllo di tutto, come l'esecuzione dell'interfaccia utente basata sul Web e la gestione e la fornitura di lavori all'agente. Gli agenti Go sono responsabili dell'esecuzione dei lavori e delle distribuzioni.
Prerequisiti
- Un'istanza del server Vultr Ubuntu 16.04 con almeno 2 GB di RAM.
- Un utente sudo .
- Un nome di dominio puntato verso il server.
Per questo tutorial, utilizzeremo 192.168.1.1
come indirizzo IP pubblico e gocd.example.com
come nome di dominio puntato verso l'istanza Vultr. Assicurati di sostituire tutte le occorrenze del nome di dominio e dell'indirizzo IP di esempio con quello effettivo.
Aggiorna il tuo sistema di base usando la guida Come aggiornare Ubuntu 16.04 . Dopo aver aggiornato il sistema, procedere con l'installazione di Java.
Installa Java
GoCD richiede Java versione 8 e supporta sia Oracle Java che OpenJDK. Aggiungi il repository Ubuntu per Oracle Java 8.
sudo add-apt-repository --yes ppa:webupd8team/java
sudo apt update
Installa Oracle Java.
sudo apt -y install oracle-java8-installer
Controlla la versione
java -version
Vedrai il seguente output.
user@vultr:~$ java -version
java version "1.8.0_161"
Java(TM) SE Runtime Environment (build 1.8.0_161-b12)
Java HotSpot(TM) 64-Bit Server VM (build 25.161-b12, mixed mode)
Impostare il percorso predefinito per Java installando il seguente pacchetto.
sudo apt -y install oracle-java8-set-default
È possibile verificare se JAVA_HOME
è impostato eseguendo.
echo $JAVA_HOME
Vedrai.
user@vultr:~$ echo $JAVA_HOME
/usr/lib/jvm/java-8-oracle
Se non vedi alcun output, dovrai disconnetterti dalla shell corrente e riconnetterti.
Installa GoCD
Installa il repository ufficiale di GoCD nel sistema.
echo "deb https://download.gocd.org /" | sudo tee /etc/apt/sources.list.d/gocd.list
curl https://download.gocd.org/GOCD-GPG-KEY.asc | sudo apt-key add -
sudo apt update
Installa il server GoCD nel tuo sistema.
sudo apt install -y go-server
Avvia GoCD e abilita l'avvio automatico all'avvio.
sudo systemctl start go-server
sudo systemctl enable go-server
Prima di accedere alla dashboard di GoCD, creiamo una nuova directory per archiviare gli artefatti. Gli artefatti possono essere memorizzati sullo stesso disco in cui sono installati il sistema operativo e le applicazioni. In alternativa, è possibile utilizzare un disco dedicato o un'unità di archiviazione a blocchi per memorizzare gli artefatti.
Se si desidera utilizzare lo stesso disco per memorizzare gli artefatti, è sufficiente creare una nuova directory e fornire la proprietà all'utente GoCD.
sudo mkdir /opt/artifacts
sudo chown -R go:go /opt/artifacts
Il software GoCD consiglia di utilizzare una partizione o un'unità aggiuntiva per memorizzare gli artefatti. In una piattaforma di integrazione e consegna continua, gli artefatti vengono generati molto spesso. Lo spazio su disco diminuisce nel tempo quando vengono generati continuamente nuovi artefatti. Ad un certo punto, il sistema esaurirà lo spazio libero su disco e i servizi in esecuzione sul sistema falliranno. Per ovviare a questo problema, è possibile collegare una nuova unità di archiviazione a blocchi Vultr per archiviare gli artefatti. Se desideri comunque continuare con l'archiviazione di artefatti sulla stessa unità, passa alla sezione "Configura GoCD".
Distribuire una nuova unità di archiviazione a blocchi e collegarla all'istanza del server GoCD. Ora crea una nuova partizione sul dispositivo di archiviazione a blocchi.
sudo parted -s /dev/vdb mklabel gpt
sudo parted -s /dev/vdb unit mib mkpart primary 0% 100%
Crea il file system sul nuovo disco.
sudo mkfs.ext4 /dev/vdb1
Montare l'unità di archiviazione a blocchi.
sudo mkdir /mnt/artifacts
sudo cp /etc/fstab /etc/fstab.backup
echo "
/dev/vdb1 /mnt/artifacts ext4 defaults,noatime 0 0" | sudo tee -a /etc/fstab
sudo mount /mnt/artifacts
Ora esegui df
e vedrai la nuova unità di archiviazione a blocchi montata /mnt/artifacts
.
[user@vultr ~]$ df
Filesystem 1K-blocks Used Available Use% Mounted on
/dev/vda1 20616252 6313892 13237464 33% /
...
/dev/vdb1 10188052 36888 9610596 1% /mnt/artifacts
Fornire la proprietà della directory all'utente GoCD.
sudo chown -R go:go /mnt/artifacts
Ora puoi accedere alla dashboard di GoCD su http://192.168.1.1:8153
. Per accedere alla dashboard di GoCD su una connessione protetta, accedere https://192.168.1.1:8154
. Verrà visualizzato un errore a indicare che i certificati non sono validi. È possibile ignorare in modo sicuro l'errore poiché i certificati sono autofirmati. Per motivi di sicurezza, è necessario utilizzare sempre la dashboard su una connessione protetta.
Prima di impostare una nuova pipeline, vai a " Admin >> Server Configuration
" dalla barra di navigazione in alto.
Inserisci l'URL nel tuo sito non protetto nel campo " Site URL
" e nel sito protetto nel campo " Secure Site URL
".
Successivamente, fornisci i dettagli del tuo server SMTP per inviare notifiche e-mail da GoCD.
Infine, fornisci il percorso della posizione in cui desideri conservare gli artefatti. Se hai scelto di salvare gli artefatti sullo stesso disco del sistema operativo, inserisci /opt/artifacts
; se hai scelto di collegare un'unità di archiviazione a blocchi, puoi accedere /mnt/artifacts
.
Puoi anche configurare GoCD per eliminare automaticamente i vecchi artefatti. Configura l'opzione successiva in base alle dimensioni del disco. Tuttavia, l'opzione di eliminazione automatica non esegue un backup dei vecchi artefatti. Per eseguire manualmente un backup e quindi eliminare i vecchi artefatti, disabilitare l'eliminazione automatica selezionando l' Never
opzione " " per l' Auto delete old artifacts
opzione " ".
Sarà necessario riavviare il server GoCD in modo da applicare le nuove modifiche.
sudo systemctl restart go-server
Configura autenticazione
Per impostazione predefinita, il dashboard GoCD non è configurato per utilizzare alcun tipo di autenticazione, ma supporta l'autenticazione mediante un file di password e LDAP. In questo tutorial, configureremo l'autenticazione basata su password.
Nota : la configurazione dell'autenticazione è un passaggio facoltativo, ma è fortemente consigliata per i server pubblici, come Vultr.
Installa gli strumenti di Apache in modo da poter usare il htpasswd
comando per creare un file di password crittografato.
sudo apt -y install apache2-utils
Creare un file di password con il htpasswd
comando utilizzando la crittografia Bcrypt.
sudo htpasswd -B -c /etc/go/passwd_auth goadmin
Fornire la password per l'utente due volte. Vedrai il seguente output.
[user@vultr ~]$ sudo htpasswd -B -c /etc/go/passwd_auth goadmin
New password:
Re-type new password:
Adding password for user goadmin
Puoi aggiungere tutti gli utenti che desideri utilizzando lo stesso comando sopra, ma rimuovi l' -c
opzione. L' -c
opzione sostituirà il file esistente, sostituendo i vecchi utenti con il nuovo utente.
sudo htpasswd -B /etc/go/passwd_auth gouser1
Ora che abbiamo creato il file della password, accedi nuovamente alla dashboard di GoCD. Passare a " Admin >> Security >> Authorization Configurations
" dalla barra di navigazione in alto. Fare clic sul Add
pulsante e fornire qualsiasi ID. Scegli " Password File Authentication Plugin for GoCD
" per l'ID plug-in e indirizza il percorso al file della password. Ora fai clic sul pulsante " Check Connection
" per verificare che GoCD possa utilizzare il file della password per l'autenticazione.
Infine, salva il metodo di autenticazione. Ricarica la dashboard e ti disconnetterà automaticamente. Ora vedrai una schermata di accesso. Accedi utilizzando le credenziali create in precedenza.
Dovrai promuovere manualmente l'utente amministratore, altrimenti tutti gli utenti disporranno dei privilegi di amministratore. Passare a " Admin >> User Summary
" dalla barra di navigazione in alto.
Ora seleziona l'utente amministratore che hai creato e fai clic sul Roles
menu a discesa " ". Promuovi l'utente al solo amministratore selezionando la Go System Administrator
casella " ".
Per aggiungere gli utenti in GoCD creati nel file della password, fare clic sul pulsante " ADD
" e cercare l'utente che li aggiunga. Gli utenti vengono inoltre aggiunti automaticamente alla dashboard di GoCD al primo accesso. Ovviamente, affinché gli utenti possano accedere, devono essere aggiunti al file delle password che abbiamo creato in precedenza.
Protezione di GoCD con Let's Encrypt SSL
Per impostazione predefinita, GoCD ascolta le porte 8153
e 8154
le connessioni sicure. Sebbene la porta 8154
offra una connessione sicura all'applicazione, mostra anche errori del browser in quanto utilizza un certificato autofirmato. In questa sezione del tutorial, installeremo e proteggeremo Nginx con un certificato SSL gratuito Let's Encrypt. Il web server Nginx funzionerà come proxy inverso per inoltrare le richieste in arrivo all'endpoint di GoCD HTTP
.
Installa Nginx.
sudo apt -y install nginx
Avvia Nginx e abilita l'avvio automatico all'avvio.
sudo systemctl start nginx
sudo systemctl enable nginx
Aggiungi il repository Certbot.
sudo add-apt-repository --yes ppa:certbot/certbot
sudo apt-get update
Installa Certbot, che è l'applicazione client per Let's Encrypt CA.
sudo apt -y install certbot
Nota : per ottenere certificati da Let's Encrypt CA, il dominio per il quale devono essere generati i certificati deve essere puntato verso il server. In caso contrario, apportare le modifiche necessarie ai record DNS del dominio e attendere la propagazione del DNS prima di effettuare nuovamente la richiesta di certificato. Certbot controlla l'autorità di dominio prima di fornire i certificati.
Genera i certificati SSL.
sudo certbot certonly --webroot -w /var/www/html -d gocd.example.com
È probabile che i certificati generati siano archiviati in /etc/letsencrypt/live/gocd.example.com/
. Il certificato SSL verrà archiviato come fullchain.pem
e la chiave privata verrà archiviata come privkey.pem
.
Let's Encrypt certificati scadranno tra 90 giorni, quindi si consiglia di impostare il rinnovo automatico dei certificati utilizzando cron job.
Apri il file di lavoro cron.
sudo crontab -e
Aggiungi la seguente riga alla fine del file.
30 5 * * * /usr/bin/certbot renew --quiet
Il precedente cron job verrà eseguito ogni giorno alle 5:30. Se il certificato è in scadenza, verrà rinnovato automaticamente.
Crea un nuovo file di configurazione per l'interfaccia web GoCD.
sudo nano /etc/nginx/sites-available/gocd
Popolare il file.
upstream gocd {
server 127.0.0.1:8153;
}
server {
listen 80;
server_name gocd.example.com;
return 301 https://$host$request_uri;
}
server {
listen 443;
server_name gocd.example.com;
ssl_certificate /etc/letsencrypt/live/gocd.example.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/gocd.example.com/privkey.pem;
ssl on;
ssl_session_cache builtin:1000 shared:SSL:10m;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_ciphers HIGH:!aNULL:!eNULL:!EXPORT:!CAMELLIA:!DES:!MD5:!PSK:!RC4;
ssl_prefer_server_ciphers on;
access_log /var/log/nginx/gocd.access.log;
location / {
proxy_pass http://gocd;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $http_host;
proxy_set_header X-NginX-Proxy true;
proxy_redirect off;
}
location /go {
proxy_pass http://gocd/go;
proxy_http_version 1.1;
proxy_set_header Upgrade websocket;
proxy_set_header Connection upgrade;
proxy_read_timeout 86400;
}
}
Attiva il file di configurazione.
sudo ln -s /etc/nginx/sites-available/gocd /etc/nginx/sites-enabled/gocd
Riavviare il server Web Nginx per implementare la modifica della configurazione.
sudo systemctl restart nginx
Ora puoi accedere alla dashboard di GoCD all'indirizzo https://gocd.example.com
. Accedi alla tua dashboard usando le credenziali di amministratore e vai a " Admin >> Server Configuration
" dalla barra di navigazione in alto.
Impostare " Site URL
" e " Secure Site URL
" su https://gocd.example.com
.
Installazione di GoCD Agent
Nell'ambiente di integrazione continua GoCD, gli agenti GoCD sono i lavoratori responsabili dell'esecuzione di tutte le attività. Quando viene rilevata una modifica all'origine, la pipeline viene attivata e i lavori vengono assegnati ai lavoratori disponibili per l'esecuzione. L'agente quindi esegue l'attività e riporta lo stato finale dopo l'esecuzione.
Per eseguire una pipeline, è necessario configurare almeno un agente. Procedere con l'installazione dell'agente GoCD sul server GoCD.
Poiché abbiamo già importato il repository GoCD nel server, possiamo installare direttamente Go Agent.
sudo apt install -y go-agent
Ora, avvia il server GoCD e abilitalo all'avvio automatico all'avvio.
sudo systemctl start go-agent
sudo systemctl enable go-agent
L'agente GoCD in esecuzione sull'host locale viene automaticamente abilitato quando viene rilevato.