Ricerca nel sito web

Come installare e configurare GoCD su Ubuntu 22.04


Su questa pagina

  1. Prerequisiti
  2. Passaggio 1: configurazione del firewall
  3. Passaggio 2 - Installa GoCD
  4. Passaggio 3 - Installa e configura PostgreSQL
  5. Passaggio 4 - Configura GoCD
  6. Passaggio 5 - Imposta l'autenticazione GoCD
  7. Passaggio 6 - Installa Nginx
  8. Passaggio 7 - Installa SSL
  9. Passaggio 8 - Configura Nginx
  10. Passaggio 9 - Installa l'agente GoCD
  11. 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

  1. A server running Ubuntu 22.04 with a minimum of 2GB of RAM.

  2. A non-sudo user with root privileges.

  3. The uncomplicated Firewall(UFW) is enabled and running.

  4. Fully Qualified Domain Names(FQDN) pointing to your server. We will be using gocd.example.com for our tutorial.

  5. 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://:8153/. Per accedere alla dashboard di GoCD tramite una connessione sicura, visita l'URL https://:8154. 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.