2017-10-12 13 views
0

Je travaille sur un plugin Jenkins et j'ai besoin de faire une nouvelle variable d'environnement accessible à tous les emplois dans Jenkins. Un peu comme une propriété globale de Jenkins ou une variable d'environnement env.MY_ENV_VAR, ou peut-être exactement comme ça. Je ne suis pas sûr. J'ai juste besoin d'être disponible pour n'importe quel script.Expose variable d'environnement global de plug-in Jenkins

Je capture déjà la valeur de cette variable d'environnement dans l'une des entrées du fichier config.jelly de mon plugin, qui est exposée et peut être définie en allant à Jenkins>Manage Jenkins>Configure System>My Plugin's Settings. Donc, il se sentirait comme un double travail pour un administrateur d'avoir à le mettre sous Jenkins>Manage Jenkins>Configure System>Global properties.

Puis, dans un deuxième temps, et peut-être penser à exposer d'autres variables à l'avenir, comment dois-je aller sur-espacer le nom de ces? Une sorte de chemin, il y a les env, params, docker, scm, currentBuild variables d'environnement. Que devrais-je étendre afin d'avoir mes propres variables d'environnement espacées de nom? Par exemple: pour avoir un espace de noms foo et accéder à mes variables comme foo.MY_VAR_1, foo.MY_VAR_2 et ainsi de suite.

Quelqu'un peut-il me diriger dans la bonne direction?

Répondre

0

Après avoir regardé comment le plug-in Docker Pipeline Plugin et Pipeline Groovy Plugin font j'ai finalement fini par étendre org.jenkinsci.plugins.workflow.cps.GlobalVariable, ce qui nécessite cette dépendance ajouté à votre projet:

<dependency> 
    <groupId>org.jenkins-ci.plugins.workflow</groupId> 
    <artifactId>workflow-cps</artifactId> 
    <version>2.25</version> 
</dependency> 

J'espère que cela aide les autres à une exigence similaire .