J'appelle un travail Jenkins à distance en utilisant:
wget http://<ServerIP>:8080/job/Test-Jenkins/build?token=DOIT
Ici, Test-Jenkins
travail est appelé et DOIT
est le jeton de sécurité que j'ai utilisé.
Maintenant, je dois passer quelques paramètres au fichier build.xml de ce travail, à savoir Test-Jenkins
.
Je n'ai pas encore compris comment passer les variables.
Voir la documentation Jenkins: Construction paramétrée
Vous trouverez ci-dessous la ligne qui vous intéresse:
http://server/job/myjob/buildWithParameters?token=TOKEN&PARAMETER=Value
Pour déclencher une construction avec des paramètres propres/personnalisés, appelez l'URL suivante (à l'aide de POST ou de GET):
http://JENKINS_SERVER_ADDRESS/job/YOUR_JOB_NAME/buildWithParameters?myparam=myparam_value
Ensuite, dans votre configuration de travail Jenkins, cochez la case "This build is parameterized
", cliquez sur le bouton "Add Parameter
" et sélectionnez la valeur déroulante "String Parameter
".
Définissez maintenant votre paramètre - exemple:
Vous pouvez maintenant utiliser votre paramètre dans votre pipeline de travail/génération, par exemple:
Pour transmettre/utiliser les variables, commencez par créer des paramètres dans la section configurer de Jenkins. Les paramètres que vous utilisez peuvent être de type texte, chaîne, fichier, etc.
Après les avoir créés, utilisez la référence de variable dans les champs souhaités.
Par exemple: j'ai configuré/créé deux variables pour Email-subject
et Email-recipentList
et j'ai utilisé leur référence dans le plugin EMail-ext
(capture d'écran jointe).
Pour ajouter à cette question, j'ai découvert qu'il n'était pas nécessaire d'utiliser le noeud final /buildWithParameters
.
Dans mon scénario, j'ai un script qui déclenche l'exécution par Jenkins de tests après un déploiement. Certains de ces tests nécessitent des informations supplémentaires sur le déploiement pour fonctionner correctement.
Si j'essayais d'utiliser /buildWithParameters
sur un travail qui n'attend pas de paramètres, le travail ne s'exécutera pas. Je ne veux pas éditer chaque travail pour exiger de faux paramètres uniquement pour que les travaux soient exécutés.
Au lieu de cela, j'ai trouvé que vous pouvez transmettre des paramètres comme ceci:
curl -X POST --data-urlencode "token=${TOKEN}" --data-urlencode json='{"parameter": [{"name": "myParam", "value": "TEST"}]}' https://jenkins.corp/job/$JENKINS_JOB/build
Avec ce json=...
, le paramètre myParam
avec la valeur TEST
sera transmis au travail chaque fois que l'appel sera effectué. Toutefois, le travail Jenkins sera toujours exécuté même s'il n'attend pas le paramètre myParam
.
Le seul scénario que cela ne couvre pas est si le travail a un paramètre qui n'est PAS passé dans la variable json
. Même si le travail a une valeur par défaut définie pour le paramètre, l'exécution du travail échouera. Dans ce scénario, vous rencontrerez le message d'erreur suivant/la trace de pile lorsque vous appelez /build
:
Java.lang.IllegalArgumentException: No such parameter definition: myParam
Je me rends compte que cette réponse a plusieurs années de retard, mais j'espère que cela pourra être utile pour quelqu'un d'autre!
Vous pouvez simplement l'essayer avec un fichier jenkins. Créez un travail Jenkins avec le script de pipeline suivant.
pipeline {
agent any
parameters {
booleanParam(defaultValue: true, description: '', name: 'userFlag')
}
stages {
stage('Trigger') {
steps {
script {
println("triggering the pipeline from a rest call...")
}
}
}
stage("foo") {
steps {
echo "flag: ${params.userFlag}"
}
}
}
}
Créez le travail une fois manuellement pour le configurer et créez simplement une requête http POST au travail Jenkins comme suit.
Le format esthttp://server/job/myjob/buildWithParameters?PARAMETER=Value
curl http://admin:test123@localhost:30637/job/apd-test/buildWithParameters?userFlag=false --request POST