GoCD est un système open source de livraison et d'automatisation continue. Il vous permet de modéliser des workflows complexes en utilisant son exécution parallèle et séquentielle. Sa carte de flux de valeur vous permet de visualiser facilement un flux de travail complexe avec facilité. GoCD vous permet de comparer facilement deux versions et de déployer n'importe quelle version de l'application que vous souhaitez. L'écosystème GoCD se compose d'un serveur GoCD et d'un agent GoCD. Le GoCD est responsable de tout contrôler, comme l'exécution de l'interface utilisateur Web et la gestion et la fourniture de tâches à l'agent. Les agents Go sont responsables de l'exécution des travaux et des déploiements.
Conditions préalables
- Une instance de serveur Vultr Ubuntu 16.04 avec au moins 2 Go de RAM.
- Un utilisateur sudo .
- Un nom de domaine pointé vers le serveur.
Pour ce didacticiel, nous utiliserons 192.168.1.1
comme adresse IP publique et gocd.example.com
comme nom de domaine pointé vers l'instance Vultr. Veuillez vous assurer de remplacer toutes les occurrences de l'exemple de nom de domaine et de l'adresse IP par celui-ci.
Mettez à jour votre système de base à l'aide du guide Comment mettre à jour Ubuntu 16.04 . Une fois votre système mis à jour, installez Java.
Installer Java
GoCD nécessite Java version 8 et prend en charge Oracle Java et OpenJDK. Ajoutez le référentiel Ubuntu pour Oracle Java 8.
sudo add-apt-repository --yes ppa:webupd8team/java
sudo apt update
Installez Oracle Java.
sudo apt -y install oracle-java8-installer
Vérifiez la version.
java -version
Vous verrez la sortie suivante.
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)
Définissez le chemin par défaut pour Java en installant le package suivant.
sudo apt -y install oracle-java8-set-default
Vous pouvez vérifier si JAVA_HOME
est défini en exécutant.
echo $JAVA_HOME
Tu verras.
user@vultr:~$ echo $JAVA_HOME
/usr/lib/jvm/java-8-oracle
Si vous ne voyez aucune sortie, vous devrez vous déconnecter du shell actuel et vous reconnecter.
Installer GoCD
Installez le référentiel officiel de GoCD dans le système.
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
Installez le serveur GoCD dans votre système.
sudo apt install -y go-server
Démarrez GoCD et activez-le pour démarrer automatiquement au démarrage.
sudo systemctl start go-server
sudo systemctl enable go-server
Avant d'accéder au tableau de bord GoCD, créons un nouveau répertoire pour stocker les artefacts. Les artefacts peuvent être stockés sur le même disque sur lequel le système d'exploitation et les applications sont installés. Vous pouvez également utiliser un disque dédié ou un lecteur de stockage en bloc pour stocker les artefacts.
Si vous souhaitez utiliser le même disque pour stocker les artefacts, créez simplement un nouveau répertoire et fournissez la propriété à l'utilisateur GoCD.
sudo mkdir /opt/artifacts
sudo chown -R go:go /opt/artifacts
Le logiciel GoCD vous recommande d'utiliser une partition ou un lecteur supplémentaire pour stocker les artefacts. Dans une plateforme d'intégration et de livraison continue, les artefacts sont générés très souvent. L'espace disque diminue avec le temps lorsque de nouveaux artefacts sont générés en continu. À un certain stade, votre système manquera d'espace disque libre et les services exécutés sur votre système échoueront. Pour résoudre ce problème, vous pouvez attacher un nouveau lecteur de stockage en bloc Vultr pour stocker les artefacts. Si vous souhaitez toujours utiliser le stockage d'artefacts sur le même lecteur, passez à la section "Configurer GoCD".
Déployez un nouveau lecteur de stockage en mode bloc et connectez-le à votre instance de serveur GoCD. Créez maintenant une nouvelle partition sur le périphérique de stockage de blocs.
sudo parted -s /dev/vdb mklabel gpt
sudo parted -s /dev/vdb unit mib mkpart primary 0% 100%
Créez le système de fichiers sur le nouveau disque.
sudo mkfs.ext4 /dev/vdb1
Montez le lecteur de stockage en mode bloc.
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
Maintenant, exécutez df
et vous verrez le nouveau lecteur de stockage en bloc monté /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
Attribuez la propriété de l'annuaire à l'utilisateur du GoCD.
sudo chown -R go:go /mnt/artifacts
Vous pouvez maintenant accéder au tableau de bord GoCD sur http://192.168.1.1:8153
. Pour accéder au tableau de bord GoCD sur une connexion sécurisée, accédez à https://192.168.1.1:8154
. Vous obtiendrez une erreur indiquant que les certificats ne sont pas valides. Vous pouvez ignorer l'erreur en toute sécurité car les certificats sont auto-signés. Pour des raisons de sécurité, vous devez toujours utiliser le tableau de bord sur une connexion sécurisée.
Avant de configurer un nouveau pipeline, accédez à " Admin >> Server Configuration
" dans la barre de navigation supérieure.
Saisissez l'URL de votre site non sécurisé dans le Site URL
champ " " et le site sécurisé dans le Secure Site URL
champ " ".
Ensuite, fournissez les détails de votre serveur SMTP pour envoyer des notifications par e-mail à partir du GoCD.
Enfin, indiquez le chemin d'accès à l'emplacement où vous souhaitez stocker les artefacts. Si vous avez choisi de stocker les artefacts sur le même disque que le système d'exploitation, entrez /opt/artifacts
; si vous avez choisi de connecter un lecteur de stockage en mode bloc, vous pouvez entrer /mnt/artifacts
.
Vous pouvez également configurer GoCD pour supprimer automatiquement les anciens artefacts. Configurez l'option suivante en fonction de la taille de votre disque. Cependant, l'option de suppression automatique ne prend pas de sauvegarde de vos anciens artefacts. Pour effectuer manuellement une sauvegarde, puis supprimer les anciens artefacts, désactivez la suppression automatique en choisissant l' Never
option " " pour l' Auto delete old artifacts
option " ".
Vous devrez redémarrer le serveur GoCD pour que les nouvelles modifications soient appliquées.
sudo systemctl restart go-server
Authentification de configuration
Par défaut, le tableau de bord GoCD n'est pas configuré pour utiliser tout type d'authentification, mais il prend en charge l'authentification à l'aide d'un fichier de mots de passe et LDAP. Dans ce didacticiel, nous allons configurer l'authentification par mot de passe.
Remarque : La configuration de l'authentification est une étape facultative, mais elle est fortement recommandée pour les serveurs publics, tels que Vultr.
Installez les outils Apache afin que nous puissions utiliser la htpasswd
commande pour créer un fichier de mot de passe chiffré.
sudo apt -y install apache2-utils
Créez un fichier de mots de passe avec la htpasswd
commande à l'aide du chiffrement Bcrypt.
sudo htpasswd -B -c /etc/go/passwd_auth goadmin
Indiquez deux fois le mot de passe de l'utilisateur. Vous verrez la sortie suivante.
[user@vultr ~]$ sudo htpasswd -B -c /etc/go/passwd_auth goadmin
New password:
Re-type new password:
Adding password for user goadmin
Vous pouvez ajouter autant d'utilisateurs que vous le souhaitez en utilisant la même commande ci-dessus, mais supprimez l' -c
option. L' -c
option remplacera le fichier existant, remplaçant les anciens utilisateurs par le nouvel utilisateur.
sudo htpasswd -B /etc/go/passwd_auth gouser1
Maintenant que nous avons créé le fichier de mots de passe, accédez à nouveau au tableau de bord GoCD. Accédez à " Admin >> Security >> Authorization Configurations
" dans la barre de navigation supérieure. Cliquez sur le Add
bouton et fournissez n'importe quel ID. Choisissez " Password File Authentication Plugin for GoCD
" pour l'ID du plugin et dirigez le chemin vers le fichier de mot de passe. Cliquez maintenant sur le Check Connection
bouton "" pour vérifier que le GoCD peut utiliser le fichier de mot de passe pour l'authentification.
Enfin, enregistrez la méthode d'authentification. Rechargez le tableau de bord et il vous déconnectera automatiquement. Vous verrez maintenant un écran de connexion. Connectez-vous à l'aide des informations d'identification créées précédemment.
Vous devrez promouvoir l'utilisateur administrateur manuellement, sinon tous les utilisateurs auront des privilèges d'administrateur. Accédez à " Admin >> User Summary
" dans la barre de navigation supérieure.
Sélectionnez maintenant l'administrateur que vous avez créé et cliquez sur le Roles
menu déroulant " ". Faites passer l'utilisateur au seul administrateur en cochant la Go System Administrator
case " ".
Pour ajouter les utilisateurs dans GoCD créés dans le fichier de mot de passe, cliquez sur le ADD
bouton "" et recherchez l'utilisateur pour les ajouter. Les utilisateurs sont également automatiquement ajoutés au tableau de bord GoCD lors de leur première connexion. De toute évidence, pour que les utilisateurs se connectent, ils doivent être ajoutés au fichier de mots de passe que nous avons créé précédemment.
Sécuriser GoCD avec Let's Encrypt SSL
Par défaut, GoCD écoute les ports 8153
et 8154
les connexions sécurisées. Bien que le port 8154
fournisse une connexion sécurisée à l'application, il affiche également des erreurs de navigateur car il utilise un certificat auto-signé. Dans cette section du tutoriel, nous allons installer et sécuriser Nginx avec un certificat SSL gratuit Let's Encrypt. Le serveur Web Nginx fonctionnera comme un proxy inverse pour transmettre les demandes entrantes au point de HTTP
terminaison du GoCD .
Installez Nginx.
sudo apt -y install nginx
Démarrez Nginx et activez-le pour démarrer automatiquement au démarrage.
sudo systemctl start nginx
sudo systemctl enable nginx
Ajoutez le référentiel Certbot.
sudo add-apt-repository --yes ppa:certbot/certbot
sudo apt-get update
Installez Certbot, qui est l'application cliente de Let's Encrypt CA.
sudo apt -y install certbot
Remarque : Pour obtenir des certificats de Let's Encrypt CA, le domaine pour lequel les certificats doivent être générés doit être dirigé vers le serveur. Sinon, apportez les modifications nécessaires aux enregistrements DNS du domaine et attendez que le DNS se propage avant de refaire la demande de certificat. Certbot vérifie l'autorité de domaine avant de fournir les certificats.
Générez les certificats SSL.
sudo certbot certonly --webroot -w /var/www/html -d gocd.example.com
Les certificats générés sont susceptibles d'être stockés dans /etc/letsencrypt/live/gocd.example.com/
. Le certificat SSL sera stocké sous fullchain.pem
et la clé privée sera stockée sous privkey.pem
.
Les certificats Let's Encrypt expirent dans 90 jours, il est donc recommandé de configurer le renouvellement automatique des certificats à l'aide de tâches cron.
Ouvrez le fichier de tâche cron.
sudo crontab -e
Ajoutez la ligne suivante à la fin du fichier.
30 5 * * * /usr/bin/certbot renew --quiet
La tâche cron ci-dessus s'exécutera tous les jours à 5h30. Si le certificat doit expirer, il sera automatiquement renouvelé.
Créez un nouveau fichier de configuration pour l'interface Web du GoCD.
sudo nano /etc/nginx/sites-available/gocd
Remplissez le fichier.
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;
}
}
Activez le fichier de configuration.
sudo ln -s /etc/nginx/sites-available/gocd /etc/nginx/sites-enabled/gocd
Redémarrez le serveur Web Nginx pour implémenter le changement de configuration.
sudo systemctl restart nginx
Vous pouvez maintenant accéder au tableau de bord GoCD à l'adresse https://gocd.example.com
. Connectez-vous à votre tableau de bord à l'aide des informations d'identification de l'administrateur et accédez à " Admin >> Server Configuration
" dans la barre de navigation supérieure.
Réglez " Site URL
" et " Secure Site URL
" sur https://gocd.example.com
.
Installation de GoCD Agent
Dans l'environnement d'intégration continue du GoCD, les agents du GoCD sont les travailleurs qui sont responsables de l'exécution de toutes les tâches. Lorsqu'une modification de la source est détectée, le pipeline est déclenché et les travaux sont attribués aux travailleurs disponibles pour exécution. L'agent exécute ensuite la tâche et signale l'état final après l'exécution.
Pour exécuter un pipeline, au moins un agent doit être configuré. Procédez à l'installation de l'agent GoCD sur le serveur GoCD.
Comme nous avons déjà importé le référentiel GoCD sur le serveur, nous pouvons installer directement Go Agent.
sudo apt install -y go-agent
Maintenant, démarrez le serveur GoCD et activez-le pour démarrer automatiquement au démarrage.
sudo systemctl start go-agent
sudo systemctl enable go-agent
L'agent GoCD exécuté sur l'hôte local est automatiquement activé lorsqu'il est détecté.