Skip to content

Instantly share code, notes, and snippets.

@doudou
Last active March 9, 2022 23:42
Show Gist options
  • Save doudou/df0004198642e9338723d061e4f6c76d to your computer and use it in GitHub Desktop.
Save doudou/df0004198642e9338723d061e4f6c76d to your computer and use it in GitHub Desktop.
Failing jenkins pipeline
import java.nio.file.Paths
def jobName = "rock-master-base-cmake"
def jobPackageName = "base/cmake"
def upstreamJobNames = []
def upstreamPackageNames = []
@NonCPS
def isUpstreamOK(jobName, buildId)
{
def job = Jenkins.instance.getItem(jobName)
if (!job)
{
error("cannot find upstream job ${jobName}")
}
def build = job.getBuild(buildId.toString())
if (!build)
{
error("cannot find build ${buildId} of job ${jobName}")
}
def result = build.getResult()
if (result)
{
if (result == Result.SUCCESS || result == Result.UNSTABLE)
{
return 'OK'
}
else
{
return 'FAILED'
}
}
else
{
return 'IN_PROGRESS'
}
}
@NonCPS
def getTriggerBuild(currentBuild)
{
def triggerBuild = currentBuild.rawBuild.getCause(hudson.model.Cause$UpstreamCause)
if (triggerBuild) {
return [triggerBuild.getUpstreamProject(), triggerBuild.getUpstreamBuild()]
}
return null
}
@NonCPS
def findBuildTriggeredBy(job, triggerJob, triggerBuild)
{
def jobBuilds = job.getBuilds()
for (buildIndex = 0; buildIndex < jobBuilds.size(); ++buildIndex)
{
def build = jobBuilds[buildIndex]
def buildCause = build.getCause(hudson.model.Cause$UpstreamCause)
if (buildCause)
{
def causeJob = buildCause.getUpstreamProject()
def causeBuild = buildCause.getUpstreamBuild()
if (causeJob == triggerJob && causeBuild == triggerBuild)
{
return build.getNumber()
}
}
}
return null
}
def getUpstreamBuilds(upstreamJobNames, triggerJob, triggerBuild)
{
def upstreamBuilds = []
// Iterate list -- NOTE: we cannot use groovy style or even modern java style iteration
for (jobIndex = 0; jobIndex < upstreamJobNames.size(); ++jobIndex)
{
def jobName = upstreamJobNames[jobIndex]
if (jobName == triggerJob)
{
echo "upstream build: ${jobName}#${triggerBuild}"
upstreamBuilds << [jobName, triggerBuild]
}
else
{
def job = Jenkins.instance.getItem(jobName)
if (!job)
{
echo "${jobName} does not exist yet, aborting"
return null
}
def matchingBuild = findBuildTriggeredBy(job, triggerJob, triggerBuild)
if (!matchingBuild)
{
if (triggerJob) {
echo "no build from ${jobName} has been triggered by ${triggerJob}#${triggerBuild}, using last successful build"
}
else {
echo "manual build trigger, using last successful build for ${jobName}"
}
if (job.getLastSuccessfulBuild())
matchingBuild = job.getLastSuccessfulBuild().getNumber()
else
{
echo "${jobName} has no successful build, aborting"
return null
}
}
echo "upstream build: ${jobName}#${matchingBuild}"
upstreamBuilds << [jobName, matchingBuild]
}
}
return upstreamBuilds
}
def waitForUpstreamBuilds(upstreamBuilds)
{
// Iterate list -- NOTE: we cannot use groovy style or even modern java style iteration
for (upstreamBuildIndex = 0; upstreamBuildIndex < upstreamBuilds.size(); ++upstreamBuildIndex)
{
def entry = upstreamBuilds[upstreamBuildIndex]
def upstreamJobName = entry[0]
def upstreamBuildId = entry[1]
while (true)
{
def status = isUpstreamOK(upstreamJobName, upstreamBuildId)
if (status == 'OK')
{
break
}
else if (status == 'IN_PROGRESS')
{
echo "waiting for job ${upstreamJobName}#${upstreamBuildId} to finish"
sleep 10
}
else if (status == 'FAILED')
{
echo "${upstreamJobName}#${upstreamBuildId} did not finish successfully, aborting this build"
return false
}
}
}
return true
}
def makeUpstreamArtifactImporters(autoproj, fullWorkspaceDir, upstreamDir,
upstreamJobNames, upstreamPrefixes, upstreamBuilds)
{
def fullUpstreamDir = "${fullWorkspaceDir}/${upstreamDir}"
dir(upstreamDir) { deleteDir() }
def upstreamArtifactImporters = [:]
for (jobIndex = 0; jobIndex < upstreamJobNames.size(); ++jobIndex)
{
def jobName = upstreamJobNames[jobIndex]
def fullPrefix = upstreamPrefixes[jobIndex]
def buildId = upstreamBuilds[jobIndex][1]
def relativePrefix = Paths.get(fullWorkspaceDir).relativize(Paths.get(fullPrefix)).toString()
upstreamArtifactImporters[jobName] = {
dir(upstreamDir) {
step ([$class: 'CopyArtifact',
projectName: jobName,
filter: "${jobName}-prefix.zip",
selector: [$class: 'SpecificBuildSelector', buildNumber: buildId.toString()]])
dir(jobName) {
unzip zipFile: "${fullUpstreamDir}/${jobName}-prefix.zip"
sh "${autoproj} jenkins relativize ./ '@WORKSPACE_ROOT@' '${fullWorkspaceDir}'"
}
}
dir(relativePrefix) {
sh "rsync '${fullUpstreamDir}/${jobName}/' './' --delete --recursive --safe-links --perms --checksum"
}
}
}
return upstreamArtifactImporters
}
def installUpstreamArtifacts(autoproj, fullWorkspaceDir,
jobPackageName, jobPackagePrefix,
upstreamJobNames, upstreamPackagePrefixes, upstreamBuilds)
{
def upstreamDir = "artifacts/upstream"
parallel(makeUpstreamArtifactImporters(
autoproj, fullWorkspaceDir, upstreamDir,
upstreamJobNames, upstreamPackagePrefixes, upstreamBuilds)
)
// We don't need the upstream artifacts anymore, clear some disk space
dir(upstreamDir) { deleteDir() }
if (fileExists("lastPrefix")) {
sh "mv lastPrefix '${jobPackagePrefix}'"
}
return null
}
def handleDownstream(autoproj, fullWorkspaceDir,
jobName, jobPackagePrefix, artifactGlob)
{
def downstreamDir = "artifacts/downstream"
def targetArtifactPath = "${fullWorkspaceDir}/${downstreamDir}/${jobName}-prefix.zip"
dir(downstreamDir) { deleteDir() }
dir("${downstreamDir}/${jobName}") {
sh "rsync '${jobPackagePrefix}/' './' -a --delete"
sh "${autoproj} jenkins relativize ./ '${fullWorkspaceDir}' '@WORKSPACE_ROOT@'"
zip zipFile: targetArtifactPath, glob: artifactGlob
}
dir(downstreamDir) {
archiveArtifacts artifacts: "*.zip"
deleteDir()
}
return null
}
def triggerDownstreamJobs(jobNames) {
for (jobIndex = 0; jobIndex < jobNames.size(); ++jobIndex)
{
build job: "rock-master-" + jobNames[jobIndex], wait: false
}
return null
}
def triggeredByUpstream = false
def upstreamBuilds = []
stage('waiting for upstream jobs to finish') {
def triggerBuild = getTriggerBuild(currentBuild)
if (triggerBuild) {
triggeredByUpstream = true;
}
else {
triggeredByUpstream = false;
triggerBuild = [null, null];
}
upstreamBuilds = getUpstreamBuilds(upstreamJobNames, triggerBuild[0], triggerBuild[1])
if (upstreamBuilds == null)
{
currentBuild.result = 'NOT_BUILT';
return;
}
if (!waitForUpstreamBuilds(upstreamBuilds)) {
currentBuild.result = 'NOT_BUILT';
return
}
}
if (currentBuild.result == 'NOT_BUILT')
{
return;
}
node(label: 'autoproj-jenkins') {
def fullWorkspaceDir = pwd()
def autoproj = "${fullWorkspaceDir}/dev/.autoproj/bin/autoproj"
dir('dev/install/log') { deleteDir() }
def jobPackagePrefix = null
def upstreamPackagePrefixes = null
stage('bootstrap') {
env.HOME = fullWorkspaceDir
sh 'cp -f "/opt/autoproj/bin/autoproj_install" ./autoproj_install'
def gemfile = "source \"https://rubygems.org\"\ngem 'autoproj', path: '/opt/autoproj'\ngem 'autobuild', path: '/opt/autobuild'\ngem 'autoproj-jenkins', path: '/opt/autoproj-jenkins'\n"
writeFile file: 'Gemfile', text: gemfile
def user_seed_config = "osdeps_mode: all\nGITORIOUS: http,ssh\nGITORIOUS_ROOT: https://git.gitorious.org\nGITORIOUS_PUSH_ROOT: 'git@gitorious.org:'\nGITORIOUS_PRIVATE_ROOT: 'git@gitorious.org:'\nGITHUB: http,ssh\nGITHUB_ROOT: https://github.com\nGITHUB_PUSH_ROOT: 'git@github.com:'\nGITHUB_PRIVATE_ROOT: 'git@github.com:'\nROCK_SELECTED_FLAVOR: master\nROCK_FLAVOR: master\nROCK_BRANCH: master\nUSE_OCL: false\nrtt_target: gnulinux\nrtt_corba_implementation: omniorb\ntypelib_cxx_loader: castxml\ncxx11: false\n"
writeFile file: 'user_seed.yml', text: user_seed_config
def config = "osdeps_mode: 'all'\nseparate_prefixes: true\nautoproj_test_utility_default: true\nimport_log_enabled: false\njenkins_ci: true\nmanifest_source:\n :type: git\n :url: https://github.com/rock-core/buildconf\n :branch: ci\n\nosdeps_mode: all\nGITORIOUS: http,ssh\nGITORIOUS_ROOT: https://git.gitorious.org\nGITORIOUS_PUSH_ROOT: 'git@gitorious.org:'\nGITORIOUS_PRIVATE_ROOT: 'git@gitorious.org:'\nGITHUB: http,ssh\nGITHUB_ROOT: https://github.com\nGITHUB_PUSH_ROOT: 'git@github.com:'\nGITHUB_PRIVATE_ROOT: 'git@github.com:'\nROCK_SELECTED_FLAVOR: master\nROCK_FLAVOR: master\nROCK_BRANCH: master\nUSE_OCL: false\nrtt_target: gnulinux\nrtt_corba_implementation: omniorb\ntypelib_cxx_loader: castxml\ncxx11: false\n\n"
writeFile file: 'seed.yml', text: config
dir('dev') {
sh "ruby ../autoproj_install --skip-stage2 --seed-config=../seed.yml --gems-path=${env.JENKINS_HOME}/cache/gems --gemfile=../Gemfile"
if (fileExists('autoproj')) {
dir('autoproj') { deleteDir() }
}
sh "AUTOPROJ_BOOTSTRAP_IGNORE_NONEMPTY_DIR=1 ruby .autoproj/bin/autoproj bootstrap 'git' 'https://github.com/rock-core/buildconf' 'branch=ci'"
sh ".autoproj/bin/aup autoproj/ --force-reset --auto-exclude"
}
env.AUTOPROJ_CURRENT_ROOT = "${fullWorkspaceDir}/dev"
def jenkins_dependency_overrides = "setup_package(\"base/cmake\") do |pkg|\n \nend\n"
writeFile file: 'dev/autoproj/overrides.d/99_jenkins_dependency_overrides.rb',
text: jenkins_dependency_overrides
def packagePrefixes = sh(script: "${autoproj} locate --no-cache --prefix '${jobPackageName}' ${upstreamPackageNames.join(" ")}", returnStdout: true).
split("\n")
jobPackagePrefix = packagePrefixes[0]
upstreamPackagePrefixes = packagePrefixes.tail()
}
stage('install upstream artifacts') {
installUpstreamArtifacts(autoproj, fullWorkspaceDir,
jobPackageName, jobPackagePrefix,
upstreamJobNames, upstreamPackagePrefixes, upstreamBuilds)
}
dir('dev') {
stage('prepare build') {
dir('base/cmake') {
if (fileExists('.git')) {
sh "${autoproj} unpatch ."
}
git poll: true, url: 'https://github.com/rock-core/base-cmake.git', push_to: 'git@github.com:/rock-core/base-cmake.git', interactive: 'false', retry_count: '10', repository_id: 'github:/rock-core/base-cmake.git', branch: 'master'
sh "${autoproj} patch ."
}
sh "${autoproj} test disable 'base/cmake'"
sh "${autoproj} osdeps 'base/cmake' 'pkg-config'"
}
stage('build') {
try {
sh "${autoproj} build --force --deps=f 'base/cmake' -p1"
}
catch(err) {
archive includes: 'install/base/cmake/log/base/cmake-*.log'
archive includes: 'install/log/autoproj-osdeps.log'
throw(err)
}
archive includes: 'install/base/cmake/log/base/cmake-*.log'
archive includes: 'install/log/autoproj-osdeps.log'
}
}
stage('handle downstream') {
handleDownstream(autoproj, fullWorkspaceDir,
jobName, jobPackagePrefix, "**/*")
if (! triggeredByUpstream) {
downstream_jobs = ["base-logging",
"tools-orogen_metadata",
"gui-vizkit",
"gui-vizkit3d",
"base-console_bridge",
"base-types",
"base-templates-cmake_lib",
"planning-exploration",
"drivers-gps_base",
"gui-vizkit3d_pcl",
"perception-apriltags",
"slam-threed_odometry",
"gui-pose3d_editor",
"control-visp",
"slam-uwv_kalman_filters",
"perception-depth_map_preprocessing",
"slam-gtsam",
"drivers-imu_myahrs_plus",
"perception-projection",
"gui-qcam_calib",
"perception-viso2",
"planning-randward",
"planning-arvand_herd",
"planning-fd_cedalion",
"planning-fd_uniform",
"planning-bfsf",
"planning-fast_downward",
"slam-pose_estimation",
"slam-gmapping",
"drivers-dps_desertstar_ssp1",
"external-aruco",
"external-snap",
"external-gexf",
"control-robot_frames",
"control-kdl_conversions",
"data_processing-openann",
"data_processing-type_to_vector",
"drivers-video_capture_vlc",
"drivers-video_streamer_vlc",
"control-reflexxes",
"control-kdl",
"perception-libelas",
"planning-motion_planning_libraries",
"slam-hogman",
"drivers-orogen-imu_myahrs_plus",
"planning-orogen-exploration",
"drivers-orogen-imu_an_spatial",
"drivers-orogen-gps_base",
"slam-orogen-pcl",
"perception-orogen-apriltags",
"control-orogen-visp",
"control-orogen-uwv_dynamic_model",
"slam-orogen-uwv_kalman_filters",
"perception-orogen-depth_map_preprocessing",
"slam-orogen-simple_pose_integrator",
"control-orogen-robot_frames",
"drivers-orogen-kinect2",
"slam-orogen-threed_odometry",
"slam-orogen-gmapping",
"perception-orogen-projection",
"perception-orogen-virtual_view",
"control-orogen-cart_ctrl_wdls",
"control-orogen-auv_raw_command_converter",
"slam-orogen-north_seeker",
"slam-orogen-local_mapper",
"slam-orogen-localization",
"slam-orogen-pose_estimation",
"planning-orogen-traversability",
"drivers-orogen-dps_desertstar_ssp1",
"planning-orogen-motion_planning_libraries",
"tools-configmaps",
"build_tests-cmake-plain_package",
"build_tests-cmake-plain_cxx11_package",
"build_tests-cmake-another_plain_package",
"build_tests-cmake-headers_only_library",
"build_tests-cmake-cxx11_headers_only_library",
"build_tests-cmake-rock_activate_cxx11",
"build_tests-cmake-rock_library_add_public_dependencies",
"build_tests-cmake-rock_library_deps_pkgconfig",
"build_tests-cmake-rock_library_no_public_dependencies",
"build_tests-cmake-rock_library_make_all_dependencies_public",
"build_tests-cmake-var_ROCK_PUBLIC_CXX_STANDARD",
"build_tests-orogen-cxx11_dependency",
"build_tests-orogen-ro_ptr_import",
"build_tests-orogen-use_intermediate_type_on_interface",
"base-numeric",
"drivers-iodrivers_base",
"gui-control_ui",
"slam-envire",
"base-orogen-std",
"tools-logger",
"base-orogen-types",
"drivers-orogen-aggregator",
"drivers-orogen-transformer",
"drivers-orogen-iodrivers_base",
"multiagent-orogen-fipa_services",
"control-orogen-trajectory_generation",
"perception-orogen-video_streamer",
"perception-orogen-viso2",
"control-orogen-torque_estimator",
"slam-orogen-terrain_estimator",
"slam-orogen-eslam",
"planning-orogen-pddl_planner",
"planning-orogen-simple_path_planner",
"planning-orogen-heading_calculator",
"drivers-orogen-phidgets",
"drivers-orogen-imu_stim300",
"drivers-orogen-imu_imar",
"drivers-orogen-alt_imagenex",
"drivers-orogen-ctd_seabird",
"drivers-orogen-mbeam_imagenex",
"drivers-orogen-pressure_paroscientific",
"drivers-orogen-ucm_schilling",
"drivers-orogen-act_schilling",
"drivers-orogen-phins_ixsea",
"drivers-orogen-velodyne_lidar",
"drivers-orogen-tofcamera_mesasr",
"drivers-orogen-camera_aravis",
"drivers-orogen-kinect",
"drivers-orogen-video_streamer_vlc",
"simulation-orogen-imumodel",
"drivers-orogen-servo_dynamixel",
"control-orogen-motor_controller",
"control-orogen-joint_dispatcher",
"data_processing-orogen-statistics",
"data_processing-orogen-type_to_vector",
"control-orogen-auv_rel_pos_controller",
"control-orogen-auv_control",
"control-orogen-kdl",
"drivers-orogen-ptu_directedperception",
"drivers-orogen-aria",
"control-orogen-trajectory_follower",
"control-orogen-waypoint_navigation",
"control-orogen-skid4_control",
"drivers-orogen-canbus",
"drivers-orogen-gps",
"drivers-orogen-hokuyo",
"drivers-orogen-xsens_imu",
"drivers-orogen-dynamixel",
"drivers-orogen-controldev",
"drivers-orogen-parport",
"drivers-orogen-wifimon",
"drivers-orogen-camera_base",
"drivers-orogen-camera_prosilica",
"drivers-orogen-fog_kvh",
"drivers-orogen-dvl_teledyne",
"drivers-orogen-camera_usb",
"drivers-orogen-camera_firewire",
"drivers-orogen-vicon",
"drivers-orogen-camera_v4l",
"drivers-orogen-sonar_tritech",
"drivers-orogen-laserscanner_sick",
"drivers-orogen-qualisys",
"drivers-orogen-laser_filter",
"drivers-orogen-taskmon",
"slam-orogen-orientation_estimator",
"slam-orogen-envire",
"slam-orogen-graph_slam",
"slam-orogen-odometry",
"slam-orogen-tilt_scan",
"perception-orogen-image_preprocessing",
"perception-orogen-stereo",
"planning-orogen-corridor_navigation",
"planning-orogen-corridor_planner",
"tutorials-orogen-tut_follower",
"tutorials-orogen-tut_brownian",
"tutorials-orogen-tut_deployment",
"tutorials-orogen-rock_tutorial",
"tutorials-orogen-tut_sensor",
"tutorials-orogen-message_producer",
"tutorials-orogen-message_consumer",
"simulation-orogen-mars",
"simulation-orogen-mars_addons",
"build_tests-orogen-ro_ptr",
"gui-robot_model",
"gui-point_cloud",
"slam-eslam",
"gui-vizkit_3d_plugins",
"drivers-velodyne_lidar",
"drivers-laser_filter",
"planning-corridor_planner",
"planning-vfh_star",
"slam-odometry",
"tutorials-rock_tutorial",
"tutorials-vizkit3d_plugin_tutorial",
"tools-class_loader",
"control-urdfdom",
"simulation-mars-smurf_loader",
"simulation-smurf_parser",
"tools-pocolog_cpp",
"tools-service_discovery",
"drivers-aggregator",
"perception-jpeg_conversion",
"perception-frame_helper",
"gui-rock_widget_collection",
"control-uwv_dynamic_model",
"control-ruby_sdformat",
"planning-lama",
"planning-pddl_planner",
"control-hysteresis_model",
"slam-terrain_estimator",
"gui-map2d",
"drivers-tofcamera_mesasr",
"drivers-imu_stim300",
"drivers-imu_imar",
"drivers-alt_imagenex",
"drivers-ctd_seabird",
"drivers-mbeam_imagenex",
"drivers-pressure_paroscientific",
"drivers-ucm_schilling",
"drivers-act_schilling",
"drivers-phins_ixsea",
"simulation-imumodel",
"control-kdl_parser",
"control-joint_dispatcher",
"drivers-ptu_directedperception",
"control-motor_controller",
"control-trajectory_follower",
"control-waypoint_navigation",
"drivers-base_schilling",
"drivers-canbus",
"drivers-mb500",
"drivers-hokuyo",
"drivers-xsens_imu",
"drivers-controldev",
"drivers-camera_interface",
"drivers-dvl_teledyne",
"drivers-camera_firewire",
"drivers-vicon",
"drivers-qualisys",
"drivers-sonar_tritech",
"perception-stereo",
"planning-nav_graph_search",
"planning-corridor_navigation",
"slam-pose_ekf",
"slam-quater_ikf",
"slam-quater_ukf",
"slam-graph_slam",
"multiagent-fipa_acl",
"tutorials-message_driver",
"tutorials-designer_widget_tutorial",
"simulation-mars-interfaces",
"simulation-mars-sim",
"control-urdfdom_headers",
"simulation-mars-common-gui-config_map_gui",
"simulation-mars-entity_generation-primitives",
"simulation-mars-plugins-SkyDomePlugin",
"simulation-mars-common-graphics-osg_material_manager",
"simulation-mars-common-graphics-osg_terrain",
"simulation-mars-common-gui-data_broker_plotter2",
"simulation-mars-entity_generation-entity_factory",
"simulation-mars-entity_generation-smurf",
"simulation-mars-plugins-Text3D",
"simulation-mars-common-utils",
"simulation-mars-graphics",
"simulation-mars-app",
"simulation-mars-viz",
"simulation-mars-scene_loader",
"drivers-dynamixel",
"drivers-fog_kvh",
"drivers-iCharger",
"drivers-laserscanner_sick",
"tools-orocos.rb",
"tools-syskit",
"drivers-actuator_dispatcher",
"bundles-rock",
"bundles-rock_multiagent",
"bundles-tutorials",
"multiagent-fipa_services",
"drivers-transformer",
"drivers-camera_aravis",
"drivers-camera_prosilica",
"drivers-camera_usb",
"planning-simple_path_planner",
"simulation-mars-plugins-entity_view",
"simulation-mars-plugins-TerrainPlugin",
"simulation-mars-plugins-PythonMars",
"simulation-mars-gui",
"simulation-mars-plugins-connexion_plugin",
"simulation-mars-plugins-constraint_plugin",
"simulation-mars-common-cfg_manager",
"simulation-mars-common-data_broker",
"tools-rest_api",
"tools-telemetry",
"base-scripts",
"base-templates-bundle",
"bundles-rock_auv",
"bundles-tutorials_scripts",
"simulation-mars-common-gui-gui_app",
"simulation-mars-common-gui-main_gui",
"simulation-mars-common-gui-cfg_manager_gui",
"simulation-mars-common-gui-lib_manager_gui",
"simulation-mars-common-gui-log_console",
"simulation-mars-common-gui-data_broker_gui",
"simulation-mars-common-gui-data_broker_plotter",
"gui-rock_webapp"]
triggerDownstreamJobs(downstream_jobs)
}
}
stage('tests') {
def test_timestamp_path = "${fullWorkspaceDir}/test-timestamp"
touch file: test_timestamp_path
def test_output_path = "${fullWorkspaceDir}/test"
def autoproj_test_failed = false
dir('dev')
{
try {
sh "${autoproj} test enable 'base/cmake'"
sh "${autoproj} osdeps 'base/cmake'"
sh "${autoproj} build --deps=f 'base/cmake' -p1"
sh "${autoproj} test -p=1 'base/cmake'"
}
catch(err) { autoproj_test_failed = true }
try { sh "${autoproj} jenkins postprocess-tests --after=${test_timestamp_path} ${test_output_path} 'base/cmake'" }
catch(err) { autoproj_test_failed = true }
}
try { junit allowEmptyResults: true, keepLongStdio: true, testResults: "test/*.xml" }
catch(err) { autoproj_test_failed = true }
if (autoproj_test_failed)
{
currentBuild.result = 'UNSTABLE'
}
}
// Move the current package prefix to a separate folder, to ensure that
// other workspaces don't have access to it. It's not strictly required,
// but is a good sanity check
dir('lastPrefix') { deleteDir() }
sh "mv '${jobPackagePrefix}' lastPrefix"
}
Started by user admin
org.codehaus.groovy.control.MultipleCompilationErrorsException: startup failed:
General error during class generation: 296
java.lang.ArrayIndexOutOfBoundsException: 296
at org.codehaus.groovy.classgen.asm.CallSiteWriter.getCreateArraySignature(CallSiteWriter.java:58)
at org.codehaus.groovy.classgen.asm.CallSiteWriter.makeCallSite(CallSiteWriter.java:317)
at org.codehaus.groovy.classgen.asm.InvocationWriter.makeCachedCall(InvocationWriter.java:307)
at org.codehaus.groovy.classgen.asm.InvocationWriter.makeCall(InvocationWriter.java:397)
at org.codehaus.groovy.classgen.asm.InvocationWriter.makeCall(InvocationWriter.java:104)
at org.codehaus.groovy.classgen.asm.InvocationWriter.makeInvokeMethodCall(InvocationWriter.java:88)
at org.codehaus.groovy.classgen.asm.InvocationWriter.writeInvokeMethod(InvocationWriter.java:464)
at org.codehaus.groovy.classgen.AsmClassGenerator.visitMethodCallExpression(AsmClassGenerator.java:771)
at org.codehaus.groovy.ast.expr.MethodCallExpression.visit(MethodCallExpression.java:66)
at org.codehaus.groovy.classgen.asm.CallSiteWriter.makeCallSite(CallSiteWriter.java:303)
at org.codehaus.groovy.classgen.asm.InvocationWriter.makeCachedCall(InvocationWriter.java:307)
at org.codehaus.groovy.classgen.asm.InvocationWriter.makeCall(InvocationWriter.java:397)
at org.codehaus.groovy.classgen.asm.InvocationWriter.makeCall(InvocationWriter.java:104)
at org.codehaus.groovy.classgen.asm.InvocationWriter.makeInvokeMethodCall(InvocationWriter.java:88)
at org.codehaus.groovy.classgen.asm.InvocationWriter.writeInvokeMethod(InvocationWriter.java:464)
at org.codehaus.groovy.classgen.AsmClassGenerator.visitMethodCallExpression(AsmClassGenerator.java:771)
at org.codehaus.groovy.ast.expr.MethodCallExpression.visit(MethodCallExpression.java:66)
at org.codehaus.groovy.classgen.asm.CallSiteWriter.makeCallSite(CallSiteWriter.java:303)
at org.codehaus.groovy.classgen.asm.InvocationWriter.makeCachedCall(InvocationWriter.java:307)
at org.codehaus.groovy.classgen.asm.InvocationWriter.makeCall(InvocationWriter.java:397)
at org.codehaus.groovy.classgen.asm.InvocationWriter.makeCall(InvocationWriter.java:104)
at org.codehaus.groovy.classgen.asm.InvocationWriter.makeInvokeMethodCall(InvocationWriter.java:88)
at org.codehaus.groovy.classgen.asm.InvocationWriter.writeInvokeMethod(InvocationWriter.java:464)
at org.codehaus.groovy.classgen.AsmClassGenerator.visitMethodCallExpression(AsmClassGenerator.java:771)
at org.codehaus.groovy.ast.expr.MethodCallExpression.visit(MethodCallExpression.java:66)
at org.codehaus.groovy.classgen.asm.CallSiteWriter.makeCallSite(CallSiteWriter.java:303)
at org.codehaus.groovy.classgen.asm.InvocationWriter.makeCachedCall(InvocationWriter.java:307)
at org.codehaus.groovy.classgen.asm.InvocationWriter.makeCall(InvocationWriter.java:397)
at org.codehaus.groovy.classgen.asm.InvocationWriter.makeCall(InvocationWriter.java:104)
at org.codehaus.groovy.classgen.asm.InvocationWriter.makeInvokeMethodCall(InvocationWriter.java:88)
at org.codehaus.groovy.classgen.asm.InvocationWriter.writeInvokeMethod(InvocationWriter.java:464)
at org.codehaus.groovy.classgen.AsmClassGenerator.visitMethodCallExpression(AsmClassGenerator.java:771)
at org.codehaus.groovy.ast.expr.MethodCallExpression.visit(MethodCallExpression.java:66)
at org.codehaus.groovy.classgen.asm.CallSiteWriter.makeCallSite(CallSiteWriter.java:303)
at org.codehaus.groovy.classgen.asm.InvocationWriter.makeCachedCall(InvocationWriter.java:307)
at org.codehaus.groovy.classgen.asm.InvocationWriter.makeCall(InvocationWriter.java:397)
at org.codehaus.groovy.classgen.asm.InvocationWriter.makeCall(InvocationWriter.java:104)
at org.codehaus.groovy.classgen.asm.InvocationWriter.makeInvokeMethodCall(InvocationWriter.java:88)
at org.codehaus.groovy.classgen.asm.InvocationWriter.writeInvokeMethod(InvocationWriter.java:464)
at org.codehaus.groovy.classgen.AsmClassGenerator.visitMethodCallExpression(AsmClassGenerator.java:771)
at org.codehaus.groovy.ast.expr.MethodCallExpression.visit(MethodCallExpression.java:66)
at org.codehaus.groovy.classgen.asm.CallSiteWriter.makeCallSite(CallSiteWriter.java:303)
at org.codehaus.groovy.classgen.asm.InvocationWriter.makeCachedCall(InvocationWriter.java:307)
at org.codehaus.groovy.classgen.asm.InvocationWriter.makeCall(InvocationWriter.java:397)
at org.codehaus.groovy.classgen.asm.InvocationWriter.makeCall(InvocationWriter.java:104)
at org.codehaus.groovy.classgen.asm.InvocationWriter.makeInvokeMethodCall(InvocationWriter.java:88)
at org.codehaus.groovy.classgen.asm.InvocationWriter.writeInvokeMethod(InvocationWriter.java:464)
at org.codehaus.groovy.classgen.AsmClassGenerator.visitMethodCallExpression(AsmClassGenerator.java:771)
at org.codehaus.groovy.ast.expr.MethodCallExpression.visit(MethodCallExpression.java:66)
at org.codehaus.groovy.classgen.asm.CallSiteWriter.makeCallSite(CallSiteWriter.java:303)
at org.codehaus.groovy.classgen.asm.InvocationWriter.makeCachedCall(InvocationWriter.java:307)
at org.codehaus.groovy.classgen.asm.InvocationWriter.makeCall(InvocationWriter.java:397)
at org.codehaus.groovy.classgen.asm.InvocationWriter.makeCall(InvocationWriter.java:104)
at org.codehaus.groovy.classgen.asm.InvocationWriter.makeInvokeMethodCall(InvocationWriter.java:88)
at org.codehaus.groovy.classgen.asm.InvocationWriter.writeInvokeMethod(InvocationWriter.java:464)
at org.codehaus.groovy.classgen.AsmClassGenerator.visitMethodCallExpression(AsmClassGenerator.java:771)
at org.codehaus.groovy.ast.expr.MethodCallExpression.visit(MethodCallExpression.java:66)
at org.codehaus.groovy.classgen.asm.CallSiteWriter.makeCallSite(CallSiteWriter.java:303)
at org.codehaus.groovy.classgen.asm.InvocationWriter.makeCachedCall(InvocationWriter.java:307)
at org.codehaus.groovy.classgen.asm.InvocationWriter.makeCall(InvocationWriter.java:397)
at org.codehaus.groovy.classgen.asm.InvocationWriter.makeCall(InvocationWriter.java:104)
at org.codehaus.groovy.classgen.asm.InvocationWriter.makeInvokeMethodCall(InvocationWriter.java:88)
at org.codehaus.groovy.classgen.asm.InvocationWriter.writeInvokeMethod(InvocationWriter.java:464)
at org.codehaus.groovy.classgen.AsmClassGenerator.visitMethodCallExpression(AsmClassGenerator.java:771)
at org.codehaus.groovy.ast.expr.MethodCallExpression.visit(MethodCallExpression.java:66)
at org.codehaus.groovy.classgen.asm.CallSiteWriter.makeCallSite(CallSiteWriter.java:303)
at org.codehaus.groovy.classgen.asm.InvocationWriter.makeCachedCall(InvocationWriter.java:307)
at org.codehaus.groovy.classgen.asm.InvocationWriter.makeCall(InvocationWriter.java:397)
at org.codehaus.groovy.classgen.asm.InvocationWriter.makeCall(InvocationWriter.java:104)
at org.codehaus.groovy.classgen.asm.InvocationWriter.makeInvokeMethodCall(InvocationWriter.java:88)
at org.codehaus.groovy.classgen.asm.InvocationWriter.writeInvokeMethod(InvocationWriter.java:464)
at org.codehaus.groovy.classgen.AsmClassGenerator.visitMethodCallExpression(AsmClassGenerator.java:771)
at org.codehaus.groovy.ast.expr.MethodCallExpression.visit(MethodCallExpression.java:66)
at org.codehaus.groovy.classgen.asm.CallSiteWriter.makeCallSite(CallSiteWriter.java:303)
at org.codehaus.groovy.classgen.asm.InvocationWriter.makeCachedCall(InvocationWriter.java:307)
at org.codehaus.groovy.classgen.asm.InvocationWriter.makeCall(InvocationWriter.java:397)
at org.codehaus.groovy.classgen.asm.InvocationWriter.makeCall(InvocationWriter.java:104)
at org.codehaus.groovy.classgen.asm.InvocationWriter.makeInvokeMethodCall(InvocationWriter.java:88)
at org.codehaus.groovy.classgen.asm.InvocationWriter.writeInvokeMethod(InvocationWriter.java:464)
at org.codehaus.groovy.classgen.AsmClassGenerator.visitMethodCallExpression(AsmClassGenerator.java:771)
at org.codehaus.groovy.ast.expr.MethodCallExpression.visit(MethodCallExpression.java:66)
at org.codehaus.groovy.classgen.asm.CallSiteWriter.makeCallSite(CallSiteWriter.java:303)
at org.codehaus.groovy.classgen.asm.InvocationWriter.makeCachedCall(InvocationWriter.java:307)
at org.codehaus.groovy.classgen.asm.InvocationWriter.makeCall(InvocationWriter.java:397)
at org.codehaus.groovy.classgen.asm.InvocationWriter.makeCall(InvocationWriter.java:104)
at org.codehaus.groovy.classgen.asm.InvocationWriter.makeInvokeMethodCall(InvocationWriter.java:88)
at org.codehaus.groovy.classgen.asm.InvocationWriter.writeInvokeMethod(InvocationWriter.java:464)
at org.codehaus.groovy.classgen.AsmClassGenerator.visitMethodCallExpression(AsmClassGenerator.java:771)
at org.codehaus.groovy.ast.expr.MethodCallExpression.visit(MethodCallExpression.java:66)
at org.codehaus.groovy.classgen.asm.CallSiteWriter.makeCallSite(CallSiteWriter.java:303)
at org.codehaus.groovy.classgen.asm.InvocationWriter.makeCachedCall(InvocationWriter.java:307)
at org.codehaus.groovy.classgen.asm.InvocationWriter.makeCall(InvocationWriter.java:397)
at org.codehaus.groovy.classgen.asm.InvocationWriter.makeCall(InvocationWriter.java:104)
at org.codehaus.groovy.classgen.asm.InvocationWriter.makeInvokeMethodCall(InvocationWriter.java:88)
at org.codehaus.groovy.classgen.asm.InvocationWriter.writeInvokeMethod(InvocationWriter.java:464)
at org.codehaus.groovy.classgen.AsmClassGenerator.visitMethodCallExpression(AsmClassGenerator.java:771)
at org.codehaus.groovy.ast.expr.MethodCallExpression.visit(MethodCallExpression.java:66)
at org.codehaus.groovy.classgen.asm.CallSiteWriter.makeCallSite(CallSiteWriter.java:303)
at org.codehaus.groovy.classgen.asm.InvocationWriter.makeCachedCall(InvocationWriter.java:307)
at org.codehaus.groovy.classgen.asm.InvocationWriter.makeCall(InvocationWriter.java:397)
at org.codehaus.groovy.classgen.asm.InvocationWriter.makeCall(InvocationWriter.java:104)
at org.codehaus.groovy.classgen.asm.InvocationWriter.makeInvokeMethodCall(InvocationWriter.java:88)
at org.codehaus.groovy.classgen.asm.InvocationWriter.writeInvokeMethod(InvocationWriter.java:464)
at org.codehaus.groovy.classgen.AsmClassGenerator.visitMethodCallExpression(AsmClassGenerator.java:771)
at org.codehaus.groovy.ast.expr.MethodCallExpression.visit(MethodCallExpression.java:66)
at org.codehaus.groovy.classgen.asm.CallSiteWriter.makeCallSite(CallSiteWriter.java:303)
at org.codehaus.groovy.classgen.asm.InvocationWriter.makeCachedCall(InvocationWriter.java:307)
at org.codehaus.groovy.classgen.asm.InvocationWriter.makeCall(InvocationWriter.java:397)
at org.codehaus.groovy.classgen.asm.InvocationWriter.makeCall(InvocationWriter.java:104)
at org.codehaus.groovy.classgen.asm.InvocationWriter.makeInvokeMethodCall(InvocationWriter.java:88)
at org.codehaus.groovy.classgen.asm.InvocationWriter.writeInvokeMethod(InvocationWriter.java:464)
at org.codehaus.groovy.classgen.AsmClassGenerator.visitMethodCallExpression(AsmClassGenerator.java:771)
at org.codehaus.groovy.ast.expr.MethodCallExpression.visit(MethodCallExpression.java:66)
at org.codehaus.groovy.classgen.asm.CallSiteWriter.makeCallSite(CallSiteWriter.java:303)
at org.codehaus.groovy.classgen.asm.InvocationWriter.writeNormalConstructorCall(InvocationWriter.java:568)
at org.codehaus.groovy.classgen.asm.InvocationWriter.writeInvokeConstructor(InvocationWriter.java:577)
at org.codehaus.groovy.classgen.AsmClassGenerator.visitConstructorCallExpression(AsmClassGenerator.java:822)
at org.codehaus.groovy.ast.expr.ConstructorCallExpression.visit(ConstructorCallExpression.java:46)
at org.codehaus.groovy.classgen.asm.StatementWriter.writeReturn(StatementWriter.java:590)
at org.codehaus.groovy.classgen.asm.OptimizingStatementWriter.writeReturn(OptimizingStatementWriter.java:324)
at org.codehaus.groovy.classgen.AsmClassGenerator.visitReturnStatement(AsmClassGenerator.java:620)
at org.codehaus.groovy.ast.stmt.ReturnStatement.visit(ReturnStatement.java:49)
at org.codehaus.groovy.classgen.asm.StatementWriter.writeBlockStatement(StatementWriter.java:85)
at org.codehaus.groovy.classgen.asm.OptimizingStatementWriter.writeBlockStatement(OptimizingStatementWriter.java:159)
at org.codehaus.groovy.classgen.AsmClassGenerator.visitBlockStatement(AsmClassGenerator.java:570)
at org.codehaus.groovy.ast.stmt.BlockStatement.visit(BlockStatement.java:71)
at org.codehaus.groovy.ast.ClassCodeVisitorSupport.visitClassCodeContainer(ClassCodeVisitorSupport.java:104)
at org.codehaus.groovy.ast.ClassCodeVisitorSupport.visitConstructorOrMethod(ClassCodeVisitorSupport.java:115)
at org.codehaus.groovy.classgen.AsmClassGenerator.visitStdMethod(AsmClassGenerator.java:434)
at org.codehaus.groovy.classgen.AsmClassGenerator.visitConstructorOrMethod(AsmClassGenerator.java:387)
at org.codehaus.groovy.ast.ClassCodeVisitorSupport.visitMethod(ClassCodeVisitorSupport.java:126)
at org.codehaus.groovy.classgen.AsmClassGenerator.visitMethod(AsmClassGenerator.java:511)
at org.codehaus.groovy.ast.ClassNode.visitContents(ClassNode.java:1081)
at org.codehaus.groovy.ast.ClassCodeVisitorSupport.visitClass(ClassCodeVisitorSupport.java:53)
at org.codehaus.groovy.classgen.AsmClassGenerator.visitClass(AsmClassGenerator.java:233)
at org.codehaus.groovy.control.CompilationUnit$17.call(CompilationUnit.java:825)
at org.codehaus.groovy.control.CompilationUnit.applyToPrimaryClassNodes(CompilationUnit.java:1065)
at org.codehaus.groovy.control.CompilationUnit.doPhaseOperation(CompilationUnit.java:603)
at org.codehaus.groovy.control.CompilationUnit.processPhaseOperations(CompilationUnit.java:581)
at org.codehaus.groovy.control.CompilationUnit.compile(CompilationUnit.java:558)
at groovy.lang.GroovyClassLoader.doParseClass(GroovyClassLoader.java:298)
at groovy.lang.GroovyClassLoader.parseClass(GroovyClassLoader.java:268)
at groovy.lang.GroovyShell.parseClass(GroovyShell.java:688)
at groovy.lang.GroovyShell.parse(GroovyShell.java:700)
at org.jenkinsci.plugins.workflow.cps.CpsGroovyShell.doParse(CpsGroovyShell.java:129)
at org.jenkinsci.plugins.workflow.cps.CpsGroovyShell.reparse(CpsGroovyShell.java:123)
at org.jenkinsci.plugins.workflow.cps.CpsFlowExecution.parseScript(CpsFlowExecution.java:517)
at org.jenkinsci.plugins.workflow.cps.CpsFlowExecution.start(CpsFlowExecution.java:480)
at org.jenkinsci.plugins.workflow.job.WorkflowRun.run(WorkflowRun.java:269)
at hudson.model.ResourceController.execute(ResourceController.java:97)
at hudson.model.Executor.run(Executor.java:419)
1 error
at org.codehaus.groovy.control.ErrorCollector.failIfErrors(ErrorCollector.java:310)
at org.codehaus.groovy.control.CompilationUnit.applyToPrimaryClassNodes(CompilationUnit.java:1085)
at org.codehaus.groovy.control.CompilationUnit.doPhaseOperation(CompilationUnit.java:603)
at org.codehaus.groovy.control.CompilationUnit.processPhaseOperations(CompilationUnit.java:581)
at org.codehaus.groovy.control.CompilationUnit.compile(CompilationUnit.java:558)
at groovy.lang.GroovyClassLoader.doParseClass(GroovyClassLoader.java:298)
at groovy.lang.GroovyClassLoader.parseClass(GroovyClassLoader.java:268)
at groovy.lang.GroovyShell.parseClass(GroovyShell.java:688)
at groovy.lang.GroovyShell.parse(GroovyShell.java:700)
at org.jenkinsci.plugins.workflow.cps.CpsGroovyShell.doParse(CpsGroovyShell.java:129)
at org.jenkinsci.plugins.workflow.cps.CpsGroovyShell.reparse(CpsGroovyShell.java:123)
at org.jenkinsci.plugins.workflow.cps.CpsFlowExecution.parseScript(CpsFlowExecution.java:517)
at org.jenkinsci.plugins.workflow.cps.CpsFlowExecution.start(CpsFlowExecution.java:480)
at org.jenkinsci.plugins.workflow.job.WorkflowRun.run(WorkflowRun.java:269)
at hudson.model.ResourceController.execute(ResourceController.java:97)
at hudson.model.Executor.run(Executor.java:419)
Finished: FAILURE
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment