web-dev-qa-db-fra.com

Comment désactiver la branche dans le pipeline Multibranch avec Jenkinsfile

J'ai un projet de pipeline multi branches à Jenkins. Je souhaite désactiver une branche alors qu'elle est répertoriée dans le projet de pipeline. Je peux ajouter une exception pour dépasser le déclenchement scm. Mais je veux désactiver tout le déclenchement, y compris le déclenchement manuel. Si j'ai utilisé "Désactiver ce projet" sous "Générer des déclencheurs" dans le travail créé pour une branche, cette option n'est pas sélectionnée lorsque je recharge la page (il n'y a pas de boutons d'enregistrement/d'application disponibles pour les pipelines à branche unique). Il ne conserve que la configuration suivante qui a été configurée dans Jenkinsfile.

pipelineTriggers([
    snapshotDependencies(),
]),

Existe-t-il un moyen de spécifier "Désactiver ce projet" dans Jenkinsfile

8
Gayan Viranka

Certes, vous ne pouvez pas désactiver le projet du travail Jenkins car le pipeline multibranches ne donne pas le contrôle pour modifier les paramètres du travail .

Deux façons d'arrêter la construction de votre succursale.

1) Désactiver la branche

Pour contrôler les paramètres, accédez à PROJET (projet dont vous souhaitez modifier les paramètres)> Configurer> Projets (activer les paramètres avancés)

enter image description here

Entrez la branche dans "Exclure la branche" et enregistrez les paramètres.

2) Renommer le fichier Jenkins

Si vous ne contrôlez pas les paramètres du projet, le plus simple est de renommer le fichier Jenkins dans le projet/branche .

enter image description here

Cette configuration définira pour déclencher une construction si une branche/projet contient "Jenkinsfile". Par conséquent, le renommer ne déclenchera pas de génération.

J'espère que cela t'aides..

[~ # ~] mise à jour [~ # ~] : AFAIK, vous ne pouvez pas désactiver le projet depuis Jenkisfile , mais comme solution de contournement, vous pouvez configurer le cronjob comme suit:

properties([pipelineTriggers([cron('')])])

Si la configuration n'est pas disponible dans cron, la construction ne se déclenchera pas du tout.

5
Here_2_learn

Vous pouvez faire quelque chose comme ça:

    stages {
    stage('Build') {
        when { 
            not { 
                branch 'master' 
            }
        }
        steps {
            ...
        }
    }
}

Ce qui n'est pas tout à fait la même chose que de ne pas exécuter le pipeline du tout, mais au moins, il s'exécute très rapidement et ne fait pas vraiment la construction, ce qui est utile pour qu'il ne échoue pas - disons, si vous utilisez un maven/gitflow, où la branche principale ne doit pas être créée plus d'une fois, car le déploiement échouerait ...

2
user2163960