2015-11-26 3 views
0

Nous avons mis en place Jenkinsjobs avec plusieurs étapes de promotion qui reflètent notre flux de travail QS/Testing. Dans une promotion, nous déclenchons une construction sur un autre serveur maître Jenkins. Dans le journal de la construction de la promotion est enregistrée qui BuildNumber le travail sur la machine distante avait:Comment transférer des informations d'une étape de promotion à la suivante?

This job is build #[26] on the remote server.

Ce BuildNumber devrait être disponible dans le prochain promotionstep afin de définir ensemble une URL qui pointe vers cette BuildNumber.

La façon dont je le fais maintenant:

Laissez les deux promotions ne fonctionnent que sur le maître
Dans la deuxième promotion, j'ai ajouté une action pour exécuter des commandes shell:

crlog=${WORKSPACE}/../promotions/03-CREATE_CHANGE_REQUEST/builds/lastSuccessfulBuild/log 
crbuildnr=$(grep 'This job is build #\[.*\] on the remote server.' ${crlog} | tr -d [:alpha:][:punct:][:space:]) 
echo "crbuildnr=${crbuildnr}" > CR-Buildnummer.txt 

Le fichier CR- Buildnummer.txt est ensuite utilisé pour injecter des variables d'environnement.

Cette solution présente l'inconvénient de dépendre de la structure de répertoire des maîtres.

Est-il possible d'obtenir le Buildnumber de la version déclenchée à distance sans lire directement le journal à partir du système de fichiers?

J'ai déjà essayé "copier l'artefact" mais je ne sais pas comment nommer le Projet à partir duquel l'artefact doit être copié. J'ai essayé ${PROMOTED_JOB_NAME}/promotion/03-CREATE_CHANGE_REQUEST parce que c'est ce que la variable d'environnement JOB_NAME était. Mais je suis

ERROR: Unable to find project for artifact copy: TEST_FIT_CQ_Create_FGV/promotion/03-CREATE_CHANGE_REQUEST This may be due to incorrect project name or permission settings; see help for project name in job configuration.

Nous utilisons:
jenkins 1.609.2
build plug-in 2.24
copie artefact plug-in 1.36

Répondre

0

promu En supposant que vous avez utilisé le bon projet, il y a un problème au sein jenkins:

https://issues.jenkins-ci.org/browse/JENKINS-30122

Vous devez définir l'autorisation hudson.model.Item.Read pour un utilisateur anonyme.

ou mieux lire la section d'autorisation du plug-in: https://wiki.jenkins-ci.org/display/JENKINS/Copy+Artifact+Plugin#CopyArtifactPlugin-Permissionstocopyartifact

+0

Merci pour les liens. J'ai essayé l'autorisation basée sur le projet et la solution pour permettre la copie d'artefacts. Les deux n'ont pas fonctionné. Je pense que le problème principal est que les promotions sont une sorte de sous-projet au sein du projet Jenkins. Mais je ne peux pas permettre la copie d'artefacts à l'intérieur de la Promotionstep - ainsi l'allocation est seulement bonne pour les artefacts du projet externe. –