Comment installer et configurer GoCD sur Ubuntu 16.04

introduction

GoCD est une puissante plate-forme d’intégration et de distribution continue conçue pour automatiser les processus de test et de publication. Avec de nombreuses fonctionnalités avancées telles que la possibilité de comparer des versions, de visualiser des workflows complexes et d’automatiser le suivi des versions, Google GoCD est un outil flexible qui permet aux équipes de fournir des logiciels bien testés aux environnements de production.

Dans ce guide, nous montrerons comment configurer un serveur GoCD sur Ubuntu 16.04. Nous allons installer le serveur et un agent pour effectuer le travail CI / CD à l’aide des packages fournis par le projet. Ensuite, nous allons configurer l’authentification et modifier quelques options de base pour configurer notre serveur.

Conditions préalables

Selon les recommandations de le projet GoCD, vous aurez besoin d’un serveur Ubuntu 16.04 avec * au moins 2 Go de RAM et 2 CPU. Noyaux * pour compléter ce guide. De plus, dans le but de gérer des artefacts de construction sans altérer les données, votre serveur aura besoin d’une partition ou d’un disque dédié. pour servir d’emplacement de stockage des artefacts. Dans ce guide, nous utiliserons + / mnt / artifact-storage + comme point de montage pour le stockage des artefacts:

Une fois que votre serveur est configuré avec un stockage supplémentaire monté sur + / mnt / artifact-storage +, suivez notre https://www.digitalocean.com/community/tutorials/initial-server-setup-with-ubuntu-16-04 [ Guide de configuration initiale du serveur Ubuntu 16.04] pour configurer un utilisateur non root avec les privilèges + sudo + et activer un pare-feu de base. Une fois ces étapes terminées, continuez avec ce guide.

Installation du serveur GoCD et de l’agent

Nous allons commencer par télécharger et installer les packages de serveur et d’agent à partir d’un référentiel dédié fourni par le projet GoCD.

Tout d’abord, nous ajoutons la nouvelle définition de référentiel au répertoire de configuration des sources APT en tapant:

echo "deb https://download.gocd.org /" | sudo tee /etc/apt/sources.list.d/gocd.list

Nous devons également ajouter la clé GPG GoCD à APT afin que les signatures des packages GoCD puissent être vérifiées. Vous pouvez télécharger la clé et l’ajouter à votre système en tapant:

curl https://download.gocd.org/GOCD-GPG-KEY.asc | sudo apt-key add -

Nous pouvons maintenant mettre à jour l’index de paquetage local pour extraire une liste de nouveaux paquetages et installer le logiciel. GoCD nécessite Java 8 pour s’exécuter, nous allons donc installer le package + default-jre + avec le serveur CI et l’agent. Nous allons également installer le paquet + apache2-utils +, que nous utiliserons pour générer un fichier d’authentification:

sudo apt-get update
sudo apt-get install default-jre go-server go-agent apache2-utils

Les dépendances et le logiciel d’intégration continue seront téléchargés et installés sur le serveur.

Préparer le GoCD pour la première utilisation

Avant de démarrer le serveur GoCD, nous allons effectuer quelques tâches sur la ligne de commande pour nous préparer.

Tout d’abord, nous devons nous assurer que le processus GoCD aura accès au point de montage des artefacts afin qu’il puisse y stocker des actifs. Le serveur CI fonctionnera en tant qu’utilisateur et groupe + go +, afin que nous puissions attribuer la propriété du point de montage + / mnt / artifact-storage + en conséquence:

sudo chown -R go:go /mnt/artifact-storage

Ensuite, nous allons créer et renseigner un fichier de mots de passe pour les informations d’authentification. Https://github.com/gocd/gocd-gile-filebased-authentication-plugin[bile-based authentication plugin de GoCD] utilise le format d’authentification d’utilisateur créé par l’utilitaire + htpasswd +.

L’option + -B + de la commande ci-dessous sélectionne l’algorithme de chiffrement + bcrypt +. L’option + -c + indique + htpasswd + de créer un nouveau fichier d’authentification sur le chemin spécifié. La commande se termine par le nom d’utilisateur pour lequel nous voulons créer un mot de passe. Ce nom d’utilisateur est entièrement distinct des utilisateurs du système d’exploitation. Vous pouvez donc utiliser ce que vous voulez pour cette valeur:

sudo htpasswd -B -c /etc/go/authentication

Vous serez invité à entrer et à confirmer un mot de passe pour le nouvel utilisateur. Le nom d’utilisateur et une version chiffrée du mot de passe seront écrits dans le fichier:

OutputNew password:
Re-type new password:
Adding password for user sammy

Une fois que vous avez un fichier d’authentification, nous pouvons démarrer les processus du serveur et de l’agent GoCD. Cela peut prendre un certain temps pour terminer:

sudo systemctl start go-server go-agent

Même après la fin de la commande, le processus ne sera pas complètement opérationnel. Tout d’abord, vérifiez que les services ont été démarrés avec succès:

sudo systemctl status go-*

Si votre sortie ressemble à ceci, les deux processus ont été initialisés par systemd:

Output● go-agent.service - LSB: Go Agent
  Loaded: loaded (/etc/init.d/go-agent; bad; vendor preset: enabled)
  Active:  since Thu 2017-07-27 19:39:18 UTC; 1min 36s ago
    Docs: man:systemd-sysv-generator(8)
 Process: 8911 ExecStart=/etc/init.d/go-agent start (code=exited, status=0/SUCCESS)

. . .
Jul 27 19:39:18 go5 systemd[1]: Started LSB: Go Agent.

● go-server.service - LSB: Go Server
  Loaded: loaded (/etc/init.d/go-server; bad; vendor preset: enabled)
  Active:  since Thu 2017-07-27 19:39:33 UTC; 1min 21s ago
    Docs: man:systemd-sysv-generator(8)
 Process: 8867 ExecStop=/etc/init.d/go-server stop (code=exited, status=0/SUCCESS)
 Process: 8907 ExecStart=/etc/init.d/go-server start (code=exited, status=0/SUCCESS)

. . .
Jul 27 19:39:33 go5 systemd[1]: Started LSB: Go Server.

Ensuite, nous devrions attendre que le service soit lié aux ports 8153 et 8154. GoCD écoute sur le premier port le trafic HTTP et le second le trafic protégé par HTTPS. Bien que les processus soient terminés, ils n’ont peut-être pas encore commencé à accepter le trafic Web.

Gardez un œil sur les ports en cours d’écoute en tapant:

sudo watch netstat -plnt

Cela vérifiera les ports d’écoute TCP et mettra à jour l’écran toutes les 2 secondes. Lorsque GoCD commence à écouter les ports 8153 et 8154, l’écran doit ressembler à ceci:

OutputEvery 2.0s: netstat -plnt                                                    Thu Jul 27 20:16:20 2017

Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      1736/sshd
tcp6       0      0 :::22                   :::*                    LISTEN      1736/sshd
tcp6       0      0 :::                 :::*                    LISTEN      8942/java
tcp6       0      0 :::                 :::*                    LISTEN      8942/java

Une fois que ces ports d’écoute sont affichés, appuyez sur * CTRL-C * pour quitter le moniteur de processus.

Maintenant que le logiciel est complètement opérationnel, nous pouvons ouvrir le port HTTPS de GoCD (port 8154) dans le pare-feu UFW. Nous n’avons pas besoin d’ouvrir le port HTTP car nous voulons que toutes les connexions soient sécurisées:

sudo ufw allow 8154

Notre serveur est maintenant opérationnel. Nous allons nous connecter à l’interface Web pour continuer notre configuration.

Configuration de l’authentification par mot de passe

Avec le composant serveur GoCD initialisé et à l’écoute des connexions, et notre pare-feu permettant des connexions, nous pouvons nous connecter au service dans un navigateur Web.

Dans votre navigateur, spécifiez le protocole + https: // + suivi du nom de domaine ou de l’adresse IP de votre serveur et se terminant par la spécification de port +: 8154 +:

https://:8154

Votre navigateur affichera probablement un avertissement indiquant que le certificat SSL du service n’a pas été signé par une autorité de certification de confiance:

image: https: //assets.digitalocean.com/articles/gocd_install_1604/browser_ssl_warning.png [avertissement SSL du navigateur]

Puisque le GoCD signe lui-même ses certificats, il s’agit du comportement attendu. Cliquez sur * ADVANCED * ou sur une option similaire disponible dans votre navigateur, puis choisissez de continuer avec la demande.

Lorsque vous vous connectez à GoCD pour la première fois, vous accédez à l’écran de définition du pipeline. Plutôt que de définir immédiatement un pipeline, nous devrions prioriser l’activation de l’authentification à l’aide du fichier de mot de passe créé précédemment avec + htpasswd +. Cliquez sur * ADMIN * dans le menu de navigation supérieur, puis dans le sous-menu * Sécurité *, sélectionnez * Configuration de l’autorisation *:

image: https: //assets.digitalocean.com/articles/gocd_install_1604/authorization_config_item.png [Menu de configuration de l’autorisation]

Sur la page qui suit, cliquez sur le bouton * Ajouter * dans le coin supérieur droit. Un écran apparaît dans lequel vous pouvez renseigner les détails de votre fournisseur d’authentification.

Tout d’abord, entrez un nom arbitraire pour la nouvelle méthode d’autorisation dans le champ * Id *. Laissez la sélection * Plugin Id * sur «Plugin d’authentification de fichier de mot de passe pour GoCD». Enfin, dans la zone * Password file path *, tapez + / etc / go / authentication +, le fichier que nous avons créé avec + htpasswd +. Lorsque vous avez terminé, cliquez sur * Vérifier la connexion * pour vous assurer que GoCD peut accéder au fichier correctement:

image: https: //assets.digitalocean.com/articles/gocd_install_1604/enter_auth_and_check.png [Entrez l’authentification et vérifiez la connexion]

Si GoCD affiche un message «Connexion OK», cliquez sur * Enregistrer * pour mettre en œuvre la nouvelle authentification.

Vous serez invité à vous authentifier à l’aide du nouveau schéma. Cela peut être présenté comme une boîte de connexion de navigateur standard la première fois ou vous pouvez être redirigé vers la page de connexion GoCD. Connectez-vous en utilisant le nom d’utilisateur et le mot de passe que vous avez configurés:

image: https: //assets.digitalocean.com/articles/gocd_install_1604/gocd_login_page.png [page de connexion GoCD]

Votre installation GoCD est maintenant protégée par un mot de passe pour empêcher tout accès non autorisé.

Définition de l’URL du site et de l’emplacement des artefacts

Maintenant que l’interface Web est correctement sécurisée, nous pouvons terminer la configuration de notre serveur CI via l’interface utilisateur Web.

Une fois connecté à l’interface Web, cliquez sur * ADMIN * dans le menu supérieur et sélectionnez * Configuration du serveur * dans le menu déroulant:

image: https: //assets.digitalocean.com/articles/gocd_install_1604/server_config_item.png [Elément de menu de configuration du serveur GoCD]

Vous serez dirigé vers la page de configuration principale où nous pouvons ajuster certains paramètres.

Le premier élément que nous devrions examiner est l’URL * du site * dans la section * Gestion du serveur * de la page. GoCD fournit deux paramètres qui déterminent l’URL du serveur CI: l’URL du site et l’URL du site sécurisé. L’URL du site est l’URL par défaut du site utilisée dans la plupart des cas. L’URL «Site sécurisé» est utilisée lorsque «l’URL du site» standard est configuré pour utiliser HTTP et que GoCD doit transmettre des données sensibles. Si "URL du site" utilise une adresse HTTPS, toutes les connexions sont cryptées et il n’est pas nécessaire de définir "URL du site sécurisé".

Puisque nous avons seulement autorisé l’accès au port HTTPS via le pare-feu, nous allons renseigner * URL du site * avec le spécificateur de protocole + https: // +, suivi du domaine ou de l’adresse IP de notre serveur, suivi de `+: 8154 + `. Nous laisserons l’URL du site sécurisé vide car notre URL normale est déjà sécurisée:

image: https: //assets.digitalocean.com/articles/gocd_install_1604/set_site_url.png [URL du site défini par le GoCD]

Ensuite, faites défiler jusqu’à la section * Pipeline Management * de la page. Définissez * Emplacement du répertoire des artefacts * sur le point de montage + / mountain / artifact-storage créé précédemment. Vous pouvez éventuellement ajuster la stratégie de suppression d’artefacts si vous souhaitez que GoCD gère automatiquement la conservation des artefacts. Laissez «Jamais» pour gérer les artefacts manuellement:

image: https: //assets.digitalocean.com/articles/gocd_install_1604/set_artifact_location.png [Le GoCD a défini l’emplacement de stockage des artefacts]

Lorsque vous avez terminé, cliquez sur le bouton * ENREGISTRER * au bas de la page pour appliquer vos modifications.

Vous remarquerez peut-être un avertissement dans la barre de menus supérieure:

image: https: //assets.digitalocean.com/articles/gocd_install_1604/warning.png [Indication d’avertissement GoCD]

Cliquez sur l’indicateur d’avertissement pour afficher le message d’avertissement complet nous indiquant que GoCD n’utilisera pas l’emplacement + / mnt / artifact-storage + tant qu’il ne sera pas redémarré.

image: https: //assets.digitalocean.com/articles/gocd_install_1604/warning_detail.png [Détail de l’avertissement GoCD]

Cliquez sur le * X * pour quitter le message d’avertissement.

Avant de redémarrer le serveur, vérifions que notre agent a bien été enregistré auprès du serveur. Cliquez sur l’élément * AGENTS * dans le menu du haut. Vous serez amené à la liste des agents:

image: https: //assets.digitalocean.com/articles/gocd_install_1604/available_agents.png [Liste des agents disponibles dans GoCD]

Le processus d’agent que nous avons démarré s’est enregistré avec succès sur le serveur et son statut est défini sur «Inactif». Cela signifie que l’agent est activé, mais aucun travail n’est attribué, ce à quoi nous nous attendions.

Maintenant que nous sommes certains de la présence de notre agent, nous pouvons redémarrer le processus du serveur GoCD pour terminer le changement de l’emplacement de l’artefact. De retour sur la ligne de commande, redémarrez le service en tapant:

sudo systemctl restart go-server

Une fois que le service a redémarré et reprend l’écoute des connexions sur le port 8154, vous pourrez vous reconnecter à l’interface utilisateur Web.

Conclusion

Dans ce guide, nous avons installé et configuré un serveur GoCD et un agent fonctionnant sous Ubuntu 16.04. Nous avons configuré un espace de stockage d’artefacts dédié sur une partition distincte pour gérer les actifs de construction générés et configuré l’authentification pour sécuriser l’interface Web.

Une fois que GoCD est opérationnel, une bonne étape consiste à sécuriser votre installation avec un certificat SSL de confiance. Suivez notre guide sur how to configure GoCD avec Let’s Encrypt SSL certificats pour apprendre à configurer cela.