GoCD est un système puissant de livraison continue et d’automatisation open-source qui excelle dans la modélisation de workflows CD complexes. Il offre un feedback rapide grâce à ses constructions de modélisation, son exécution parallèle et sa gestion des dépendances. Avec GoCD, vous pouvez facilement résoudre les problèmes et suivre chaque changement de la validation au déploiement en temps réel. De plus, GoCD vous permet de comparer et de déployer n’importe quelle version de votre application sans effort. Dans cet article, nous allons vous guider à travers le processus d’installation et de configuration de GoCD sur un serveur Ubuntu 22.04. Commençons!
Prérequis
Avant de plonger dans le processus d’installation et de configuration, assurons-nous que nous avons tous les prérequis nécessaires en place :
- Un serveur fonctionnant sous Ubuntu 22.04 avec un minimum de 2 Go de RAM.
- Un utilisateur non-sudo avec des privilèges root.
- Le pare-feu Uncomplicated Firewall (UFW) activé et fonctionnant.
- Des noms de domaine pleinement qualifiés (FQDN) pointant vers votre serveur. Pour les besoins de ce tutoriel, nous utiliserons
gocd.example.com
comme notre domaine.
Il est également crucial de maintenir votre serveur à jour. Exécutez la commande suivante pour mettre à jour votre système :
sudo apt update && sudo apt upgrade
Maintenant que nous avons nos prérequis prêts, passons à l’installation et à la configuration de GoCD.
Étape 1 – Configurer le pare-feu
Avant d’installer des packages, nous devons configurer le pare-feu pour ouvrir les ports nécessaires. Par défaut, GoCD utilise les ports 8153, 80 (HTTP) et 443 (HTTPS). Ouvrons ces ports dans le pare-feu.
Pour vérifier l’état du pare-feu, exécutez la commande suivante :
sudo ufw status
Vous devriez voir la sortie suivante :
Status: active To Action From -- ------ ---- OpenSSH ALLOW Anywhere OpenSSH (v6) ALLOW Anywhere (v6)
Pour ouvrir les ports requis, exécutez les commandes suivantes :
sudo ufw allow 8153
sudo ufw allow http
sudo ufw allow https
Vérifiez que les ports sont maintenant ouverts en exécutant à nouveau 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)
Avec le pare-feu configuré, nous pouvons passer à l’étape suivante.
Étape 2 – Installer GoCD
Pour installer GoCD, nous devons d’abord importer la clé GPG de GoCD dans le système. Exécutez la commande suivante :
curl https://download.gocd.org/GOCD-GPG-KEY.asc | gpg --dearmor | sudo tee /usr/share/keyrings/gocd.gpg > /dev/null 2>&1
Ensuite, ajoutez le dépôt GoCD au système en exécutant la commande suivante :
echo "deb [signed-by=/usr/share/keyrings/gocd.gpg] https://download.gocd.org /" | sudo tee /etc/apt/sources.list.d/gocd.list
Mettez à jour la liste des dépôts système avec la commande :
sudo apt update
Maintenant, nous pouvons procéder à l’installation de GoCD et de l’environnement d’exécution Java nécessaire (JRE) en exécutant :
sudo apt install -y go-server
Pendant l’installation, la dernière version compatible de JRE requise pour exécuter GoCD sera également installée.
Avant de continuer, nous devons créer un répertoire pour stocker les artefacts. Les artefacts peuvent être stockés sur le même disque que le serveur ou sur un disque dédié ou une unité de stockage de bloc. Pour ce tutoriel, nous les stockerons sur le même disque. Exécutez la commande suivante pour créer le répertoire :
sudo mkdir /opt/artifacts
Assurez-vous que le serveur GoCD est propriétaire du répertoire des artefacts en exécutant :
sudo chown -R go:go /opt/artifacts
Félicitations! Vous avez réussi à installer GoCD sur votre serveur Ubuntu 22.04. Dans la prochaine étape, nous installerons et configurerons PostgreSQL, qui est recommandé pour GoCD dans un environnement de production.
Étape 3 – Installer et configurer PostgreSQL
Par défaut, GoCD utilise la base de données H2, qui ne nécessite aucune configuration supplémentaire. Cependant, pour un environnement de production, il est recommandé d’utiliser PostgreSQL. Ubuntu 22.04 est livré avec une version plus ancienne de PostgreSQL, nous installerons donc PostgreSQL 15 pour ce tutoriel.
Pour installer le dépôt pour PostgreSQL, exécutez la commande suivante :
sudo sh -c 'echo "deb http://apt.postgresql.org/pub/repos/apt $(lsb_release -cs)-pgdg main" > /etc/apt/sources.list.d/pgdg.list'
Ensuite, importez la clé GPG de 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
Mettez à jour la liste des dépôts système :
sudo apt update
Maintenant, nous pouvons installer le serveur PostgreSQL 15 en exécutant :
sudo apt install -y postgresql postgresql-contrib
Vérifiez l’état du service PostgreSQL en exécutant :
sudo systemctl status postgresql
Vous devriez voir la sortie suivante :
? 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
Maintenant, nous devons nous connecter au shell PostgreSQL :
sudo -i -u postgres psql
Dans le shell PostgreSQL, créez une nouvelle base de données pour GoCD :
postgres=# CREATE DATABASE "gocd" ENCODING="UTF8" TEMPLATE="template0";
Créez un nouvel utilisateur de base de données avec un mot de passe fort :
postgres=# CREATE ROLE "gocd_database_user" PASSWORD 'gocd_database_password' NOSUPERUSER NOCREATEDB NOCREATEROLE INHERIT LOGIN;
Accordez à l’utilisateur les privilèges nécessaires pour utiliser la base de données :
postgres=# GRANT ALL PRIVILEGES ON DATABASE "gocd" TO "gocd_database_user";
Donnez à l’utilisateur des privilèges de superutilisateur. Notez que le privilège de superutilisateur n’est requis que la première fois que le serveur GoCD démarre, car il doit créer les extensions pgcrypto et citext initialement. Après le premier démarrage, le privilège de superutilisateur peut être révoqué :
postgres=# ALTER ROLE "gocd_database_user" SUPERUSER;
Quittez le shell PostgreSQL en tapant q
.
La prochaine étape de la configuration de PostgreSQL pour GoCD consiste à stocker les informations d’identification de la base de données dans le répertoire de configuration du serveur GoCD. Créez le fichier db.properties
et ouvrez-le pour le modifier :
sudo nano /etc/go/db.properties
Collez le code suivant dans le fichier :
db.driver=org.postgresql.Driver db.url=jdbc:postgresql://localhost:5432/gocd db.user=gocd_database_user db.password=gocd_database_password
Enregistrez le fichier en appuyant sur Ctrl + X
, puis sur Y
lorsque vous y êtes invité.
Étape 4 – Configurer GoCD
Avant de procéder à la configuration de GoCD, démarrons le serveur GoCD :
sudo systemctl start go-server
Vérifiez l’état du serveur :
sudo systemctl status go-server
Vous devriez voir la sortie suivante :
? 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
Pour accéder au tableau de bord GoCD, visitez l’URL http://:8153/
. Pour une connexion sécurisée, utilisez https://:8154/
. Ignorez les erreurs de certificat, car nous les traiterons plus tard.
Vous devriez maintenant voir le tableau de bord GoCD :
Avant de procéder à la configuration, ajoutons l’URL du site dans le menu Configuration du serveur. Suivez ces étapes :
- Cliquez sur “Admin” dans la barre de navigation supérieure.
- Sélectionnez “Configuration du serveur” dans le menu déroulant.
- Entrez l’URL de votre site dans les champs fournis.
- Cliquez sur le bouton “Enregistrer” pour appliquer les modifications.
Ensuite, configurons la gestion des artefacts. Cliquez sur “Gestion des artefacts” dans le menu de gauche et entrez l’emplacement du répertoire des artefacts que nous avons créé précédemment. Vous pouvez également définir la capacité et activer le nettoyage automatique des artefacts en fonction de vos besoins. N’oubliez pas de cliquer sur “Enregistrer” lorsque vous avez terminé.
Veuillez noter que l’option de suppression automatique ne crée pas de sauvegarde des anciens artefacts. Si vous souhaitez sauvegarder et supprimer manuellement les anciens artefacts, désactivez la suppression automatique en décochant l’option “Autoriser le nettoyage automatique des artefacts”.
Pour configurer les notifications par e-mail, cliquez sur “Admin” dans la barre de navigation supérieure, puis sélectionnez “Configuration du serveur”. Faites défiler jusqu’à la section “Email” et fournissez les paramètres de messagerie nécessaires. Cliquez sur le bouton “Envoyer un email de test” pour vérifier la configuration, puis cliquez sur “Enregistrer” pour terminer.
Si vous devez définir la durée d’expiration du travail, vous pouvez le faire dans la section “Configuration d’expiration du travail”.
Pour appliquer les modifications de configuration, redémarrez le serveur GoCD :
sudo systemctl restart go-server
Félicitations! Vous avez réussi à configurer GoCD. Dans la prochaine étape, nous mettrons en place l’authentification pour GoCD à l’aide d’un fichier de mots de passe.
Étape 5 – Configurer l’authentification de GoCD
Par défaut, GoCD est accessible à tout le monde, mais nous pouvons configurer une authentification basée sur des mots de passe pour renforcer la sécurité. Dans ce tutoriel, nous mettrons en place une authentification basée sur des mots de passe en utilisant les outils Apache.
Tout d’abord, installez les outils Apache pour créer un fichier de mots de passe crypté :
sudo apt install apache2-utils
Créez un fichier de mots de passe en utilisant l’authentification Bcrypt. Le drapeau -c
est utilisé pour créer un nouveau fichier, et le drapeau -B
définit l’authentification Bcrypt. Remplacez goadmin
par le nom d’utilisateur souhaité :
sudo htpasswd -B -c /etc/go/passwd_auth goadmin
Entrez le mot de passe lorsque vous y êtes invité. Vous pouvez ajouter plusieurs utilisateurs en exécutant la même commande sans le drapeau -c
. Faites attention à ne pas écraser le fichier existant lorsque vous ajoutez d’autres utilisateurs.
Ensuite, nous devons configurer l’emplacement du mot de passe dans le backend de GoCD. Suivez ces étapes :
- Cliquez sur “Admin” dans la barre de navigation supérieure.
- Sélectionnez “Sécurité” dans le menu déroulant.
- Cliquez sur “Configuration de l’autorisation”.
- Cliquez sur le bouton “Ajouter” et fournissez un identifiant.
- Sélectionnez “Plugin d’authentification par fichier de mots de passe pour GoCD” comme identifiant du plugin.
- Entrez le chemin du fichier de mots de passe dans le champ approprié.
- Cliquez sur le bouton “Vérifier la connexion” pour vérifier si GoCD peut accéder au fichier à des fins d’authentification.
- Laissez l’option “Autoriser uniquement les utilisateurs connus à se connecter” non cochée pour le premier utilisateur.
- Cliquez sur “Enregistrer” pour terminer.
On vous demandera de rafraîchir GoCD, puis vous serez dirigé vers la page de connexion. Entrez les identifiants que vous avez créés précédemment et cliquez sur “Se connecter” pour continuer.
Pour gérer les rôles des utilisateurs, allez à “Admin” > “Sécurité” > “Gestion des utilisateurs”. Cochez la case “SYSTEM ADMIN” pour les utilisateurs que vous souhaitez marquer comme administrateurs.
Maintenant, revenez à “Admin” > “Sécurité” > “Configuration de l’autorisation”. Cliquez sur le bouton “Modifier” à côté de la liste de fichiers de mots de passe. Cochez l’option “Autoriser uniquement les utilisateurs connus à se connecter”. Désormais, vous devez créer de nouveaux utilisateurs via le fichier de mots de passe, puis les importer à partir de la page du serveur.
Pour créer un nouvel utilisateur, utilisez la commande suivante :
sudo htpasswd -B /etc/go/passwd_auth gouser1
Entrez le mot de passe lorsque vous y êtes invité.
Pour importer le nouvel utilisateur, allez à “Admin” > “Sécurité” > “Gestion des utilisateurs” et cliquez sur le bouton “Importer l’utilisateur”. Entrez le nom d’utilisateur que vous souhaitez rechercher, sélectionnez l’utilisateur et cliquez sur “Importer”.
Répétez le processus pour les utilisateurs supplémentaires. Vous pouvez maintenant vous connecter en utilisant les nouveaux utilisateurs créés.
Super! Nous avons réussi à mettre en place l’authentification pour GoCD. Dans l’étape suivante, nous installerons et configurerons Nginx.
Étape 6 – Installer Nginx
Pour installer la dernière version de Nginx, nous devons télécharger le dépôt officiel de Nginx. Suivez ces étapes :
Importez la clé de signature de Nginx :
curl https://nginx.org/keys/nginx_signing.key | gpg --dearmor | sudo tee /usr/share/keyrings/nginx-archive-keyring.gpg >/dev/null
Ajoutez le dépôt pour la version stable de Nginx :
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
Mettez à jour les dépôts système :
sudo apt update
Installez Nginx :
sudo apt install nginx
Vérifiez l’installation en exécutant :
nginx -v
Vous devriez voir le numéro de version affiché :
nginx version: nginx/1.22.1
Démarrez le serveur Nginx :
sudo systemctl start nginx
Félicitations! Nginx est maintenant installé et fonctionne sur votre serveur. Dans l’étape suivante, nous installerons un certificat SSL pour activer la communication sécurisée.
Étape 7 – Installer SSL
Pour générer un certificat SSL, nous utiliserons Certbot. Dans ce tutoriel, nous installerons Certbot en utilisant Snapd. Ubuntu 22.04 est livré avec Snapd préinstallé, nous l’utiliserons donc pour installer Certbot.
Assurez-vous que votre version de Snapd est à jour en exécutant les commandes suivantes :
sudo snap install core sudo snap refresh core
Installez Certbot :
sudo snap install --classic certbot
Créez un lien symbolique vers le répertoire /usr/bin
pour s’assurer que la commande Certbot peut être exécutée :
sudo ln -s /snap/bin/certbot /usr/bin/certbot
Générez un certificat SSL en exécutant la commande suivante :
sudo certbot certonly --nginx --agree-tos --no-eff -email --staple-ocsp --preferred-challenges http -m test@example.com -d gocd.example.com
Remplacez gocd.example.com
par votre domaine. Le certificat sera téléchargé dans le répertoire /etc/letsencrypt/live/gocd.example.com
de votre serveur.
Ensuite, générez un certificat de groupe Diffie-Hellman :
sudo openssl dhparam-dsaparam -out /etc/ssl/certs/dhparam.pem 4096
Pour vérifier si le processus de renouvellement SSL fonctionne correctement, effectuez une simulation en exécutant la commande suivante :
sudo certbot renew --dry-run
Si vous ne voyez pas d’erreurs, votre certificat SSL se renouvellera automatiquement si nécessaire.
Félicitations! Vous avez réussi à installer un certificat SSL pour votre serveur GoCD. Dans l’étape suivante, nous configurerons Nginx pour utiliser le certificat SSL.
Étape 8 – Configurer Nginx
Pour configurer Nginx, nous devons apporter quelques modifications au fichier de configuration de Nginx et créer un nouveau fichier de configuration pour GoCD.
Ouvrez le fichier de configuration de Nginx pour le modifier :
sudo nano /etc/nginx/nginx.conf
Ajoutez la ligne suivante avant la ligne include /etc/nginx/conf.d/*.conf;
:
server_names_hash_bucket_size 64;
Enregistrez le fichier en appuyant sur Ctrl + X
, puis sur Y
lorsque vous y êtes invité.
Créez un nouveau fichier de configuration pour GoCD :
sudo nano /etc/nginx/conf.d/gocd.conf
Collez le code suivant dans le fichier :
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 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 the default size of 1MB, ensure that you set this value to a larger one. # Setting it 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 intend 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 from 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 it to 0 will disable the limit) # proxy_max_temp_file_size 2048m; } }
Enregistrez le fichier en appuyant sur Ctrl + X
, puis sur Y
lorsque vous y êtes invité.
Pour vérifier la syntaxe du fichier de configuration de Nginx, exécutez la commande suivante :
sudo nginx -t
Si la syntaxe est correcte, vous verrez la sortie suivante :
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok nginx: configuration file /etc/nginx/nginx.conf test is successful
Redémarrez le service Nginx pour appliquer les modifications :
sudo systemctl restart nginx
Félicitations! Vous avez réussi à configurer Nginx pour fonctionner avec GoCD sur SSL. Vous pouvez maintenant accéder au tableau de bord GoCD de manière sécurisée en utilisant l’URL https://gocd.example.com
.
Étape 9 – Installer l’agent GoCD
Les agents GoCD sont responsables de l’exécution des tâches et des jobs assignés par le serveur GoCD. Pour exécuter un pipeline, au moins un agent doit être configuré. Dans cette étape, nous installerons l’agent GoCD sur le même serveur que le serveur GoCD.
Comme nous avons déjà importé le dépôt GoCD, nous pouvons installer l’agent GoCD directement :
sudo apt install go-agent
Démarrez le service de l’agent GoCD :
sudo systemctl start go-agent
Maintenant, allez à l’onglet “Agents” sur votre tableau de bord GoCD, et vous devriez voir l’agent listé et activé automatiquement.
Si vous avez des questions ou besoin d’une aide supplémentaire, n’hésitez pas à nous contacter dans les commentaires ci-dessous. Shape.host est un fournisseur de services de Cloud VPS de premier plan, offrant des solutions d’hébergement fiables et évolutives. Visitez Shape.host pour en savoir plus sur nos offres de Cloud VPS et comment nous pouvons vous aider à atteindre vos objectifs d’hébergement.