Choisir l’agent photo

JenkinsBeginner
Pratiquer maintenant

Introduction

Fieldlight Studio dispose de trois photographies de jardin à partager. Les originaux sont prêts, mais leur grande taille est peu pratique pour un examen rapide. Vous utiliserez un outil d’image préparé pour créer de petits aperçus et une planche-contact : une image qui présente toute la collection en un coup d’œil.

L’outil est installé sur un agent Jenkins connecté. Votre première tâche consiste à choisir l’agent qui peut réellement effectuer le travail. Vous répondrez ensuite à une demande de livraison de taille réduite, conserverez les deux versions réussies et protégerez les photographies originales.

Les prérequis sont la navigation dans les pages Jenkins et la reconnaissance d’un court Pipeline déclaratif. Aucune programmation Java, commande de retouche photo, administration Docker ou installation d’agent n’est requise. Les programmes fournis et les connexions des agents sont préparés. Les deux agents sont des conteneurs distincts sur une même machine virtuelle de formation : leurs systèmes de fichiers sont indépendants, mais ils partagent son noyau. Ce n’est pas un parc de machines cloud. Fieldlight est fictif et les photographies sont des supports d’étude générés par IA. La durée est une estimation de l’auteur, et non une mesure réalisée auprès de débutants.

Associer le travail à l’agent adapté

Dans cette étape, vous examinerez les originaux, observerez un échec attendu dû à un outil manquant et planifierez le travail sur l’agent capable de traiter les images. Commencez dans Photo Desk.

La collection Garden Stories montre de la lavande, une allée de jardin et un arrosoir. Ouvrez chaque photographie, examinez son original complet et utilisez l’action Back du navigateur pour revenir au bureau. Choisissez Download original pour la photographie de lavande et conservez-la pour comparer. Les originaux font 1536 pixels de large et doivent rester inchangés. Le bureau indique initialement No completed collection yet.

Passez à Jenkins. Le contrôleur Jenkins conserve la configuration des jobs et coordonne les builds. Un agent est un processus connecté qui exécute le travail de build. Un nœud est son entrée configurée dans Jenkins. Un exécuteur est un emplacement de travail disponible sur ce nœud. Ici, chaque agent possède un exécuteur : il peut donc effectuer un bloc de travail alloué à la fois.

Depuis le tableau de bord, choisissez Manage Jenkins, puis Nodes. Examinez image-studio et pack-studio à tour de rôle. Tous deux sont connectés. Leurs labels de capacité sont photo-imaging et photo-packing ; tous deux possèdent aussi linux. Un label est une condition de planification, et non un installateur de logiciels. L’outil d’image existe uniquement sur image-studio ; l’outil de création de paquet existe uniquement sur pack-studio. Ce sont réellement des processus d’agent et des conteneurs distincts.

Revenez au tableau de bord avec le logo Jenkins en haut à gauche, puis ouvrez preview-photos. Choisissez Configure, puis la section Pipeline. L’éditeur Script contient le job préparé. Lisez sa structure avant toute modification :

  • agent none en tête signifie que le Pipeline entier ne réserve pas un agent. L’étape choisit son propre agent.
  • stage('Prepare photos') nomme le travail. Son instruction agent { label 'photo-packing' } demande actuellement la capacité de création de paquet.
  • steps contient les opérations. sh exécute la commande entre apostrophes dans le shell de l’agent sélectionné. Le programme fourni /opt/fieldlight/prepare-photos crée des aperçus ; --width 480 demande une largeur de 480 pixels et préserve les proportions d’origine. Les apostrophes gardent cette commande dans une seule chaîne Groovy.
  • deleteDir() vide l’espace de travail alloué à ce job, le répertoire temporaire qui contient ses fichiers de build. Le premier appel permet de démarrer dans un espace vide. Dans la section post, l’appel always vide l’espace de travail après l’étape, y compris après un échec. Il ne supprime pas les originaux sous /opt/fieldlight/originals.
  • archiveArtifacts conserve les fichiers correspondants dans Jenkins avant le nettoyage. Dans prepared/**, ** inclut les fichiers des sous-répertoires. fingerprint: true enregistre l’identité des fichiers pour leur traçabilité ; ce n’est ni une approbation client ni une signature.

Revenez à la page du job sans modifier le script. Choisissez une fois Build Now. Ouvrez le nouveau build numéroté dans Build History, puis choisissez Console Output. Attendez la fin. Ce premier échec est attendu : la console identifie pack-studio, puis indique que /opt/fieldlight/prepare-photos est not found, et se termine par FAILURE. L’agent demandé est connecté, mais il ne dispose pas de l’outil de ce rôle. Cela diffère d’une attente indéfinie d’un agent hors ligne ou ne correspondant à aucun label.

Revenez à preview-photos, choisissez Configure et ouvrez de nouveau Pipeline. Modifiez uniquement le label de l’étape, de photo-packing à photo-imaging. Pour utiliser une version complète à copier, cliquez dans Script, sélectionnez tout avec Ctrl+A sous Windows/Linux ou Command+A sous macOS et remplacez le contenu par :

pipeline {
    agent none
    stages {
        stage('Prepare photos') {
            agent { label 'photo-imaging' }
            steps {
                deleteDir()
                sh '/opt/fieldlight/prepare-photos --width 480'
                archiveArtifacts artifacts: 'prepared/**', fingerprint: true
            }
            post {
                always { deleteDir() }
            }
        }
    }
}

Conservez la commande de l’outil, les originaux, l’archivage et les deux appels de nettoyage. Choisissez Save, puis Build Now. Ouvrez Console Output pour le nouveau build et attendez Finished: SUCCESS. La console doit nommer image-studio, indiquer 3 previews at 480 pixels wide, puis afficher Archiving artifacts, Recording fingerprints et le deleteDir final. Cela prouve un véritable travail sur l’agent capable de l’effectuer, au-delà d’un simple message renommé.

Si vous voyez une erreur de syntaxe Groovy, revenez à Configure, rétablissez le script complet ci-dessus, enregistrez et lancez un nouveau build. Si un label mal orthographié laisse un build en attente, annulez cet élément dans la file avec son icône d’annulation, choisissez Yes dans la boîte de dialogue de confirmation, corrigez le label et relancez le build. Une faute dans une commande apparaît dans la console comme une commande manquante ; rétablissez le chemin fourni plutôt que d’installer un autre outil. Conservez le build d’origine en échec et tout l’historique ultérieur. Les erreurs courantes se corrigent en enregistrant un autre script et en lançant un build ; ne réinitialisez pas la machine virtuelle.

Passez à Photo Desk et actualisez la page. Choisissez Open prepared collection. Les trois petits aperçus doivent montrer les mêmes sujets de jardin que les originaux. Choisissez Open contact sheet pour voir les trois ensemble ; utilisez Back dans le navigateur pour revenir. Ouvrez Caption table et Image details, en revenant avec Back après chacun. captions.csv est un tableau de valeurs séparées par des virgules en texte brut : la première ligne nomme ses colonnes et chaque ligne suivante décrit une image. Il relie chaque légende à son fichier dans images/ et enregistre la largeur 480 et la hauteur 320 ; preparation.json identifie garden et la largeur 480.

Revenez à Jenkins et ouvrez la page du build réussi. Sous Build Artifacts, les liens individuels des noms de fichiers PNG ouvrent les images dans votre navigateur. Pour un téléchargement complet, choisissez le titre Build Artifacts, puis (all files in zip) sur la page de navigation des fichiers. Enregistrez archive.zip dans un dossier pour votre version de 480 pixels et extrayez-y le ZIP entier. Ses six fichiers se trouvent sous archive/prepared/, y compris le sous-répertoire images/. Ouvrez archive/prepared/images/garden-01.png et archive/prepared/contact-sheet.png dans votre navigateur ou lecteur d’images, puis lisez archive/prepared/captions.csv dans un éditeur de texte. Leur contenu visible doit correspondre à la collection. L’aperçu de lavande mesure 480 × 320 pixels, tandis que l’original téléchargé reste à 1536 × 1024. Conservez le numéro de ce build réussi et le dossier extrait complet pour l’étape suivante. Ces fichiers conservés restent disponibles après le nettoyage de l’espace de travail.

Les aperçus de jardin préparés dans Photo Desk

La collection préparée montre les mêmes sujets que les originaux : lavande, allée de jardin et arrosoir. Utilisez la planche-contact et les liens des fichiers pour examiner la véritable sortie conservée.

Livrer un ensemble d’aperçus plus petits

Dans cette étape, vous répondrez à une demande de livraison de 320 pixels et conserverez l’ensemble précédent de 480 pixels pour comparer. Commencez dans Photo Desk et revenez aux originaux avec Back to originals. Confirmez que les trois originaux complets restent disponibles.

Le client a maintenant besoin d’aperçus faisant exactement 320 pixels de large. Le programme fourni accepte cette exigence avec son option --width existante ; vous ne modifiez ni ne remplacez le programme d’image. Passez à Jenkins, revenez à preview-photos et choisissez Configure → Pipeline. Remplacez --width 480 par --width 320 dans la commande sh. Le script complet doit maintenant être :

pipeline {
    agent none
    stages {
        stage('Prepare photos') {
            agent { label 'photo-imaging' }
            steps {
                deleteDir()
                sh '/opt/fieldlight/prepare-photos --width 320'
                archiveArtifacts artifacts: 'prepared/**', fingerprint: true
            }
            post {
                always { deleteDir() }
            }
        }
    }
}

Choisissez Save, puis Build Now. Attendez que le nouveau build se termine par SUCCESS. Dans Console Output, confirmez que image-studio a effectué le travail, que le programme a indiqué 320 pixels wide et que l’archivage et le nettoyage ont été exécutés. Si la console indique encore 480, vérifiez que vous avez enregistré le script modifié et ouvert le nouveau build plutôt que le précédent.

Sur la page de ce build, choisissez Build Artifacts, puis (all files in zip). Enregistrez et extrayez entièrement ce nouveau archive.zip dans un dossier différent de votre version de 480 pixels. Ouvrez les fichiers sous son répertoire archive/prepared/. Les trois images d’aperçu doivent maintenant mesurer 320 × 213 pixels. La hauteur de 213 pixels est le résultat arrondi de la préservation des proportions de l’original de 1536 × 1024. La planche-contact contient toujours les trois sujets dans le même ordre ; c’est une vue d’ensemble distincte, et non un quatrième original redimensionné. Dans captions.csv, le nom de fichier, la légende et les dimensions de chaque image doivent concorder. preparation.json doit identifier garden et la largeur 320.

Passez à Photo Desk, actualisez la page et choisissez Open prepared collection. Examinez les trois nouveaux aperçus, la planche-contact et les deux fichiers de métadonnées. Revenez aux originaux et confirmez que leur contenu en pleine taille est inchangé. Passez ensuite à Jenkins, ouvrez le build réussi précédent dont vous avez noté le numéro et téléchargez de nouveau son ZIP complet par Build Artifacts → (all files in zip). Extrayez-le dans un autre nouveau dossier : son aperçu de lavande doit toujours mesurer 480 × 320 pixels. Créer une nouvelle version ne doit pas réécrire une ancienne archive.

Si un téléchargement présente une taille ou un sujet inattendus, vérifiez le numéro de build et l’option de largeur enregistrée, puis corrigez le script et lancez un nouveau build. Préservez les photographies originales, les outils fournis, les agents connectés, les labels de capacité et l’historique complet des builds. Ne copiez pas de fichiers entre les systèmes de fichiers des agents, ne supprimez pas le nettoyage et ne substituez pas une archive provenant d’une autre exécution. Terminez avec une véritable exécution réussie du script enregistré. Vous disposez d’un ensemble plus petit utilisable, d’une version antérieure intacte et d’originaux inchangés.

Résumé

Vous avez associé une véritable capacité de traitement d’image à son label d’agent Jenkins, interprété un échec attendu dû à un outil manquant et produit des aperçus utilisables. Changer l’option de largeur a créé une livraison plus petite sans modifier les originaux ni l’archive précédente. Les artefacts natifs ont survécu au nettoyage de l’espace de travail ; le prochain lab indépendant utilise deux espaces de travail distincts et un transfert temporaire au sein d’une même exécution.