Мое задание конвейера Jenkins не параметризовано, но при вызове задания из сценария конвейера я могу указать параметры, которые используются внутри моего текущего задания.
Я бы хотел передать эти параметры извне, используякоманда curlЯ испробовал следующие варианты, но пока не добился успеха.
curl -i -X POST 'https://<USERNAME>:<API_TOKEN>@JENKINS_URL/job/DS_JOB1/build?token=remotejob' --data-urlencode json='{"parameter": [{"PLATFORM":"Value1", "PROJECT": "Project_Type"}]}'
Это не работает, так как я не могу получить параметры в вызываемом задании.
curl -i -X POST 'https://<USERNAME>:<API_TOKEN>@JENKINS_URL/job/DS_JOB1/buildWithParameters?token=remotejob&TestProject=NewCurlTesting'
Этот вызов завершается сбоемпотому что мое текущее задание DS_JOB1 не параметризовано.
Мне интересно, если кто-то уже использовал такие задания и исправил проблему.
В качестве примера я предоставляю 2 простых файла jenkins, которые прекрасно работаютв способе реализации jenkins pipe.
node('LABEL_NAME') {
timestamps {
try {
stage("Calling Downstream Job") {
job_downstream = build(job: "DS_JOB1",
parameters: [[$class: 'StringParameterValue', name: 'PLATFORM', value: "pf-1"],
[$class: 'StringParameterValue', name: 'PROJECT', value: "Dummy1"]],
propagate: false,
wait: true)
if(job_downstream?.result.toString() == 'FAILURE') {
currentBuild.result = job_downstream?.result.toString()
println("Downstream job for PLATFORM: ${PLATFORM}")
}
}
}
catch (err) {
println(err)
currentBuild.result = 'FAILURE'
}
finally {
stage('Post build actions') {
// Mailer notification
step([$class: 'Mailer', notifyEveryUnstableBuild: true, recipients: '<GroupMail_ID>', sendToIndividuals: false])
deleteDir()
}
}
}
}
Jenkinsfile для задания DS_JOB1, которое вызывается из указанного выше задания:
node('LABEL_NAME') {
stage('Trigger Testlauncher') {
if("${PLATFORM}" == "pf-1")
{
<Take some action>
}
else if("${PROJECT}" == "Dummy1")
{
< Take some action>
}
else
{
<Take something>
}
}
}