Comment puis-je déclencher un autre travail à partir d'un jenkins pipeline (jenkinsfile) avec GitHub Org Plugin?
Comment puis-je déclencher de la construction d'un autre emploi à partir de l'intérieur de la Jenkinsfile
?
Je suppose que c'est le travail d'un autre référentiel, sous le même github organisation, qui dispose déjà de son propre Jenkins fichier.
Je veux aussi le faire que si le nom de la branche est le maître, comme il ne fait pas de sens pour déclencher en aval construit de toutes les branches locales.
Mise à jour:
stage 'test-downstream'
node {
def job = build job: 'some-downtream-job-name'
}
Encore, lors de l'exécution j'obtiens une erreur
Pas paramétré travail appelé quelques-downtream-emploi-nom que l'on trouve
Je suis sûr que ce métier existe dans jenkins et est sous la même organisation dossier que l'actuel. C'est un autre travail qui a sa propre Jenkinsfile
.
Veuillez noter que cette question est spécifique à la GitHub Organisation Plugin qui auto-crée et maintient des emplois pour chaque dépôt et de la direction à partir de votre GitHub Organisation.
Vous devez vous connecter pour publier un commentaire.
Tout d'abord, c'est un gaspillage de l'exécuteur testamentaire fente pour envelopper le
build
étape dansnode
. Votre en amont exécuteur va juste être assis au ralenti sans raison.Seconde, à partir d'un multibranch projet, vous pouvez utiliser la variable d'environnement
BRANCH_NAME
de faire de la logique conditionnelle sur la branche courante.Troisième, la
job
paramètre prend la valeur absolue ou relative du nom de la tâche. Si vous donnez un nom de fichier sans chemin de qualification, qui ferait référence à un autre poste dans le même dossier, ce qui dans le cas d'un multibranch projet signifierait une autre branche de la même référentiel.Donc ce que vous vouliez écrire, c'est probablement
build job: '../other-repo/master', wait: false
build job: '../other-repo/$BRANCH_NAME'
où$BRANCH_NAME
est le Jenkins variable d'environnement relatives à la direction générale de l'exécution de l'Multibranch projet?${BRANCH_NAME}
est disponible comme une variable d'environnement, simple substitution de chaîne ne pourra le faire. Juste être sûr de passer à"
de'
pour citer de votre chaîne. par exemple,build job: "../other-repo/${BRANCH_NAME}"
build job
: jenkins.io/doc/pipeline/étapes/pipeline de build-étapeEn plus de l'mentionnés ci-dessus répond: je voulais commencer un travail avec un simple paramètre passé à un deuxième pipeline et trouvé la réponse sur https://dzone.com/refcardz/continuous-delivery-with-jenkins-workflow.
J'ai donc utilisé:
build
commande de retour? Comment accéder à la BUILD_NUMBER dans l'une des étapes suivantes? Quelqu'un sait où la commande est documenté?build job: 'freestyle', parameters: [ string(name: 'param1', value:'test_param'), string(name:'dummy', value: "${index}")]
de nos jours, à partir de jenkins.io/doc/pipeline/exemples/#emplois en parallèlebuild job
: jenkins.io/doc/pipeline/étapes/pipeline de build-étapeLa commande
build
dans le pipeline est là pour déclencher d'autres emplois dans jenkins.Exemple sur github
Le travail doit exister dans Jenkins et peuvent être paramétrées.
Comme pour la direction, je suppose que vous pouvez lire à partir de git
build job: 'jobname
mais j'obtiens cette erreurNo parameterized job named jobname found
et je peux vous assurer qu'il s'agit d'un emploi avec ce nom au même niveau dans l'organisation du dossier.build job: "${ORGANISATION_NAME}/${REPO_NAME}/master"
/
. Les chemins relatifs sont beaux; sorin était probablement que l'appel du jobbuild
était un multibranch travail, ce qui signifie un chemin commejobname
serait d'essayer de construire la branchejobname
de le même travail; il doit être../jobname/branchname
au lieutry { build(job:jobname, wait:false, parameters:params) } catch (Exception ex) { println("Job ${jobname} not triggered: ${ex}") }
Vous pouvez ajouter de la variété, de la logique à votre exécution en parallèle ,le noeud et les agents des options et des mesures pour le déclenchement externe de l'emploi. J'ai donné des facile-à-lire le livre de cuisine exemple pour cela.
1.exemple pour le déclenchement externe du travail de jenkins fichier avec par exemple conditionnelle:
2.exemple le déclenchement de plusieurs travaux de jenkins fichier avec des conditions exemple:
Vous pouvez utiliser le
build job
étape à partir de Jenkins Pipeline (Minimum Jenkins exigence: 2.130).Voici l'API complète pour la
build
étape: https://jenkins.io/doc/pipeline/steps/pipeline-build-step/Comment utiliser
build
:job
: Nom de l'un à l'aval de l'emploi à construire. Peut-être un autre Pipeline de travail, mais le plus souvent, un freestyle ou autre projet.../sister-folder/downstream
/top-level-folder/nested-folder/downstream
Déclencher une autre tâche à l'aide d'une branche comme un param
Dans mon entreprise beaucoup de nos branches d'activité "/". Vous devez remplacer toutes les instances de "/" par "%2F" (tel qu'il apparaît dans l'URL de l'emploi).
Dans cet exemple, nous utilisons les chemins d'accès relatifs
Déclencher une autre tâche en utilisant le numéro de build comme un param
Déclencher de nombreux emplois en parallèle
Source: https://jenkins.io/blog/2017/01/19/converting-conditional-to-pipeline/
Plus d'infos sur le Parallèle ici: https://jenkins.io/doc/book/pipeline/syntax/#parallel
Ou alternativement: