如何使用特定参数结束詹金斯构建
how to end a jenkins build with a specific parameter
我使用参数 FRACTURE_NO = 15
触发了名为 testAUT 的构建。我使用相同的参数触发相同的构建。
我希望当发生这种情况时,较早的构建被杀死。我怎样才能使用詹金斯做到这一点?我希望能够使用与当前构建相同的参数结束构建。
如果您可以使用 Groovy Plugin and Jenkins Rest Api,请按以下步骤进行操作。
- 安装 Groovy 插件。
- 转到作业的配置页面。
- 添加默认值为 125 的 'fracture_no' 构建参数。
- 在常规部分启用 'Execute concurrent builds if necessary'
- 添加 'Execute Groovy script' 构建步骤作为作业的第一步
- 将以下代码添加到 groovy 步骤
def parameterName = "fracture_no";
def jenkinsUrl = System.getenv('JENKINS_URL');
def buildNumber = System.getenv('BUILD_NUMBER').toInteger();
def jobUrl = jenkinsUrl + "job/" + System.getenv('JOB_NAME');
def buildNumberUrl = jobUrl + "/" + buildNumber;
def myParameter = System.getenv(parameterName);
def projectXml = new XmlSlurper().parseText(new URL(jobUrl + "/api/xml").getText());
projectXml.build.each {
def previousBuildNumber = it.number.text().toInteger();
if(previousBuildNumber < buildNumber)
{
def previousBuildNumberUrl = jobUrl + "/" + previousBuildNumber;
def jobXml = new XmlSlurper().parseText(new URL(previousBuildNumberUrl + "/api/xml").getText());
if(jobXml.building.text() == "true")
{
jobXml.action.parameter.each {
if(it.name.text() == parameterName) {
if(it.value.text() == myParameter) {
def url = new URL(previousBuildNumberUrl + "/stop");
def connection = url.openConnection();
connection.setRequestMethod("POST");
connection.connect();
connection.content.text;
println "Stopping " + previousBuildNumber;
}
}
}
}
}
}
- 添加另一个需要很长时间的构建步骤。如果您只想测试,请添加以下 Windows 休眠 100 秒的批处理命令步骤。
ping 127.0.0.1 -n 100 > nul
- 使用默认参数值 125 启动作业两次(或任意次数)。
- 应停止除最新版本之外的所有内容。
我使用参数 FRACTURE_NO = 15
触发了名为 testAUT 的构建。我使用相同的参数触发相同的构建。
我希望当发生这种情况时,较早的构建被杀死。我怎样才能使用詹金斯做到这一点?我希望能够使用与当前构建相同的参数结束构建。
如果您可以使用 Groovy Plugin and Jenkins Rest Api,请按以下步骤进行操作。
- 安装 Groovy 插件。
- 转到作业的配置页面。
- 添加默认值为 125 的 'fracture_no' 构建参数。
- 在常规部分启用 'Execute concurrent builds if necessary'
- 添加 'Execute Groovy script' 构建步骤作为作业的第一步
- 将以下代码添加到 groovy 步骤
def parameterName = "fracture_no";
def jenkinsUrl = System.getenv('JENKINS_URL');
def buildNumber = System.getenv('BUILD_NUMBER').toInteger();
def jobUrl = jenkinsUrl + "job/" + System.getenv('JOB_NAME');
def buildNumberUrl = jobUrl + "/" + buildNumber;
def myParameter = System.getenv(parameterName);
def projectXml = new XmlSlurper().parseText(new URL(jobUrl + "/api/xml").getText());
projectXml.build.each {
def previousBuildNumber = it.number.text().toInteger();
if(previousBuildNumber < buildNumber)
{
def previousBuildNumberUrl = jobUrl + "/" + previousBuildNumber;
def jobXml = new XmlSlurper().parseText(new URL(previousBuildNumberUrl + "/api/xml").getText());
if(jobXml.building.text() == "true")
{
jobXml.action.parameter.each {
if(it.name.text() == parameterName) {
if(it.value.text() == myParameter) {
def url = new URL(previousBuildNumberUrl + "/stop");
def connection = url.openConnection();
connection.setRequestMethod("POST");
connection.connect();
connection.content.text;
println "Stopping " + previousBuildNumber;
}
}
}
}
}
}
- 添加另一个需要很长时间的构建步骤。如果您只想测试,请添加以下 Windows 休眠 100 秒的批处理命令步骤。
ping 127.0.0.1 -n 100 > nul
- 使用默认参数值 125 启动作业两次(或任意次数)。
- 应停止除最新版本之外的所有内容。