web-dev-qa-db-fra.com

Jenkins: SCM déclenchant des constructions constantes malgré aucun changement

Nous avons un problème où, malgré aucun changement de code, SCM déclenche une construction. SCM interroge les modifications toutes les 15 minutes et ne doit déclencher une construction que si des modifications sont trouvées.

Voici quelques exemples de journaux d'interrogation SCM consécutifs.

Started on Nov 15, 2013 11:47:14 AM
Using strategy: Default
[poll] Last Built Revision: Revision 08f48cc5675ae0126256cf24d6ee74c8fc9d7b30 (Origin/develop)
Done. Took 0.23 sec
Changes found

Started on Nov 15, 2013 11:17:14 AM
Using strategy: Default
[poll] Last Built Revision: Revision 08f48cc5675ae0126256cf24d6ee74c8fc9d7b30 (Origin/develop)
Done. Took 0.22 sec
Changes found

Started on Nov 15, 2013 11:02:14 AM
Using strategy: Default
[poll] Last Built Revision: Revision 08f48cc5675ae0126256cf24d6ee74c8fc9d7b30 (Origin/develop)
Done. Took 0.2 sec
Changes found

Comme vous pouvez le constater, la révision est la même et correspond à celle de

Git Build Data

Revision: 08f48cc5675ae0126256cf24d6ee74c8fc9d7b30 Origin/develop

Ces emplois se sont déroulés comme prévu jusqu'à il y a quelques jours. Nous savons que rien n’a changé dans notre environnement pour que cela se produise.

J'ai mis à niveau vers la dernière version de Jenkins (1.539) et installé des plug-ins hier soir afin de résoudre ce problème, mais le problème persiste.

17
grahamjgreen

Je viens de croiser Jenkins sans cesse en train de construire en raison d'un changement de SCM, même s'il n'y avait pas de changement, et l'interrogation n'était même pas activée. Cela peut être différent de votre scénario, mais j’ai pensé que cela pourrait quand même aider à partager ma solution.

Notre projet est configuré pour générer à l'aide du spécificateur de branche */integration, comme toutes nos autres versions d'intégration. Cependant, après avoir examiné toutes les branches de notre dépôt git Origin, nous avons constaté que deux branches correspondaient au spécificateur */integration. Il semble qu'un développeur doit avoir poussé par erreur vers une nouvelle branche avec un nom très similaire:

$git branch --remote | grep integration
  Origin/integration
  Origin/origin/integration

La solution qui a résolu ce problème pour moi était de spécifier complètement la branche, en utilisant refs/heads/integration. Je suppose que la suppression de la branche incriminée en double fonctionnerait également, mais en spécifiant la branche exactement, je peux éviter de rencontrer le même problème à l'avenir.

Je ne suis pas sûr que ce soit la même cause de votre problème, mais c'est ce qui a fonctionné pour moi et j'espère que cela fonctionnera pour quelqu'un d'autre dans cette situation.

13
Timothy Scaffidi

Semble reproductible avec le dernier plugin Jenkins GIT version 2.0.

Le passage à la version 1.x peut résoudre le problème. Vous devez également rétablir la configuration de Jenkins à partir d'une sauvegarde plus ancienne, car le plugin GIT version 1.x semble ne pas fonctionner avec le nouveau schéma de configuration 2.0.

Ce fil suggère d'activer "l'interrogation à distance rapide" comme solution de contournement. Dans la version 2.0, cela s'appelle "Interroger de force en utilisant l'espace de travail", je pense.

Référence au numéro de Jenkins: https://issues.jenkins-ci.org/browse/JENKINS-20767

6
user2900083

J'ai rencontré le même problème.

Ce qui a résolu le problème pour moi, c'est de remarquer que le journal de sondage Git ressemblait à ceci:

Started on [date]
Using strategy: Default
[poll] Last Built Revision: Revision [commit#] (Origin/develop)
[...]
Found 12 remote heads on ssh://[...]/repo.git
[poll] Latest remote head revision on refs/heads/feature/foo is: [commit#] - already built by 1414
[poll] Latest remote head revision on refs/heads/feature/bar is: [commit#] - already built by 2365
[poll] Latest remote head revision on refs/heads/feature/baz is: [commit#] - already built by 1489
[poll] Latest remote head revision on refs/heads/feature/qux is: [commit#] - already built by 1413
[poll] Latest remote head revision on refs/heads/develop is: [commit#] - already built by 2368
[poll] Latest remote head revision on refs/heads/master is: [commit#]
Done. Took 0.16 sec
Changes found

Notez que la ligne pour master ne dit pas 'déjà construite'. J'ai construit la branche master et cela a résolu le problème.

1
KevinG

Soyez prudent avec les redirections svn, dans mon cas, j’avais le même cas que Jenkins ne pouvait pas détecter si svn n’avait aucun changement et si le déclenchement avait toujours eu lieu.

Le problème était que dans ma configuration de jenkins svn avait cette URL:

https://xxxx.yyy.es:443/svn/myproject/trunk et sa redirection vers

http://xxxx.yyy.es:8008/svn/myproject/trunk (je ne sais pas pourquoi)

Jenkins devait être configuré avec la dernière URL afin de détecter correctement les modifications de svn.

C'est mon problème résolu.

http://antuansoft.blogspot.com.es/2014/10/jenkins-pool-smc-always-detect-changes.html

0
AntuanSoft

Je vivais le même problème aujourd'hui. Cela a commencé quand j'ai ajouté la tâche de publication "Supprimer l'espace de travail lorsque la construction est terminée". J'ai supprimé cette tâche et cela a semblé résoudre le problème.

0
Lance Held