J'ai un pipeline multibranchher avec un Jenkinsfile dans mon repo et je suis capable de disposer de mon flux de travail CI (Build & Unit Tests -> Déployer-dev -> Approbation -> Déployer-QA -> Approbation -> Déployer-prod) sur chaque commit.
Ce que j'aimerais faire, c'est ajouter une analyse de sonarqube sur des constructions nocturnes dans les premiers tests de construction et d'unité.
Étant donné que ma construction est triggerie par gitlab, j'ai défini mes déclencheurs de pipeline comme suit: pour configurer ma construction nocturne, j'ai ajouté p> Mais maintenant, comment exécuter l'étape d'analyse si nous ne construisons que le travail déclenché par l'expression cron la nuit? P> My Scène de construction simplifiée a l'air suivant: P> stage('Build & Tests & Analysis') {
// HERE THE BEGIN SONAR ANALYSIS (to be executed on nightly builds)
bat 'msbuild.exe ...'
bat 'mstest.exe ...'
// HERE THE END SONAR ANALYSIS (to be executed on nightly builds)
}
6 Réponses :
Il y a la façon de créer des informations de déclenchement. Il est décrit ici: https://jenkins.io/doc/pipeline/examples/#get-build -Cause
Il est bon pour vous de vérifier cela aussi: Comment obtenir la cause du flux de travail P>
Très bien La référence pour votre cas est https: //hopstorawpoints.blogspot. COM / 2016/10 / EFFORTURE-NUIT-Build-Build-étapes-with.html . Voici la fonction de cette source qui correspond exactement à votre besoin: p>
Comment utiliser cette méthode / étape d'un pipeline déclaratif i>?
Vous pouvez vérifier la cause de la construction comme: Toutefois, cela nécessite les entrées suivantes dans script-approbation.xml code>: p>
when { expression { return Calendar.instance.get(Calendar.HOUR_OF_DAY) in 0..3 } }
Pour moi, le moyen le plus simple consiste à définir un cron dans la construction de la construction et à vérifier l'heure sur l'étape nocturne à l'aide d'un lorsque l'expression code>:
Malheureusement, cette solution a un inconvénient majeur. Si vous n'avez qu'un seul processeur de construction qui exécute actuellement un travail de construction sur une autre succursale et que vous commettez un changement dans votre succursale, cela créera un nouvel emploi dans la file d'attente toutes les minutes. Je soupçonne que cela remplira la file d'attente sans s'arrêter.
Vous pouvez résoudre ce problème en arrêtant des constructions de fonctionnement du même travail, voir un exemple ici: github.com/cloudbees/jenkins-scripts/blob/master/... Nous utilisons un script groovy comme une bibliothèque partagée et l'appelez au début du pipeline.
J'ai trouvé un moyen, ce qui n'utilise pas "CurrentBuild.rawbuild" qui est restreint. Commencez votre pipeline avec:
stage('Clean') { when { anyOf { environment name: 'clean_build', value: 'Yes' expression { (startedByTimer == true) } } } steps { echo "Cleaning..." ...
Ceci fonctionne dans Pipeline déclarative
when { triggeredBy 'TimerTrigger' }
Merci à Ce Vous pouvez maintenant le faire sans avoir besoin de la Utilisez le non-whitelisted courantebuild.getrawbuild (). getCauses () code> fonction qui peut vous donner des scripts
non autorisés à utiliser la méthode org.jenkinsci.plugins.workflow.support.steps.build.runwrapper getrawbuild code> en fonction de votre configuration: