Intégrer PowerShell dans Jenkins pour une automatisation transparente

Si vous gérez des serveurs Windows depuis un certain temps, il est fort probable que vous possédiez de nombreux scripts PowerShell pour effectuer ces tâches banales mais nécessaires que vous exécutez régulièrement, comme la réinitialisation des mots de passe, la collecte de données de journal ou l’archivage des fichiers de sauvegarde. Saviez-vous que PowerShell dans Jenkins est possible ?

Vous pouvez avoir des scripts que vous exécutez régulièrement, voire même avoir configuré une tâche planifiée dans le but d’automatiser vos scripts PowerShell.

Il existe une meilleure solution.

Dans cet article, vous allez apprendre comment installer Jenkins sur Windows et exécuter un simple script PowerShell. Vous apprendrez comment installer Jenkins, configurer la sécurité de base, activer le plugin PowerShell et exécuter une tâche pour créer un simple fichier texte avec les paramètres que nous fournirons.

Cet article vise à être une introduction de base à Jenkins. La configuration que vous allez apprendre n’est pas nécessairement destinée aux environnements de production.

Prérequis

La majeure partie de cet article sera une démonstration pas à pas. Si vous prévoyez de suivre, assurez-vous d’avoir quelques prérequis en place.

Les exigences pour exécuter Jenkins sont si minimes que tout ordinateur moderne pourrait le faire. Les exemples dans cet article seront tous basés sur Jenkins s’exécutant sur :

  • Windows 10 Enterprise v.1903
  • PowerShell Core v6

Bien que Jenkins puisse fonctionner sur à peu près n’importe quelle plateforme, je vais me concentrer sur Windows 10 entreprise pour simplifier les choses.

Installation de Jenkins

Avec les prérequis pris en compte, installons Jenkins.

L’installation de Jenkins est simple et directe. Naviguez vers https://www.jenkins.io/download/ et téléchargez la version Long-term support (LTS). Il y a deux versions disponibles, la version LTS et la version “Hebdomadaire”. La version “Hebdomadaire” est régulièrement mise à jour et peut être instable. Pour cet article, nous utilisons la version LTS. C’est la version la plus stable.

Comme vous pouvez le voir sur la capture d’écran ci-dessous, il y a plusieurs options au choix. Sélectionnez la version Windows pour commencer le téléchargement.

Installing the Windows package for Jenkins

Une fois que vous avez téléchargé l’installateur, extrayez l’archive zip et lancez l’installateur en acceptant tous les paramètres par défaut. L’installation est simple.

Une fois l’installation terminée, Jenkins ouvrira un navigateur avec la page Commencer. Cette page contient le mot de passe administrateur initial pour déverrouiller Jenkins et continuer la configuration. Vous pouvez voir ci-dessous que Jenkins me dit de lire un fichier texte à C:\Program Files (x86)\Jenkins\secrets\initialAdminPassword.

Providing the administrator password for Jenkins

Naviguez jusqu’au fichier indiqué, ouvrez-le, copiez le mot de passe affiché et utilisez-le comme mot de passe administrateur sur la page Commencer.

Installation des Plugins

Une fois que vous vous êtes connecté pour la première fois, Jenkins terminera la configuration finale puis demandera quels plugins installer. Il y a quelques choix comme vous pouvez le voir ci-dessous dans la capture d’écran.

En sélectionnant Installer les plugins suggérés, vous installerez l’ensemble recommandé de plugins basé sur les scénarios d’utilisation les plus courants. Cela inclut des plugins pour les fournisseurs d’authentification, les interactions avec GitHub et les extensions Java. Sélectionnez le plugin à installer vous permet d’installer uniquement ceux dont vous avez besoin à partir d’une liste de tous les plugins disponibles.

Mettons en évidence Installer les plugins suggérés et cliquez sur OK. Ce processus prendra quelques minutes pour installer les plugins initiaux, c’est donc le bon moment pour aller vous chercher un café.

Installing plugins in Jenkins

Création de l’utilisateur Admin

Une fois les plugins installés, l’étape suivante consiste à créer notre premier utilisateur. Cet utilisateur est l’administrateur de Jenkins et aura des permissions globales, un peu comme l’Administrateur d’entreprise pour Windows Server. Vous pouvez voir ci-dessous à quoi ressemblera la page Créer le premier utilisateur Admin.

Creating a Jenkins admin user

À partir de ce moment, l’interface Jenkins n’est accessible qu’en entrant un nom d’utilisateur et un mot de passe valides.

Configuration de l’URL Admin de Jenkins

La dernière étape consiste à configurer l’URL pour le service Jenkins. Cette URL est l’interface pour gérer le programme Jenkins et devrait idéalement être définie sur un nom de domaine pleinement qualifié (FQDN). Le définir sur un FQDN permettra un accès à distance, comme un site web. Pour cet article et pour simplifier, acceptez l’URL par défaut.

The Jenkins URL

Configuration de la sécurité

Avec l’installation terminée, passons à la configuration de l’authentification. Accédez au tableau de bord principal s’il n’est pas déjà ouvert. À partir du tableau de bord principal, cliquez sur Gérer Jenkins, puis sur Configurer la sécurité globale pour ouvrir les paramètres de sécurité comme indiqué ci-dessous.

Setting Global Security options

Sur la page Configurer la sécurité globale, vous verrez quelques options à choisir. Pour cet article, nous allons utiliser la propre base de données utilisateur de Jenkins pour simplifier les choses. Il est également conseillé de décocher « Autoriser les utilisateurs à s’inscrire » comme indiqué ci-dessous. En le laissant coché, cela permet à n’importe quel utilisateur de créer un compte et d’accéder à Jenkins. .

En regardant la capture d’écran ci-dessous, il y a d’autres options d’authentification.

  • Déléguer au conteneur servlet – Cela est utilisé si vous avez déjà configuré des conteneurs Docker avec Jenkins et permet l’authentification à travers le conteneur.
  • LDAP – Cette option est utilisée lorsque vous avez déjà Active Directory que vous souhaitez utiliser pour l’authentification.

Ensuite, choisissez l’option Les utilisateurs connectés peuvent tout faire. Dans ce mode, chaque utilisateur connecté aura un contrôle total sur Jenkins. Cela peut ne pas être une bonne idée pour la production, car cela permet à n’importe quel utilisateur de modifier les paramètres.

Configuring global security

Activation du plugin PowerShell dans Jenkins

Avec la configuration de sécurité de base, il est temps de configurer le plugin PowerShell dans Jenkins. Pour installer le plugin PowerShell, accédez au tableau de bord principal, cliquez sur Gérer Jenkins, puis sur Gérer les plugins comme indiqué ci-dessous.

Installing the PowerShell plugin

Il existe des centaines de plug-ins, donc la meilleure façon de trouver le plug-in PowerShell est de le rechercher. Dans la barre de filtre, saisissez « PowerShell » et sélectionnez-le dans la liste. Cochez la case, comme indiqué ci-dessous, pour l’activer. Cela permettra à Jenkins d’écrire directement des commandes et des scripts PowerShell dans les boîtes de texte de Jenkins et d’inviter PowerShell sans avoir à démarrer une console PowerShell séparée.

Vous pouvez voir ci-dessous à quoi cela pourrait ressembler.

Finding the PowerShell plugin

Avec le plug-in activé, Jenkins est prêt à exécuter des tâches PowerShell.

Création d’un travail PowerShell dans Jenkins

L’installation du plug-in PowerShell dans Jenkins est terminée. Voici le truc amusant. Créons un travail.

Dans Jenkins, un travail est défini comme une série de tâches à accomplir. Un scénario courant consiste à démarrer la compilation d’un programme lorsque le développeur enregistre du code. Très similaire à Task Manager dans Windows Server.

Le travail que nous allons configurer consistera à vérifier le répertoire c:\temp et à insérer un fichier texte dans ce répertoire avec un message personnalisé.

Jenkins propose différents types de projets, parfois appelés pipelines, qui se concentrent sur des objectifs spécifiques. Les différents types de projets auront différents paramètres, options et paramètres en fonction du type de projet que vous choisissez. Vous pouvez trouver plus d’informations sur les types de projets et quand les utiliser sur le site de Jenkins.

Depuis le tableau de bord principal, cliquez sur Nouvel élément. Pour le nom du travail, entrez création d’un fichier texte. C’est arbitraire mais il est préférable de le nommer de manière cohérente.

Pour cet article, nous allons utiliser le projet Freestyle. Cela offre la plus grande flexibilité pour créer notre travail. Sélectionnez le projet Freestyle et faites défiler vers le bas, puis cliquez sur OK.

Creating a Jenkins project

Ce travail sera un projet paramétré. Cela signifie que nous pouvons demander aux utilisateurs de saisir des informations et ces informations seront transmises au travail. Par exemple, supposons que nous ayons un travail PowerShell dans Jenkins qui copie des fichiers journaux vers un répertoire spécifique. Nous pouvons ajouter une demande dans le travail qui demandera un nom de fichier à inclure dans la construction lorsque nous exécutons le travail.

Cochez l’option Ce projet est paramétré dans la liste déroulante. Cliquez sur le menu déroulant Ajouter un paramètre et choisissez le paramètre de type Chaîne. Le paramètre de type Chaîne est l’endroit où vous entrez le message que vous souhaitez inclure dans le fichier texte.

Creating a parameterized Jenkins job

Ensuite, ajoutez un second Paramètre de choix. Il devrait ressembler à la capture d’écran ci-dessous. Cette option permettra à l’utilisateur de sélectionner un élément dans la liste déroulante.

Adding parameters to the project

Les paramètres du travail devraient maintenant ressembler à la capture d’écran ci-dessous.

Final job

Faites défiler jusqu’à la section Build. Cliquez sur la petite flèche et sélectionnez Windows PowerShell. Cela permet à Jenkins de savoir que nous exécutons un script PowerShell. C’est également là que nous saisissons le script PowerShell. Ce travail est maintenant prêt. Cliquez sur Enregistrer.

Windows PowerShell option

Pour un exemple de script pour notre travail PowerShell dans Jenkins, créons un fichier dans le répertoire temporaire et ajoutons un message simple.

Il s’agit d’un script simple qui va créer un répertoire temporaire sous la racine, s’il n’existe pas déjà, et créer un fichier texte dans ce répertoire.

# Créer un répertoire temporaire
if (-not(Test-Path -Path 'C:\temp'))
{
    New-Item -Path 'C:\temp' -ItemType directory
}

# Utilisation des variables d'environnement exposées par le travail Jenkins
Set-Content -Path "C:\temp\$($env:Filename).txt" -Value $env:Message

CONSEIL : Écrivez d’abord votre script dans VSCode ou un autre éditeur, puis collez-le dans la zone.

Exécution du travail PowerShell dans Jenkins

Enfin, vous êtes prêt à exécuter votre premier travail. Retournez au tableau de bord principal et vous verrez le travail Create Text File répertorié dans le tableau de bord principal. Voir ci-dessous.

Our new Jenkins job

Cliquez sur l’icône de l’horloge à l’extrême droite et affichez le formulaire du travail.

Setting parameters on Jenkins job

Dans la boîte de message, saisissez le texte que vous souhaitez insérer dans le fichier texte, puis cliquez sur Exécuter. Une fois la construction terminée, cliquez sur la sortie de la console. La sortie de la console affiche l’état du travail et si l’exécution du travail a réussi.

Console output from job

Maintenant, il ne vous reste plus qu’à ouvrir le gestionnaire de fichiers et vérifier le fichier. Accédez au répertoire temporaire et ouvrez le fichier texte. Il contiendra le même texte que celui que vous avez saisi dans la boîte de message de construction.

Final outcome of Jenkins job

Résumé

Vous avez maintenant une compréhension de base de PowerShell dans Jenkins. C’est un outil puissant qui peut être utilisé pour gérer vos scripts PowerShell et automatiser toutes les tâches !

Source:
https://adamtheautomator.com/jenkins-powershell/