Requisits previs
Instal·leu Java
Instal·leu GoCD
Configura l'emmagatzematge de blocs
Configura GoCD
Configura l'autenticació
Protecció de GoCD amb Let's Encrypt SSL
Instal·lació de l'agent GoCD
GoCD és un sistema d'automatització i lliurament continu de codi obert. Us permet modelar fluxos de treball complexos mitjançant la seva execució paral·lela i seqüencial. El seu mapa de flux de valor us permet visualitzar fàcilment un flux de treball complex amb facilitat. GoCD us permet comparar fàcilment dues compilacions i desplegar qualsevol versió de l'aplicació que vulgueu. L'ecosistema GoCD està format pel servidor GoCD i l'agent GoCD. GoCD és responsable de controlar-ho tot, com ara executar la interfície d'usuari basada en web i gestionar i proporcionar feines a l'agent. Els agents de Go són els responsables d'executar les feines i els desplegaments.
Requisits previs
- Una instància del servidor Vultr Ubuntu 16.04 amb almenys 2 GB de RAM.
- Un usuari de sudo .
- Un nom de domini apuntat cap al servidor.
Per a aquest tutorial, utilitzarem 192.168.1.1com a adreça IP pública i gocd.example.com com a nom de domini apuntat cap a la instància Vultr. Assegureu-vos de substituir totes les ocurrències del nom de domini d'exemple i l'adreça IP per l'actual.
Actualitzeu el vostre sistema base mitjançant la guia Com actualitzar Ubuntu 16.04 . Un cop actualitzat el sistema, procediu a instal·lar Java.
Instal·leu Java
GoCD requereix Java versió 8 i és compatible amb Oracle Java i OpenJDK. Afegiu el dipòsit d'Ubuntu per a Oracle Java 8.
sudo add-apt-repository --yes ppa:webupd8team/java
sudo apt update
Instal·leu Oracle Java.
sudo apt -y install oracle-java8-installer
Comproveu la versió.
java -version
Veureu la següent sortida.
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)
Establiu el camí predeterminat per a Java instal·lant el paquet següent.
sudo apt -y install oracle-java8-set-default
Podeu comprovar si JAVA_HOMEestà configurat executant-lo.
echo $JAVA_HOME
Ja ho veuràs.
user@vultr:~$ echo $JAVA_HOME
/usr/lib/jvm/java-8-oracle
Si no veieu cap sortida, haureu de tancar la sessió de l'intèrpret d'ordres actual i tornar a iniciar la sessió.
Instal·leu GoCD
Instal·leu el repositori oficial de GoCD al 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
Instal·leu el servidor GoCD al vostre sistema.
sudo apt install -y go-server
Inicieu GoCD i activeu-lo perquè s'iniciï automàticament en el moment de l'arrencada.
sudo systemctl start go-server
sudo systemctl enable go-server
Abans d'accedir al tauler de GoCD, creem un directori nou per emmagatzemar els artefactes. Els artefactes es poden emmagatzemar al mateix disc on estan instal·lats el sistema operatiu i les aplicacions. Alternativament, podeu utilitzar un disc dedicat o una unitat d'emmagatzematge de blocs per emmagatzemar els artefactes.
Si voleu utilitzar el mateix disc per emmagatzemar els artefactes, només cal que creeu un nou directori i proporcioneu la propietat a l'usuari de GoCD.
sudo mkdir /opt/artifacts
sudo chown -R go:go /opt/artifacts
El programari GoCD recomana que utilitzeu una partició o unitat addicional per emmagatzemar els artefactes. En una plataforma d'integració i lliurament contínua, els artefactes es generen molt sovint. L'espai en disc disminueix amb el temps quan es generen nous artefactes contínuament. En algun moment, el vostre sistema es quedarà sense espai al disc lliure i els serveis que s'executen al vostre sistema fallaran. Per solucionar aquest problema, podeu adjuntar una nova unitat d' emmagatzematge de blocs Vultr per emmagatzemar els artefactes. Si encara voleu continuar amb l'emmagatzematge d'artefactes a la mateixa unitat, aneu a la secció "Configura GoCD".
Desplegueu una nova unitat d'emmagatzematge de blocs i connecteu-la a la vostra instància del servidor GoCD. Ara creeu una nova partició al dispositiu d'emmagatzematge de blocs.
sudo parted -s /dev/vdb mklabel gpt
sudo parted -s /dev/vdb unit mib mkpart primary 0% 100%
Creeu el sistema de fitxers al disc nou.
sudo mkfs.ext4 /dev/vdb1
Munteu la unitat d'emmagatzematge de blocs.
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
Ara, executeu dfi veureu la nova unitat d'emmagatzematge de blocs muntada a /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
Proporcioneu la propietat del directori a l'usuari de GoCD.
sudo chown -R go:go /mnt/artifacts
Ara podeu accedir al tauler de GoCD a http://192.168.1.1:8153. Per accedir al tauler de GoCD amb una connexió segura, accediu a https://192.168.1.1:8154. Obtindreu un error que indica que els certificats no són vàlids. Podeu ignorar l'error amb seguretat, ja que els certificats estan signats automàticament. Per motius de seguretat, sempre hauríeu d'utilitzar el tauler mitjançant una connexió segura.
Abans de configurar una canalització nova, aneu a " Admin >> Server Configuration" des de la barra de navegació superior.
Introduïu l'URL del vostre lloc no segur al Site URLcamp " " i el lloc segur al Secure Site URLcamp " ".

A continuació, proporcioneu els detalls del vostre servidor SMTP per enviar notificacions per correu electrònic des de GoCD.

Finalment, proporcioneu el camí cap a la ubicació on voleu emmagatzemar els artefactes. Si heu triat emmagatzemar els artefactes al mateix disc que el sistema operatiu, introduïu /opt/artifacts; si heu decidit connectar una unitat d'emmagatzematge de blocs, podeu introduir /mnt/artifacts.
També podeu configurar GoCD per eliminar automàticament els artefactes antics. Configureu la següent opció segons la mida del vostre disc. Tanmateix, l'opció d'eliminació automàtica no fa una còpia de seguretat dels vostres artefactes antics. Per fer una còpia de seguretat manualment i després suprimir els artefactes antics, desactiveu la supressió automàtica escollint l' Neveropció " " per a l' Auto delete old artifactsopció " ".

Haureu de reiniciar el servidor GoCD perquè s'apliquin els nous canvis.
sudo systemctl restart go-server
Configura l'autenticació
By default, the GoCD dashboard is not configured to use any kind of authentication, but it supports authentication using a password file and LDAP. In this tutorial, we will set up password-based authentication.
Note: Setting up authentication is an optional step, but it is strongly recommended for public facing servers, such as Vultr.
Install Apache tools so that we can use the htpasswd command to create an encrypted password file.
sudo apt -y install apache2-utils
Create a password file with the htpasswd command using Bcrypt encryption.
sudo htpasswd -B -c /etc/go/passwd_auth goadmin
Provide the password for the user twice. You will see the following output.
[user@vultr ~]$ sudo htpasswd -B -c /etc/go/passwd_auth goadmin
New password:
Re-type new password:
Adding password for user goadmin
You can add as many users as you want using the same command above, but remove the -c option. The -c option will replace the existing file, replacing old users with the new user.
sudo htpasswd -B /etc/go/passwd_auth gouser1
Now that we have created the password file, access the GoCD dashboard again. Navigate to "Admin >> Security >> Authorization Configurations" from the top navigation bar. Click on the Add button and provide any ID. Choose "Password File Authentication Plugin for GoCD" for the plugin ID and direct the path to the password file. Now click on the "Check Connection" button to verify that GoCD can use the password file for authentication.

Finally, save the authentication method. Reload the dashboard and it will automatically log you out. You will see a login screen now. Log in using the credentials created earlier.
You will need to promote the administrator user manually, otherwise, all the users will have administrator privileges. Navigate to "Admin >> User Summary" from the top navigation bar.
Now select the admin user you've created and click on the "Roles" drop-down. Promote the user to the only administrator by selecting the "Go System Administrator" checkbox.

To add the users in GoCD created in the password file, click on the "ADD" button and search for the user to add them. Users are also automatically added to the GoCD dashboard on their first login. Obviously, for users to log in, they must be added to the password file we have created earlier.
Securing GoCD with Let's Encrypt SSL
De manera predeterminada, GoCD escolta els ports 8153 i les 8154 connexions segures. Tot i que el port 8154 proporciona una connexió segura a l'aplicació, també mostra errors del navegador ja que utilitza un certificat autofirmat. En aquesta secció del tutorial, instal·larem i protegirem Nginx amb un certificat SSL gratuït de Let's Encrypt. El servidor web Nginx funcionarà com a servidor intermediari invers per reenviar les sol·licituds entrants al HTTP punt final de GoCD .
Instal·leu Nginx.
sudo apt -y install nginx
Inicieu Nginx i activeu-lo perquè s'iniciï automàticament en el moment de l'arrencada.
sudo systemctl start nginx
sudo systemctl enable nginx
Afegiu el repositori Certbot.
sudo add-apt-repository --yes ppa:certbot/certbot
sudo apt-get update
Instal·leu Certbot, que és l'aplicació client de Let's Encrypt CA.
sudo apt -y install certbot
Nota : per obtenir certificats de Let's Encrypt CA, el domini per al qual s'han de generar els certificats s'ha d'apuntar cap al servidor. Si no, feu els canvis necessaris als registres DNS del domini i espereu que el DNS es propagui abans de tornar a fer la sol·licitud de certificat. Certbot verifica l'autoritat del domini abans de proporcionar els certificats.
Generar els certificats SSL.
sudo certbot certonly --webroot -w /var/www/html -d gocd.example.com
És probable que els certificats generats s'emmagatzemin a /etc/letsencrypt/live/gocd.example.com/. El certificat SSL s'emmagatzemarà com a fullchain.pem i la clau privada com a privkey.pem.
Els certificats de Let's Encrypt caduquen en 90 dies, per la qual cosa es recomana configurar la renovació automàtica dels certificats mitjançant tasques cron.
Obriu el fitxer de treball cron.
sudo crontab -e
Afegiu la línia següent al final del fitxer.
30 5 * * * /usr/bin/certbot renew --quiet
El treball cron anterior s'executarà cada dia a les 5:30 del matí. Si el certificat ha de caducar, es renovarà automàticament.
Creeu un fitxer de configuració nou per a la interfície web de GoCD.
sudo nano /etc/nginx/sites-available/gocd
Omple el fitxer.
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;
}
}
Activeu el fitxer de configuració.
sudo ln -s /etc/nginx/sites-available/gocd /etc/nginx/sites-enabled/gocd
Reinicieu el servidor web Nginx per implementar el canvi de configuració.
sudo systemctl restart nginx
Ara podeu accedir al tauler de GoCD a https://gocd.example.com. Inicieu sessió al vostre tauler amb les credencials d'administrador i navegueu a " Admin >> Server Configuration" des de la barra de navegació superior.

Estableix " Site URL" i " Secure Site URL" a https://gocd.example.com.
Instal·lació de l'agent GoCD
En l'entorn d'integració contínua de GoCD, els agents de GoCD són els treballadors responsables de l'execució de totes les tasques. Quan es detecta un canvi en la font, s'activa la canalització i els treballs s'assignen als treballadors disponibles per a l'execució. A continuació, l'agent executa la tasca i informa de l'estat final després de l'execució.
Per executar una canalització, cal configurar almenys un agent. Continueu amb la instal·lació de l'agent GoCD al servidor GoCD.
Com que ja hem importat el repositori GoCD al servidor, podem instal·lar directament Go Agent.
sudo apt install -y go-agent
Ara, inicieu el servidor GoCD i activeu-lo perquè s'iniciï automàticament en el moment de l'arrencada.
sudo systemctl start go-agent
sudo systemctl enable go-agent
L'agent GoCD que s'executa a l'host local s'habilita automàticament quan es detecta.