Come installare e configurare GoCD su Ubuntu 22.04
Su questa pagina
- Prerequisiti
- Passaggio 1: configurazione del firewall
- Passaggio 2 - Installa GoCD
- Passaggio 3 - Installa e configura PostgreSQL
- Passaggio 4 - Configura GoCD
- Passaggio 5 - Imposta l'autenticazione GoCD
- Passaggio 6 - Installa Nginx
- Passaggio 7 - Installa SSL
- Passaggio 8 - Configura Nginx
- Passaggio 9 - Installa l'agente GoCD
- Conclusione
GoCD è un sistema di distribuzione continua e automazione open source. GoCD eccelle nella modellazione di flussi di lavoro CD complessi per un feedback rapido con i suoi costrutti di modellazione, l'esecuzione parallela e la gestione delle dipendenze. GoCD ti aiuta a risolvere i problemi di una pipeline interrotta monitorando ogni modifica dal commit alla distribuzione in tempo reale. GoCD ti consente di confrontare facilmente due build e distribuire qualsiasi versione dell'applicazione che desideri. L'ecosistema GoCD è costituito da un server GoCD e un agente GoCD. GoCD controlla 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 processi e delle distribuzioni.
Questo tutorial ti insegnerà a installare e configurare GoCD su un server Ubuntu 22.04.
Prerequisiti
-
A server running Ubuntu 22.04 with a minimum of 2GB of RAM.
-
A non-sudo user with root privileges.
-
The uncomplicated Firewall(UFW) is enabled and running.
-
Fully Qualified Domain Names(FQDN) pointing to your server. We will be using
gocd.example.com
for our tutorial. -
Ensure that everything is updated.
$ sudo apt update && sudo apt upgrade
Passaggio 1: configurare il firewall
Prima di installare qualsiasi pacchetto, il primo passo è configurare il firewall per aprire le porte per HTTP, HTTPS e Synapse.
Controlla lo stato del firewall.
$ sudo ufw status
Dovresti vedere qualcosa di simile al seguente.
Status: active To Action From -- ------ ---- OpenSSH ALLOW Anywhere OpenSSH (v6) ALLOW Anywhere (v6)
Apri le porte HTTP, HTTPS e GoCD nel firewall.
$ sudo ufw allow 8153 $ sudo ufw allow http $ sudo ufw allow https
Controlla di nuovo lo stato per confermare.
$ sudo ufw status Status: active To Action From -- ------ ---- OpenSSH ALLOW Anywhere 8153 ALLOW Anywhere 80/tcp ALLOW Anywhere 443 ALLOW Anywhere OpenSSH (v6) ALLOW Anywhere (v6) 8153 (v6) ALLOW Anywhere (v6) 80/tcp (v6) ALLOW Anywhere (v6) 443 (v6) ALLOW Anywhere (v6)
Passo 2 - Installa GoCD
Importa la chiave GPG di GoCD nel sistema.
$ curl https://download.gocd.org/GOCD-GPG-KEY.asc | gpg --dearmor | sudo tee /usr/share/keyrings/gocd.gpg > /dev/null 2>&1
Aggiungi il repository GoCD al sistema.
$ echo "deb [signed-by=/usr/share/keyrings/gocd.gpg] https://download.gocd.org /" | sudo tee /etc/apt/sources.list.d/gocd.list
Aggiorna l'elenco dei repository di sistema.
$ sudo apt update
Installa GoCD. Questo installerà anche l'ultima versione compatibile di Java Runtime (JRE) necessaria per eseguire GoCD.
$ sudo apt install -y go-server
Prima di procedere al passaggio successivo, è necessario creare una directory per archiviare gli artefatti. Gli artefatti possono essere archiviati sullo stesso disco in cui è installato il server o su un disco dedicato o su un'unità di archiviazione a blocchi. Lo memorizzeremo sullo stesso disco per questo tutorial.
Creare una directory per archiviare gli artefatti.
$ sudo mkdir /opt/artifacts
Dai a GoCD la proprietà della directory degli artefatti.
$ sudo chown -R go:go /opt/artifacts
Passo 3 - Installa e configura PostgreSQL
GoCD viene fornito con il database H2 per impostazione predefinita che non richiede alcuna configurazione. Se si utilizza GoCD in un ambiente di produzione, si consiglia PostgreSQL.
Ubuntu 22.04 viene fornito con una versione precedente di PostgreSQL. Installeremo Postgres 15 per il nostro tutorial.
Installa il repository per PostgreSQL.
$ sudo sh -c 'echo "deb http://apt.postgresql.org/pub/repos/apt $(lsb_release -cs)-pgdg main" > /etc/apt/sources.list.d/pgdg.list'
Importa la chiave GPG PostgreSQL.
$ curl https://www.postgresql.org/media/keys/ACCC4CF8.asc | gpg --dearmor | sudo tee /etc/apt/trusted.gpg.d/apt.postgresql.org.gpg >/dev/null
Aggiorna l'elenco dei repository di sistema.
$ sudo apt update
Installa il server PostgreSQL 15.
$ sudo apt install -y postgresql postgresql-contrib
Controlla lo stato del servizio.
$ sudo systemctl status postgresql ? postgresql.service - PostgreSQL RDBMS Loaded: loaded (/lib/systemd/system/postgresql.service; enabled; vendor preset: enabled) Active: active (exited) since Mon 2022-12-19 06:49:50 UTC; 2h 26min ago Main PID: 3536 (code=exited, status=0/SUCCESS) CPU: 1ms Dec 19 06:49:50 gocd systemd[1]: Starting PostgreSQL RDBMS... Dec 19 06:49:50 gocd systemd[1]: Finished PostgreSQL RDBMS.
Accedi alla shell PostgreSQL.
$ sudo -i -u postgres psql
Crea un nuovo database per GoCD.
postgres=# CREATE DATABASE "gocd" ENCODING="UTF8" TEMPLATE="template0";
Crea un nuovo utente del database con una password complessa.
postgres=# CREATE ROLE "gocd_database_user" PASSWORD 'gocd_database_password' NOSUPERUSER NOCREATEDB NOCREATEROLE INHERIT LOGIN;
Concedere all'utente i diritti per l'utilizzo del database.
postgres=# GRANT ALL PRIVILEGES ON DATABASE "gocd" TO "gocd_database_user";
Assegna all'utente i privilegi di superutente. L'utente del database richiede i privilegi di superutente solo al primo avvio del server GoCD. Questo è necessario perché le estensioni pgcrypto e citext devono essere create inizialmente. Il privilegio di superutente può essere revocato dopo il primo avvio del server GoCD in quanto non sarà più necessario.
postgres-=# ALTER ROLE "gocd_database_user" SUPERUSER;
Uscire dalla shell di Postgres.
postgres=# \q
Il passaggio finale nella configurazione di PostgreSQL per GoCD consiste nell'archiviare le credenziali del database nella directory di configurazione del server GoCD.
Crea il file db.properties
e aprilo per la modifica.
$ sudo nano /etc/go/db.properties
Incolla il seguente codice al suo interno.
db.driver=org.postgresql.Driver db.url=jdbc:postgresql://localhost:5432/gocd db.user=gocd_database_user db.password=gocd_database_password
Salva il file premendo Ctrl + X e immettendo Y quando richiesto.
Passo 4 - Configura GoCD
Prima di configurare GoCD, dobbiamo avviare il server GoCD.
Avvia il server GoCD.
$ sudo systemctl start go-server
Controlla lo stato del server.
$ sudo systemctl status go-server ? go-server.service - go-server Loaded: loaded (/etc/systemd/system/go-server.service; enabled; vendor preset: enabled) Active: active (running) since Thu 2022-12-15 08:53:10 UTC; 8s ago Process: 8475 ExecStart=/usr/share/go-server/bin/go-server start sysd (code=exited, status=0/SUCCESS) Main PID: 8541 (wrapper-linux-x) Tasks: 43 (limit: 2237) Memory: 566.7M CPU: 11.873s CGroup: /system.slice/go-server.service ??8541 /usr/share/go-server/bin/../wrapper/wrapper-linux-x86-64 /usr/share/go-server/wrapper-config/wrapper.conf wrapper.syslog.ident=go-server wrapper.pidfile=/var/lib/go-server/run/go-server.pi> ??8556 /usr/share/go-server/jre/bin/java --add-opens=java.base/java.lang=ALL-UNNAMED --add-opens=java.base/java.util=ALL-UNNAMED -Xms512m -Xmx1024m -XX:MaxMetaspaceSize=400m .....
Avvia la dashboard di GoCD visitando l'URL http://
. Per accedere alla dashboard di GoCD tramite una connessione sicura, visita l'URL https://
. Ignora l'errore che indica che i certificati non sono validi. È sempre importante accedere al dashboard tramite una connessione protetta.
Otterrai la pagina seguente.
Prima di usarlo, dovresti configurare GoCD. Vai al menu Amministrazione >> Configurazione server dalla barra di navigazione in alto.
Aggiungi l'URL del sito nei campi forniti e premi il pulsante Salva.
Fare clic sull'opzione Gestione degli artefatti dal menu a sinistra e inserire la posizione della directory degli artefatti creata in precedenza. Seleziona l'opzione Consenti artefatti di pulizia automatica per gestire lo spazio e impostare la capacità in base ai tuoi requisiti. Fare clic sul pulsante Salva al termine.
Tuttavia, l'opzione di eliminazione automatica non esegue un backup dei tuoi vecchi artefatti. Per eseguire manualmente un backup e quindi eliminare i vecchi artefatti, disabilitare l'eliminazione automatica deselezionando l'opzione Consenti artefatti di pulizia automatica.
Successivamente, dobbiamo configurare le opzioni e-mail per ricevere notifiche e-mail da GoCD.
Fare clic sul pulsante Invia e-mail di prova per verificare le impostazioni, quindi fare clic sul pulsante Salva per terminare.
Se desideri impostare la durata del timeout del lavoro, puoi farlo visitando la sezione Configurazione del timeout del lavoro.
Riavvia il server GoCD per applicare le modifiche.
$ sudo systemctl restart go-server
Passaggio 5: configurare l'autenticazione GoCD
Per impostazione predefinita, GoCD è accessibile a chiunque, ma puoi configurare l'autenticazione utilizzando un file di password o LDAP. In questo tutorial, configureremo l'autenticazione basata su password.
Installa gli strumenti Apache in modo da poter creare un file di password crittografato utilizzando il comando htpasswd
.
$ sudo apt install apache2-utils
Crea un file di password utilizzando l'autenticazione Bcrypt. Il flag -c
crea un nuovo file, il flag -B
imposta l'autenticazione Bcrypt e il goadmin
è il nome utente.
$ sudo htpasswd -B -c /etc/go/passwd_auth navjot
Fornire la password quando richiesto.
New password: Re-type new password: Adding password for user navjot
Puoi aggiungere più utenti usando lo stesso comando, ma rimuovi il flag -c
perché il file esiste già. Usando di nuovo il flag -c
si sovrascriverà il file esistente e si sostituirà l'utente esistente con quello nuovo.
$ sudo htpasswd -B /etc/go/passwd_auth gouser1
Il passaggio successivo nell'autenticazione consiste nel configurare la posizione della password nel backend di GoCD. Visita la sezione Amministrazione >> Sicurezza >> Configurazione autorizzazione dalla barra di navigazione in alto.
Fare clic sul pulsante Aggiungi e fornire qualsiasi ID. Seleziona Password File Authentication Plugin for GoCD per l'ID del plugin dal menu a tendina e inserisci il percorso del file della password. Quindi, fai clic sul pulsante Verifica connessione per verificare se GoCD può accedere al file per scopi di autenticazione.
Per il primo utente, mantieni deselezionata l'opzione Consenti l'accesso solo agli utenti conosciuti. Fare clic sul pulsante Salva per terminare.
Presto ti verrà chiesto di aggiornare GoCD e verrai indirizzato alla pagina di accesso.
Inserisci le credenziali create in precedenza e premi sul pulsante Accedi per procedere. Visita la sezione Amministrazione >> Sicurezza >> Gestione utenti dalla barra di navigazione in alto.
Selezionare la casella SYSTEM ADMIN per contrassegnare l'utente come amministratore. Ora, torna alla sezione Amministrazione >> Sicurezza >> Configurazione autorizzazione e fai clic sul pulsante Modifica nell'elenco dei file delle password.
Seleziona l'opzione Consenti l'accesso solo agli utenti conosciuti. D'ora in poi, devi creare un nuovo utente tramite il file htpasswd
e poi importarlo prima dalla pagina del server.
Creiamo un secondo utente.
$ sudo htpasswd -B /etc/go/passwd_auth gouser1 New password: Re-type new password: Adding password for user gouser1
Visita la sezione Amministrazione >> Sicurezza >> Gestione utenti dal menu di navigazione in alto e fai clic sul pulsante Importa utente. Inserisci il nome utente gouser1
per cercare l'utente.
Selezionare l'utente e fare clic sul pulsante Importa per aggiungere l'utente.
Ora puoi accedere anche utilizzando il secondo utente. Ripeti il processo per più utenti.
Passaggio 6: installa Nginx
Ubuntu 22.04 viene fornito con una versione precedente di Nginx. Per installare l'ultima versione, devi scaricare il repository Nginx ufficiale.
Importa la chiave di firma Nginxs.
$ curl https://nginx.org/keys/nginx_signing.key | gpg --dearmor \ | sudo tee /usr/share/keyrings/nginx-archive-keyring.gpg >/dev/null
Aggiungi il repository per la versione stabile di Nginxs.
$ echo "deb [signed-by=/usr/share/keyrings/nginx-archive-keyring.gpg arch=amd64] \ http://nginx.org/packages/ubuntu `lsb_release -cs` nginx" \ | sudo tee /etc/apt/sources.list.d/nginx.list
Aggiorna i repository di sistema.
$ sudo apt update
Installa Nginx.
$ sudo apt install nginx
Verificare l'installazione.
$ nginx -v nginx version: nginx/1.22.1
Avvia il server Nginx.
$ sudo systemctl start nginx
Passaggio 7: installa SSL
Dobbiamo installare Certbot per generare il certificato SSL. Puoi installare Certbot usando il repository Ubuntus o prendere l'ultima versione usando lo strumento Snapd. Useremo la versione Snapd.
Ubuntu 22.04 viene fornito con Snapd installato per impostazione predefinita. Esegui i seguenti comandi per assicurarti che la tua versione di Snapd sia aggiornata.
$ sudo snap install core $ sudo snap refresh core
Installa Cerbot.
$ sudo snap install --classic certbot
Utilizzare il seguente comando per assicurarsi che il comando Certbot possa essere eseguito creando un collegamento simbolico alla directory /usr/bin
.
$ sudo ln -s /snap/bin/certbot /usr/bin/certbot
Eseguire il seguente comando per generare un certificato SSL.
$ sudo certbot certonly --nginx --agree-tos --no-eff-email --staple-ocsp --preferred-challenges http -m -d gocd.example.com
Il comando precedente scaricherà un certificato nella directory /etc/letsencrypt/live/gocd.example.com
sul tuo server.
Genera un certificato di gruppo Diffie-Hellman.
$ sudo openssl dhparam -dsaparam -out /etc/ssl/certs/dhparam.pem 4096
Esegui un'esecuzione a secco del processo per verificare se il rinnovo SSL funziona correttamente.
$ sudo certbot renew --dry-run
Se non vedi errori, sei a posto. Il tuo certificato si rinnoverà automaticamente.
Passaggio 8: configurare Nginx
Apri il file /etc/nginx/nginx.conf
per la modifica.
$ sudo nano /etc/nginx/nginx.conf
Aggiungere la riga seguente prima della riga include /etc/nginx/conf.d/*.conf;
.
server_names_hash_bucket_size 64;
Salva il file premendo Ctrl + X e immettendo Y quando richiesto.
Crea e apri il file /etc/nginx/conf.d/gocd.conf
per la modifica.
$ sudo nano /etc/nginx/conf.d/gocd.conf
Incolla il seguente codice al suo interno.
server { # Redirect any http requests to https listen 80; listen [::]:80; server_name gocd.example.com; return 301 https://$host$request_uri; } map $http_upgrade $connection_upgrade { default upgrade; '' close; } server { listen 443 ssl http2; listen [::]:443 ssl http2; server_name gocd.example.com; access_log /var/log/nginx/gocd.access.log; error_log /var/log/nginx/gocd.error.log; # TLS configuration ssl_certificate /etc/letsencrypt/live/gocd.example.com/fullchain.pem; ssl_certificate_key /etc/letsencrypt/live/gocd.example.com/privkey.pem; ssl_trusted_certificate /etc/letsencrypt/live/gocd.example.com/chain.pem; ssl_protocols TLSv1.2 TLSv1.3; ssl_ciphers 'ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA384'; ssl_prefer_server_ciphers on; ssl_session_cache shared:SSL:50m; ssl_session_timeout 1d; # OCSP Stapling --- # fetch OCSP records from URL in ssl_certificate and cache them ssl_stapling on; ssl_stapling_verify on; ssl_dhparam /etc/ssl/certs/dhparam.pem; # Proxy everything over to the GoCD server location / { proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection $connection_upgrade; proxy_pass http://localhost:8153/; # To be able to upload artifacts larger than default size of 1mb, ensure that you set this up to a large value. # setting to `0` will disable checking for body size. # See https://nginx.org/en/docs/http/ngx_http_core_module.html#client_max_body_size client_max_body_size 10000m; # If you are intending to allow downloading of large artifacts (> 1GB) from GoCD you may need to adjust one of the # following two proxy buffering settings to prevent downloads failing for slow clients due to server idle timeouts. # # See https://nginx.org/en/docs/http/ngx_http_proxy_module.html#proxy_buffering # # 1) disable the buffering of responses entirely (enabled by default on NGINX) OR # proxy_buffering off; # # 2) increase the max temporary file size (setting to `0` will disable the limit) # proxy_max_temp_file_size 2048m; } }
Salva il file premendo Ctrl + X e inserendo Y quando richiesto una volta terminato.
Verificare la sintassi del file di configurazione Nginx.
$ sudo nginx -t nginx: the configuration file /etc/nginx/nginx.conf syntax is ok nginx: configuration file /etc/nginx/nginx.conf test is successful
Riavvia il servizio Nginx.
$ sudo systemctl restart nginx
Ora puoi accedere alla dashboard di GoCD tramite l'URL https://gocd.example.com
.
Passaggio 9: installa l'agente GoCD
Gli agenti GoCD sono i lavoratori responsabili dell'esecuzione di tutti i compiti. Quando viene rilevata una modifica nell'origine, la pipeline viene attivata e i lavori vengono assegnati ai lavoratori disponibili per l'esecuzione. L'agente esegue quindi l'attività e segnala lo stato finale dopo l'esecuzione.
Per eseguire la pipeline, è necessario configurare almeno un agente. Installiamo l'agente GoCD sul server GoCD.
Abbiamo già importato il repository GoCD, quindi installa direttamente l'agente GoCD.
$ sudo apt install go-agent
Avvia il servizio dell'agente GoCD.
$ sudo systemctl start go-agent
Visita la scheda Agenti sulla dashboard di GoCD e dovresti vedere l'agente elencato e abilitato automaticamente.
Puoi iniziare a utilizzare il servizio GoCD CI/CD da qui.
Conclusione
Questo conclude il nostro tutorial, dove hai imparato come installare e configurare GoCD su un server Ubuntu 22.04. Se hai domande, pubblicale nei commenti qui sotto.