Fermer

juin 28, 2024

Pro Jenkinsfile : évitez ces erreurs courantes – Partie 2

Pro Jenkinsfile : évitez ces erreurs courantes – Partie 2


Introduction
Re-bonjour, ingénieurs DevOps ! Oncle Jenkins est de retour, prêt à plonger plus profondément dans le monde de Jenkinsfiles. Notre blog précédent couvrait quelques conseils importants pour éviter les pièges courants du CI/CD. Si vous l’avez manqué, consultez Partie 1 de cette série pour rattraper son retard sur ces points cruciaux. Dans ce blog, nous explorerons des stratégies plus avancées pour affiner et optimiser vos fichiers Jenkins. Poursuivons notre voyage vers la maîtrise de la création de Jenkinsfile. Prêt à passer au niveau supérieur ? Commençons!

logo Jenkin

logo Jenkin

1. Ignorer les variables d’environnement : ne pas coder en dur les valeurs

Les valeurs codées en dur rendent votre pipeline rigide et difficile à maintenir.
Conseil d’évitement: Utilisez le environnement directive pour définir les variables et le avecCredentials bloque à gérer les configurations et les secrets.

pipeline {
agent n’importe quel
environnement {
APP_ENV = ‘produire’
API_ENDPOINT = ‘https://api.exemple.com’
}
étapes {
scène(‘Construire’) {
pas {
écho « Création d’une application pour ${env.APP_ENV}« 
}
}
scène(‘Déployer’) {
pas {
avecCredentials([string(credentialsId: ‘aws-credentials-id’, variable: ‘AWS_CREDENTIALS’)]) {
écho « Déploiement vers ${env.APP_ENV} en utilisant ${env.API_ENDPOINT}« 
}
}
}
}
}

2. Cacher et dévoiler des artefacts

Erreurs courantes:
– Surutilisation de stash et unstash : une utilisation excessive peut entraîner une utilisation inutile des ressources et une complexité.
– Collisions de noms : l’utilisation de noms non uniques pour les caches peut entraîner des comportements inattendus.
– Limitations de taille : ne pas tenir compte de la taille des fichiers cachés peut entraîner des problèmes de performances.

Les meilleures pratiques:
– Utilisez le stash et le unstash pour les petits artefacts critiques qui doivent être transférés entre les étapes.
– Garantissez des noms uniques et significatifs pour chaque réserve afin d’éviter les collisions.
– Soyez conscient de la taille et de la fréquence du contenu caché.

pipeline {
agent n’importe quel
étapes {
scène(‘Construire’) {
pas {
merde ‘echo « Construire un artefact » > artefact.txt »
la cachette comprend : ‘artefact.txt’nom: ‘construire-artefact’
}
}
scène(‘Déployer’) {
pas {
dégager ‘construire-artefact’
merde ‘echo « Déploiement de l’artefact : » && catartefact.txt’
}
}
}
}

3. Utilisation excessive des étapes sh pour les commandes Shell : gardez-le propre

L’utilisation des étapes sh partout donne à votre fichier Jenkins l’apparence d’un fouillis de scripts shell.

Conseil d’évitement
:
Utilisez les étapes et plugins Jenkins intégrés autant que possible. Réservez les étapes sh lorsque vous avez vraiment besoin d’exécuter des commandes shell. Exemple:
Au lieu de cela:

pipeline {
agent n’importe quel
étapes {
scène(‘Construire’) {
pas {
merde ‘cp src/* sortie/’
merde ‘construction progressive’
}
}
}
}

Gardez-le propre comme ceci :

pipeline {
agent n’importe quel
étapes {
scène(‘Construire’) {
pas {
merde « ‘
cp src/* sortie/
construction progressive
« ‘
}
}
}
}

4. Ignorer le pipeline en tant que meilleures pratiques de code

Ne pas traiter votre fichier Jenkins avec le même soin que les autres codes peut entraîner des problèmes. Cela inclut de ne pas contrôler la version de votre fichier Jenkins, de ne pas examiner les modifications via des demandes d’extraction et de ne pas tester les modifications de manière approfondie.

Conseil d’évitement
:

  • Stocker votre fichier Jenkins dans votre système de contrôle de version comme Github.
    Meilleures pratiques de code

    Meilleures pratiques de code

  • Utiliser des révisions de code et des demandes d’extraction pour examiner les modifications apportées au fichier Jenkins.
  • Tester les modifications de Jenkinsfile dans un environnement intermédiaire avant de les appliquer à la production.

5. Négliger les notifications : ne laissez pas les parties prenantes dans le noir

Ne pas informer les parties prenantes de l’état de la construction peut entraîner des pannes et des retards de communication.
Conseil d’évitement: Utilisez le poste section pour envoyer des notifications sur l’état de la construction.

@Bibliothèque(‘shared_lib@master’) _
pipeline {
agent n’importe quel
étapes {
scène(« Étape personnalisée ») {
// quelques étapes
}
}
poste {
échec {
scénario {
def message d’échec = « Échec du travail – ${BUILD_URL}« 
jenkinsNotifications.notify(« Échec »message d’échec, « Échecs de la production de Jenkins »)
}
}
}
}

6. Ignorer les spécifications de l’agent pour différentes étapes

Problème: Ne pas spécifier d’agents pour différentes étapes peut conduire à une utilisation inefficace des ressources, en particulier dans les configurations multi-nœuds.
Conseil d’évitement: Spécifier les agents au niveau de l’étape lorsque différentes ressources sont nécessaires.

Agents Jenkins

Agents Jenkins

Exemple avec des agents spécifiques à une étape :

pipeline {
étapes {
scène(‘Construire’) {
agent {
étiquette ‘build_agent’
}
pas {
merde ‘faire construire’
}
}
scène(‘Test’) {
agent {
étiquette ‘agent de test’
}
pas {
merde ‘faire un test’
}
}
}
}

7. Implémentation d’un flux de travail complexe avec construire et attendre jusqu’à.

Problème: Déclenchement incorrect des tâches et mauvaise gestion des erreurs. Une mauvaise configuration des déclencheurs de tâches en aval peut entraîner des pannes de pipeline et des problèmes difficiles à déboguer.
Conseil d’évitement: Gérez les tâches et les erreurs en aval avec élégance.

  • Utiliser construire et attendre jusqu’à avec une gestion des erreurs et des conditions de sortie appropriées. Exemple : Déclenchement d’une tâche en aval
pipeline {
agent n’importe quel
étapes {
scène(« Déclencheur en aval ») {
pas {
scénario {
essayer {
def avalBuild = travail de build : ‘travail en aval’, attendez: vrai
écho « Résultat de la construction en aval : ${downstreamBuild.result}« 
} attraper (Exception e) {
erreur « Échec de la tâche en aval : ${e.message}« 
}
}
}
}
}
}

Conclusion
Dans cette deuxième partie de notre série de blogs, nous avons approfondi le degré de création professionnelle de fichiers Jenkins. Ces stratégies sont conçues pour rationaliser vos processus CI/CD et atténuer les risques. Dans le prochain blog de notre série, nous continuerons à explorer des stratégies supplémentaires pour vous aider à maîtriser la création de fichiers Jenkins et à améliorer davantage vos pratiques CI/CD. Contactez notre équipe au AU NOUVEAU pour une assistance personnalisée et pour élever vos pratiques DevOps. Construisons ensemble un pipeline CI/CD plus fiable et plus efficace !

VOUS TROUVEZ CECI UTILE ? PARTAGEZ-LE






Source link