Jenkins 빌드를 원격으로 트리거하고 매개 변수를 전달하는 방법
다음을 사용하여 원격으로 Jenkins 작업을 호출하고 있습니다.
wget http://<ServerIP>:8080/job/Test-Jenkins/build?token=DOIT
여기서 Test-Jenkins작업이 호출되고 DOIT내가 사용한 보안 토큰입니다.
이제이 작업의 build.xml 파일에 몇 가지 매개 변수를 전달해야합니다 Test-Jenkins.
아직 변수를 전달하는 방법을 아직 파악하지 못했습니다.
Jenkins 문서 : 매개 변수화 된 빌드 참조
관심있는 라인은 다음과 같습니다.
http://server/job/myjob/buildWithParameters?token=TOKEN&PARAMETER=Value
자체 / 커스텀 매개 변수로 빌드를 트리거하려면 다음 URL을 호출합니다 (POST 또는 GET 사용).
http://JENKINS_SERVER_ADDRESS/job/YOUR_JOB_NAME/buildWithParameters?myparam=myparam_value
그런 다음 Jenkins 작업 구성에서 " This build is parameterized" 상자를 Add Parameter선택하고 " String Parameter" 버튼을 클릭 한 다음 " "드롭 다운 값을 선택합니다 .
이제 매개 변수를 정의하십시오-예 :
이제 작업 / 빌드 파이프 라인에서 매개 변수를 사용할 수 있습니다. 예 :
변수를 전달 / 사용하려면 먼저 Jenkins의 구성 섹션에서 매개 변수를 만듭니다. 사용하는 매개 변수는 텍스트, 문자열, 파일 등의 유형일 수 있습니다.
생성 한 후 원하는 필드에서 변수 참조를 사용합니다.
예 : Email-subject및 Email-recipentList에 대해 두 개의 변수를 구성 / 생성 했으며 EMail-ext플러그인 에서 해당 참조를 사용했습니다 (첨부 된 스크린 샷).

이 질문에 추가하기 위해 /buildWithParameters엔드 포인트 를 사용할 필요가 없다는 것을 알게되었습니다 .
내 시나리오에는 Jenkins가 배포 후 테스트를 실행하도록 트리거하는 스크립트가 있습니다. 이러한 테스트 중 일부는 올바르게 작동하기 위해 배포에 대한 추가 정보가 필요합니다.
/buildWithParameters매개 변수가 필요하지 않은 작업 에 사용하려고 하면 작업이 실행되지 않습니다. 작업을 실행하기 위해 가짜 매개 변수를 요구하도록 모든 작업을 편집하고 싶지는 않습니다.
대신 다음과 같은 매개 변수를 전달할 수 있습니다.
curl -X POST --data-urlencode "token=${TOKEN}" --data-urlencode json='{"parameter": [{"name": "myParam", "value": "TEST"}]}' https://jenkins.corp/job/$JENKINS_JOB/build
이를 통해 호출이 이루어질 때마다 값 이있는 json=...매개 변수 myParam를 TEST작업에 전달합니다 . 그러나 Jenkins 작업은 매개 변수를 예상하지 않는 경우에도 계속 실행됩니다 myParam.
여기서 다루지 않는 유일한 시나리오는 작업에 json. 작업에 매개 변수에 대한 기본값이 설정되어 있어도 작업 실행에 실패합니다. 이 시나리오에서는 호출 할 때 다음 오류 메시지 / 스택 추적이 발생합니다 /build.
java.lang.IllegalArgumentException: No such parameter definition: myParam
이 답변이 몇 년 늦었 음을 알고 있지만 이것이 다른 사람에게 유용한 정보가되기를 바랍니다.
참고 : Jenkins v2.163을 사용하고 있습니다.
jenkinsfile로 간단히 시도 할 수 있습니다. 다음 파이프 라인 스크립트를 사용하여 Jenkins 작업을 만듭니다.
pipeline {
agent any
parameters {
booleanParam(defaultValue: true, description: '', name: 'userFlag')
}
stages {
stage('Trigger') {
steps {
script {
println("triggering the pipeline from a rest call...")
}
}
}
stage("foo") {
steps {
echo "flag: ${params.userFlag}"
}
}
}
}
작업을 수동으로 한 번 빌드하여 구성하고 다음과 같이 Jenkins 작업에 대한 http POST 요청을 만듭니다.
형식은 http://server/job/myjob/buildWithParameters?PARAMETER=Value
curl http://admin:test123@localhost:30637/job/apd-test/buildWithParameters?userFlag=false --request POST
'Program Club' 카테고리의 다른 글
| express.js에서 요청을 시작한 도메인을 얻으려면 어떻게해야합니까? (0) | 2020.12.11 |
|---|---|
| 스칼라 : 부울에서 옵션으로 (0) | 2020.12.11 |
| Akka 배우의 Forward와 Tell의 차이점 (0) | 2020.12.11 |
| 브라우저 시간 초과 (0) | 2020.12.09 |
| x86_64에서 정적 라이브러리를 컴파일 할 때 gcc가 암시 적으로 -fPIC 플래그를 제공하지 않는 이유 (0) | 2020.12.09 |

