#!/usr/bin/env groovy /* * Copyright (C) 2022 - present Instructure, Inc. * * This file is part of Canvas. * * Canvas is free software: you can redistribute it and/or modify it under * the terms of the GNU Affero General Public License as published by the Free * Software Foundation, version 3 of the License. * * Canvas is distributed in the hope that it will be useful, but WITHOUT ANY * WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR * A PARTICULAR PURPOSE. See the GNU Affero General Public License for more * details. * * You should have received a copy of the GNU Affero General Public License along * with this program. If not, see . */ library "canvas-builds-library@${env.CANVAS_BUILDS_REFSPEC}" try { stage('Upload Junit Results') { protectedNode(configuration.nodeLabel()) { def buildLinks = buildSummaryReport.getSubBuildLinks(env.SOURCE) buildLinks.each { buildLink -> echo "=== Processing ${buildLink}" if(buildLink.contains("test-queue")) { def subBuildName = "/Canvas/test-suites/test-queue" def subBuildNumber = buildLink.split("/")[-1] echo "=== Finding Test Results From ${subBuildName} ${subBuildNumber}" copyArtifacts( filter: 'tmp/*/rspec_results.tgz', optional: false, projectName: subBuildName, selector: specific(subBuildNumber), ) sh """ ls tmp/*/rspec_results.tgz | xargs -n1 tar xvf touch tmp/*_rspec_results/**/*.xml """ junit allowEmptyResults: true, testResults: "tmp/*_rspec_results/results/*.xml", skipMarkingBuildUnstable: true } } } } slackSend( channel: '#canvas_builds-noisy', color: 'good', message: "${env.JOB_NAME} <${env.BUILD_URL}|#${env.BUILD_NUMBER}> for ${env.SOURCE} uploaded junit results." ) } catch(e) { slackSend( channel: '#canvas_builds-noisy', color: 'danger', message: ":alert: ${env.JOB_NAME} <${env.BUILD_URL}|#${env.BUILD_NUMBER}> for ${env.SOURCE} failed to upload junit results." ) throw e }