1.9. En utilisant le plugin Jenkins Kubernetes
Dans l’exemple suivant, l’objet BuildConfig d’openshift-jee-sample provoque la mise à disposition dynamique d’un pod d’agent Jenkins Maven. Le pod clone un certain code source Java, construit un fichier WAR et provoque un second BuildConfig, openshift-jee-sample-docker à exécuter. Le second BuildConfig couche le nouveau fichier WAR dans une image de conteneur.
Le service OpenShift Red Hat sur AWS 4.11 a supprimé les images OpenShift Jenkins Maven et NodeJS Agent de sa charge utile. Le Red Hat ne produit plus ces images, et ils ne sont pas disponibles dans le référentiel ocp-tools-4 sur register.redhat.io. Le Red Hat conserve les versions 4.10 et précédentes de ces images pour tout correctif important de bug ou CVE de sécurité, en suivant le Red Hat OpenShift Service sur la stratégie de cycle de vie AWS.
Consultez le lien « Modifications importantes des images OpenShift Jenkins » dans la section suivante « Ressources supplémentaires ».
Exemple BuildConfig qui utilise le plugin Jenkins Kubernetes
Il est également possible de remplacer la spécification du pod d’agent Jenkins créé dynamiquement. Ce qui suit est une modification de l’exemple précédent, qui remplace la mémoire du conteneur et spécifie une variable d’environnement.
Exemple BuildConfig qui utilise le plugin Jenkins Kubernetes, spécifiant la limite de mémoire et la variable d’environnement
- 1
- Le nouveau modèle de pod appelé mypod est défini de manière dynamique. Le nouveau nom de modèle de pod est référencé dans la strophe du nœud.
- 2
- La valeur cloud doit être définie sur openshift.
- 3
- Le nouveau modèle de pod peut hériter de sa configuration à partir d’un modèle de pod existant. Dans ce cas, hérité du modèle Maven pod prédéfini par Red Hat OpenShift Service sur AWS.
- 4
- Cet exemple remplace les valeurs dans le conteneur préexistant et doit être spécifié par son nom. Les images de l’agent Jenkins expédiées avec Red Hat OpenShift Service sur AWS utilisent le nom du conteneur jnlp.
- 5
- Indiquez à nouveau le nom de l’image du conteneur. C’est un problème connu.
- 6
- La requête mémoire de 512 Mi est spécifiée.
- 7
- La limite de mémoire de 512 Mi est spécifiée.
- 8
- La variable d’environnement CONTAINER_HEAP_PERCENT, avec la valeur 0.25, est spécifiée.
- 9
- Le nœud stanza fait référence au nom du modèle de pod défini.
Le pod est supprimé par défaut lorsque la construction est terminée. Ce comportement peut être modifié avec le plugin ou dans un pipeline Jenkinsfile.
En amont Jenkins a récemment introduit un format déclaratif YAML pour définir un pipeline podTemplate DSL en ligne avec vos pipelines. Exemple de ce format, en utilisant l’échantillon java-builder pod modèle qui est défini dans le Red Hat OpenShift Service sur l’image AWS Jenkins:
Ressources supplémentaires