Comment utiliser le SSH pendant le processus de création de builds

Il est parfois nécessaire de connecter des machines différentes au cours du processus de build d'un projet. Par exemple, pour déclencher un script de déploiement sur une machine distante via SSH.

Nous allons voir comment cela est réalisé.

Pourquoi utiliser le SSH ?

Le Secure Shell (SSH) est largement utilisé à diverses fins en raison de sa sécurité, de sa polyvalence et de son efficacité. Voici plusieurs raisons d'utiliser le SSH :

  • Communication sécurisée. Le SSH fournit une communication cryptée sur un réseau non sécurisé (comme l’internet), afin d’assurer la confidentialité et l'intégrité des données pendant leur transmission.
  • Authentification. Le SSH utilise la cryptographie à clé publique pour l'authentification des utilisateurs et offre ainsi une alternative plus sécurisée à l'authentification par mot de passe. Il permet de se prémunir des accès non autorisés.
  • Accès à distance. Le SSH permet aux utilisateurs et utilisatrices d'accéder en toute sécurité à un serveur ou à une machine distante, en fournissant une interface de ligne de commande ou en assurant le transfert de fichiers (par exemple, avec des outils comme SCP ou SFTP).
  • Tunneling. Le SSH peut créer des tunnels sécurisés pour transférer des connexions réseau arbitraires. Il propose ainsi un moyen sécurisé d'accéder à des services tels que des bases de données ou des serveurs web sur des réseaux distants.
  • Gestion des clés. Le SSH prend en charge l'utilisation de clés SSH, qui simplifient et renforcent la sécurité de l'authentification. Il permet également de gérer les accès à l’aide de paires de clés.

Comment télécharger une clé SSH dans TeamCity

Allez dans la section Edit configuration | Build Steps pour un aperçu rapide des étapes de build.

tutorials-img

Imaginons que vous deviez ajouter une étape de build dans la ligne de commande pour exécuter un déploiement. Pour ce faire, TeamCity se connecte à un serveur distant via SSH et exécute deux commandes sur ce serveur, par exemple pour télécharger un fichier depuis Amazon S3 et l'exécuter. Pour que la connexion SSH fonctionne, vous devez spécifier une clé SSH.

tutorials-img

La question est ici : comment la clé SSH obtient-elle votre agent de build s'il n'est pas intégré au préalable dans votre image d'agent ?

Notre objectif est d'éliminer l'étape de build de la ligne de commande. To do that, click on the Runner type drop-down menu. Ici, vous remarquerez deux options : SSH Exec et SSH Upload.

SSH Exec est pratique lorsque vous devez exécuter quelque chose sur une machine distante. SSH Upload vous aide à charger de façon sûre des fichiers sur un serveur.

Nous allons choisir l'option SSH Exec et ajouter la cible et les commandes pour l'exécuteur.

tutorials-img

Dans la section Authentication method, vous devez préciser l'origine de votre clé SSH.

tutorials-img

Uploaded key : la clé est chargée sur le serveur TeamCity. Le serveur la chiffre, l'envoie à l'agent de build pour la création de build, puis la supprime une fois la build terminée.

Default private key et Custom private key : choisissez cette option si une clé privée par défaut est pré-installée à des emplacements spécifiques sur votre agent de build.

Vous pouvez également choisir une combinaison nom d'utilisateur/mot de passe, voir un agent SSH en cours d'exécution. En savoir plus sur SSH Exec dans notre documentation.

Dans ce tutoriel, nous allons choisir l'option Uploaded key. Nous allons définir le nom d'utilisateur sur teamcity-deploy et nous n'allons pas définir la phrase secrète. Nous allons poursuivre et charger la clé SSH.

tutorials-img

Pour charger la clé SSH, allons dans la section Buildpipelines project | SSH Keys. Après, nous allons sélectionner la clé privée de notre serveur. Cliquez sur Upload SSH Key et sélectionnez un fichier depuis votre ordinateur.

tutorials-img

Ensuite, revenez dans la section Build steps | SSH Exec et sélectionnez la clé privée que vous venez de charger. Enfin, appuyez sur Save et exécutez le build.

tutorials-img

Une fois l'exécution du build terminée, ouvrez le journal Build Log pour voir la sortie de l'étape de build SSH Exec. Ici, nous pouvons constater que TeamCity a exécuté la commande que vous avez entrée dans la configuration d'étape de build. Cela affiche également le résultat de la commande echo ‘running deploy.sh...’.

tutorials-img

Vous connaissez maintenant l'essentiel !