컬 명령을 통해 원격으로 젠킨스 작업을 트리거하는 방법

컬 명령을 통해 원격으로 젠킨스 작업을 트리거하는 방법

아래 방법을 사용하여 컬 명령을 통해 jenkins 작업(매개변수화된 작업 아님)을 실행(트리거)하려고 시도했지만 이러한 결과가 표시됩니다. 내 젠킨스 버전은 젠킨스 2.73.3입니다

curl -X POST -u jenkins_user_name:jenkins_user_passwd http://jenkins_server/job/job_name/build

그런데 Forbidden 403이라고 써있네요 여기에 이미지 설명을 입력하세요

따라서 작업에 대한 인증 토큰을 만들었습니다. 여기에 이미지 설명을 입력하세요

curl -X POST http://jenkins_server/job/job_name/build?token=wefiytgwiefiweihfqweiodf

또한 동일한 오류가 발생합니다. Forbidden 403이라고 써있네요

그 후 jenkins 사용자를 위한 API 토큰을 만들고 시도했습니다. 여기에 이미지 설명을 입력하세요

curl -X POST -u auto:testingdae6dc22a73048e6d596e7b0 http://jenkins_server/job/job_name/build?token=wefiytgwiefiweihfqweiodf

하지만 그것도 똑같습니다. Forbidden 403이라고 적혀 있습니다.

실제로 나는 이 답변도 따랐습니다.https://www.nczonline.net/blog/2015/10/triggering-jenkins-builds-by-url/ 이것은 나에게도 효과가 없습니다.

매번 403이 금지되어 있습니다. Jenkins 사용자를 제대로 인증하지 못한 것 같습니다.

답변1

답을 찾았습니다. 실제로 그 단계는 정확합니다. 올바른 단계를 언급하고 싶습니다.

Jenkins에서 사용자를 생성하면 Jenkins 작업을 트리거하기 위해 해당 사용자 비밀번호 또는 API 토큰을 사용할 수 있습니다. 그러나 해당 사용자를 위한 API 토큰을 생성하는 것이 훨씬 좋습니다. 그러나 두 가지 방법 모두 잘 작동합니다.

하지만 Jenkins Job에 대한 인증 토큰을 만들어야 합니다.

여기에 이미지 설명을 입력하세요

비밀번호 사용

curl -I -u auto:<userpasswd> http://<jenkins_server>/job/test/build?token=wefiytgwiefiweihfqweiodf

API 토큰 사용

해당 Jenkins 사용자에 대한 API 토큰을 만듭니다. 여기에 이미지 설명을 입력하세요

curl -I -u auto:<user_api_token> http://<jenkins_Server>/job/test/build?token=wefiytgwiefiweihfqweiodf

다음은 결과입니다.젠킨스 사용자 비밀번호그리고젠킨스 사용자 API 토큰.

여기에 이미지 설명을 입력하세요

실제로 "-I" 없이도 이 요청을 보낼 수 있습니다.

curl -u auto:<jenkins_user_token> http://<jenkins_server>/job/test/build?token=wefiytgwiefiweihfqweiodf

curl -u auto:<jenkins_user_password> http://<jenkins_server>/job/test/build?token=wefiytgwiefiweihfqweiodf

답변2

2023년으로 빨리감기

스크립트/bash에서 원격으로 작업을 실행하려면 2개의 토큰을 전달해야 합니다.
당신은 다음이 필요합니다

  1. apiToken을 사용하여 신원을 인증하세요. 이 값은 JENKINS_URL/me/configure 에서 생성됩니다. 또한 확인여기문서화를 위해
  2. '원격 빌드 트리거'를 활성화할 때 생성하는 또 다른 작업 인증 토큰입니다.

다음은 2개의 매개변수를 사용하여 작업을 실행하는 샘플입니다. 조정하여 완료할 수 있습니다.

PARAM1_VALUE=<param1_value>
PARAM2_VALUE=<param2_vale>
USERNAME=dummy_user_name
JENKINS_URL="http://10.xxx.x.xxx:8080"
JOB_TOKEN="<value>" # you create this token when you enable Job>Configure>Build Triggers>Trigger builds remotely
LOGIN_API_TOKEN="<value>" #get this value from JENKINS_URL/me/configure 

curl -L --user $USERNAME:$LOGIN_API_TOKEN "$JENKINS_URL/job/JobName/buildWithParameters?token=$JOB_TOKEN&param1_name=$PARAM1_VALUE&param2_name=$PARAM2_VALUE"

답변3

이러한 권한을 구성하려면:

  • 딸깍 하는 소리Manage Jenkins
  • 딸깍 하는 소리Configure Global Security
  • 제거하다Prevent Cross Site Request Forgery exploits
  • 딸깍 하는 소리save

관련 정보