web-dev-qa-db-fra.com

Comment passer un artefact de build dans un autre travail dans Jenkins

Installer

J'ai deux emplois à Jenkins:

  • build master - cela construit le code et crée un artefact
  • deploy master - cela déploie l'artefact

Actuellement, deploy master comporte l'étape de génération "Copier les artefacts d'un autre projet" en utilisant la "dernière génération réussie".

build-master

Mon but

Je souhaite faire passer cette étape de la "dernière version réussie" à "spécifiée par un paramètre de génération" afin de pouvoir sélectionner une génération spécifique lors du déploiement sans modifier la configuration de deploy master travail à chaque fois.

Ce que j'ai essayé

Tout d'abord, je suis passé à "spécifié par un paramètre de construction".

build-specific

J'ai ensuite coché la case "Ce projet est paramétré" et j'ai ajouté un paramètre de chaîne pour BUILD_SELECTOR.

parameter

Ensuite, j'ai sélectionné la construction et entrez l'entrée 47 qui est un numéro de build du build master emploi.

De plus, j'ai essayé l'appel api

$.ajax({
  type: 'POST',
  url: 'https://jenkins/job/deploy%20master/build?token=abc7f5abc0c45abcea0646ed858abcde&BUILD_SELECTOR=47'
});

Résultat

Les deux fois, il a échoué avec la sortie suivante:

Started by user styfle
[EnvInject] - Loading node environment variables.
Building in workspace C:\Jenkins\jobs\deploy master\workspace
ERROR: Unable to find a build for artifact copy from: build master
Started calculate disk usage of build
Finished Calculation of disk usage of build in 0 seconds
Started calculate disk usage of workspace
Finished Calculation of disk usage of workspace in 0 seconds
Finished: FAILURE

Question

Comment configurer cela correctement pour pouvoir spécifier un numéro de build (ou un autre identifiant) lors du déploiement?

Mettre à jour avec la solution

Ma solution grâce à la réponse de Gerold a été d'ajouter un paramètre "Sélecteur de build pour copier un artefact" et d'utiliser une nouvelle variable d'environnement pour créer un lien vers mon paramètre de chaîne que j'ai déjà ajouté.

enter image description here

19
styfle

Il n'y a qu'un seul espace de travail par projet/travail dans Jenkins. Les répertoires des builds contiennent uniquement des informations sur les builds et leurs résultats.

Les répertoires racine des deux sont spécifiés dans Gérer Jenkins Configurer le système → Advanced....

Pour déployer un artefact d'une version précédente, vous devez le copier ailleurs dans build master et y accéder depuis deploy master plus tard.

MISE À JOUR:

Voir l'aide en ligne pour Quelle version Nom du paramètre :

Un paramètre portant ce nom doit être ajouté dans la section des paramètres de construction ci-dessus. Il existe un type de paramètre spécial pour choisir le sélecteur de construction.

Utilisez ce Sélecteur de construction pour copier l'artefact au lieu d'un paramètre de chaîne .

5
Gerold Broser

Ajoutez le suivant dans le projet en aval. "Construire un sélecteur pour copier l'artefact" au lieu d'un "paramètre de chaîne"

"Build selector for Copy Artifact" instead of a "String Parameter"!!

Copier des artefacts d'un autre projet

enter image description here

C'est ça. Cliquez sur "Build with Parameters" et passez le numéro de build enter image description here

2
Febin