Если у вас все в порядке, используйте Groovy Plugin и Jenkins Rest Api, вот шаги, необходимые для выполнения необходимых действий.
- Установите модуль Groovy.
- Перейдите на страницу конфигурации задания.
- Добавьте «fracture_no» построить параметр со значением 125.
- по умолчанию Enable «Execute процессов сборки при необходимости» в разделе Общие
- Добавить «Выполнить 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 (или столько раз, сколько вы хотите).
- Все, кроме последней сборки, следует остановить.
Почему бы не ограничить сборку, чтобы работать только по одному? –
@Shachar. Цель состоит в том, чтобы прервать уже запущенный (или поставленный в очередь) экземпляр задания. Я не понимаю, как ограничить работу работой только по одному из них. –