首页 文章

Jenkins Job DSL返回脚本结果

提问于
浏览
1

我正在将我现有的构建作业转换为由Jenkins Job DSL生成 .

这些工作主要是基于Maven并调用Sonar . 现有作业执行一些shell命令,这些命令调用Sonar服务器来测试Sonar运行是否已通过Sonar Quality Gate . 如果它通过质量门,则作业继续,否则失败 . 这个代码块是:

#!/bin/bash
# Query the Sonar Quality Gate for this project; if good, proceed with the job

APP_GROUPID=$(cat pom.xml  | xpath /project/groupId/text\(\) 2>/dev/null)
APP_ARTIFACTID=$(cat pom.xml  | xpath /project/artifactId/text\(\) 2>/dev/null)

export SONAR_RESULT=$(curl --silent -H "Accept: application/xml"  "http://<sonar-server>/api/resources/index?includealerts=true&metrics=alert_status&resource=${APP_GROUPID}:${APP_ARTIFACTID}" | xpath '/resources/resource/msr/alert/text()' 2>/dev/null)

echo $SONAR_RESULT
if [ "$SONAR_RESULT" == "OK" ]; then
  echo "*** SONAR_RESULT = [$SONAR_RESULT] Proceeding with deployment."
else
  echo "*** SONAR_RESULT = [$SONAR_RESULT] Halting deployment attempt!"
  exit -1
fi

我正在尝试在Jenkins Job DSL中复制此功能 . 为此,我需要获取Maven Group和Artifact ID信息,构建查询Sonar服务器的命令,然后返回查询结果 .

我在Job DSL文档中没有看到有关如何返回shell步骤状态的任何信息 . 到目前为止,我看到的唯一方法就是运行一个或多个DSL shell步骤来获取组工件ID信息,将结果表示为Jenkins环境变量并将它们写入临时文件;然后我将这些变量注入构建作业;一旦完成,我接着调用Sonar Server并将结果写入另一个临时文件并检查它 . 显然这是非常愚蠢的 .

有没有更好的方法来做到这一点,而不必使用shell步骤?提前致谢 .

1 回答

相关问题