Консольный скрипт Jenkins разные результаты - PullRequest
0 голосов
/ 08 октября 2019

Я пытаюсь получить последнюю успешную сборку на многоотраслевом конвейерном задании, и только то, к чему я пришел, это

def str = Jenkins.instance.getAllItems() .findAll{ it instanceof Job }.collect{ it.getLastSuccessfulBuild() }.findAll{ it } .sort{ it.timestamp }.grep(~/iOS.*/).last().toString()
println str.substring(str.lastIndexOf('/') + 1).replace('%2F', '_').replace(' #', '_')

, но, к сожалению, это работает только в консоли сценариев Jenkins и выдает разные результаты вКонвейер, какие-нибудь догадки, что может быть не так?

Jenkins версия 2.176.1

Я ожидаю вывод:

feature_INC-777_77

Но получаю:

java.util.GregorianCalendar[time=1566913952011,areFieldsSet=true,areAllFieldsSet=true,lenient=true,zone=sun.util.calendar.ZoneInfo[id="Europe/Moscow",offset=10800000,dstSavings=0,useDaylight=false,transitions=79,lastRule=null],firstDayOfWeek=1,minimalDaysInFirstWeek=1,ERA=1,YEAR=2019,MONTH=7,WEEK_OF_YEAR=35,WEEK_OF_MONTH=5,DAY_OF_MONTH=27,DAY_OF_YEAR=239,DAY_OF_WEEK=3,DAY_OF_WEEK_IN_MONTH=4,AM_PM=1,HOUR=4,HOUR_OF_DAY=16,MINUTE=52,SECOND=32,MILLISECOND=11,ZONE_OFFSET=10800000,DST_OFFSET=0]

Для конвейера вроде:

import jenkins.model.*
import hudson.model.*
import jenkins.*
import hudson.*

def str = Jenkins.instance.getAllItems().findAll{ it instanceof Job }.collect{ it.getLastSuccessfulBuild() }.findAll{ it }.sort{it.timestamp}

println str

Может кто-нибудь помочь с этим, пожалуйста?

1 Ответ

0 голосов
/ 08 октября 2019

ах, это прекрасное сочетание + Дженкинс ...

поместите свое утверждение в метод и добавьте аннотацию сверху @ NonCPS

Пока у меня будут проблемы, чтобы получить четкое полное объяснениеКороче говоря - Дженкинс проталкивает весь код в вашем скриптовом конвейере через сверхсложный (как для меня) набор преобразований CPS - https://github.com/cloudbees/groovy-cps/, который может или не может правильно конвертировать Groovy API. Правило большого пальца - при использовании замыканий - используйте аннотацию @NonCPS, иначе у вас будет куча странных ошибок, которые трудно отладить.

больше информации:

https://wiki.jenkins.io/display/JENKINS/Pipeline+CPS+method+mismatches

https://github.com/jenkinsci/workflow-cps-plugin

Каков эффект @NonCPS в сценарии конвейера Jenkins

...