Définissez un travail Jenkins pour ne pas cloner le dépôt dans SCM

17

J'ai intégré Jenkins à Bitbucket en utilisant le plugin Bitbucket . Selon le Wiki du plugin, un travail donné sera déclenché si le référentiel est défini dans le SCM du travail. Comme vous le savez, si un SCM est défini dans un travail Jenkins, il est cloné au stade de la pré-génération.

Jusqu'ici tout va bien. Cependant, l'objectif principal du travail que je définis n'a rien à voir avec le contenu du référentiel; au lieu de cela, je veux juste que le travail traite la charge utile envoyée par Bitbucket. On pourrait dire que ce n'est pas un gros problème en termes de stockage de cloner un référentiel même si vous n'en avez vraiment pas besoin. Je ne pense pas, ajouter des étapes inutiles, consommer du temps et des ressources n'est pas une bonne pratique.

Donc, la question est: Quelqu'un sait-il comment définir un SCM dans un travail Jenkins mais l'empêcher de cloner le référentiel?

Héctor Valverde Pareja
la source
2
On dirait que vous essayez d'utiliser Jenkins comme un micro-service qui est en quelque sorte hors de portée de Jenkins :). Ne postez pas si vous réussissez, car c'est intéressant.
Travis Thompson
Je n'utilise pas Jenkins comme micro service. Pourquoi dites vous cela? En réalité, tout cela est un travail de contournement: j'utilise un Job Pipeline qui est commun à de nombreux référentiels. Jenkinsfile est dans un référentiel différent. Ainsi, je ne peux pas déclencher le pipeline directement avec le plug-in Bitbucket car il ne le déclenche pas, j'ai donc décidé de créer un "travail proxy" par dépôt et d'envoyer les informations au pipeline en tant que travail en aval. Dans un tel "travail proxy", je n'ai pas besoin de cloner le dépôt, mais il doit être en SCM.
Héctor Valverde Pareja
Il est très difficile à comprendre et vous écrivez plus sur ce qui est impossible que sur ce que vous voulez réellement réaliser.Peut-être pouvez-vous ajouter plus de détails sur ce que vous voulez réellement réaliser et comment vos tâches de proxy s'inscrivent là-dedans?
Michael Le Barbier Grünewald
Je suppose que vous parlez de mon commentaire ci-dessus. Ce n'est qu'une réponse au premier commentaire. Veuillez vous référer à la question principale, il n'y a rien d'autre à ajouter. Ce que je veux que vous réalisiez est très clair: "Empêcher Jenkins de cloner un référentiel pendant la construction".
Héctor Valverde Pareja
1
@ HéctorValverdePareja Bien sûr, mais votre formulation semble hésiter entre A / donner suffisamment de détails pour que tout le monde puisse vérifier si vous êtes dans une situation à problème XY et B / juste pour vous concentrer sur la chose précise que vous voulez atteindre. Je pense (opinion) que vous pourriez supprimer cette hésitation en décrivant assez soigneusement votre problème d'origine et la solution que vous essayez de mettre en œuvre. Mais maintenant que quelqu'un a écrit une réponse, cela pourrait ne plus être aussi important.
Michael Le Barbier Grünewald

Réponses:

18

Oui définitivement. Je fais ça tout le temps. Vous pouvez spécifier des options de configuration pour votre pipeline et l'une d'entre elles le fait skipDefaultCheckout, ce qui fait que le pipeline ignore l'étape par défaut "Déclaratif: Checkout SCM".

L' skipDefaultCheckoutoption est documentée dans Pipeline Syntax et voici un exemple Jenkinsfile montrant comment l'utiliser:

pipeline {
  agent { label 'docker' }
  options {
    skipDefaultCheckout true
  }
  stages {
    stage('commit_stage') {
      steps {
        echo 'sweet stuff here'
      }
    }
  }
}
burnettk
la source
1
Comment le feriez-vous. Cloner manuellement le référentiel dans une étape?
Oz123
2
vous pouvez exécuter checkout scmpour cloner manuellement où vous en avez besoin. voir devops.stackexchange.com/a/1916/2450 .
burnettk
5

Si vous n'utilisez pas le pipeline déclaratif, vous pouvez éviter de retirer de SCM en:

node {
        skipDefaultCheckout()
        //...
}
user3118604
la source
1
Pourriez-vous ajouter un lien vers la documentation et expliquer plus sur skipDefaultCheckout ()?
030
Je ne vois aucune valeur ajoutée par rapport à la réponse existante, c'est juste un «essayer ceci» sans explication et pas une bonne réponse.
Tensibai
Cette réponse est très bien en complément de la réponse acceptée - tout le monde n'utilisera pas le plugin Pipeline déclaratif, donc cela fonctionne pour ceux qui utilisent le plugin procédural.
RichVel
1

Je pense que ce que vous voulez réaliser, c'est traiter une charge utile de webhook dans un travail Jenkins. L'utilisation du plugin bitbucket ne sera pas nécessaire et il est probablement fortement conçu pour cloner le dépôt.

Je crois que cette réponse stackoverflow pourrait vous aider.

Fanch
la source
Veuillez inclure une citation pertinente de cette réponse liée ...
Pierre.Vriens
1
Bienvenue chez DevOps! Bien que cela puisse théoriquement répondre à la question, il serait préférable d'inclure ici les parties essentielles de la réponse et de fournir le lien de référence.
Richard Slater
@RichardSlater Je ne suis pas sûr de la politique sur DevOps, mais d'autres sites font une exception pour les liens en réseau.
poussins
3
@chicks, même les liens StackOverflow sont sujets à la pourriture des liens et en résumant la question, cela donne une indication claire des autres raisons pour lesquelles le répondeur pense que la question est répondue par le lien.
Richard Slater