Jenkins 사용자 인증 세부 정보를 Jenkins API를 사용하여 작업을 생성하는 스크립트에 어떻게 "전달"할 수 있습니까?
curl HTTP 호출을 통해 작업을 삭제하고 다시 만드는 스크립트가 있으며 하드 코딩 된 "username : password"를 제거하고 싶습니다. 예curl -X POST $url --user username:password
고려 사항 :
Jenkins CLI (아마도 옵션이 아님). Jenkins API (작업 생성 등)와 마찬가지로 CLI를 사용하여 동일한 작업을 수행 할 수 있어야하지만으로 생성 된 작업은 다시 시작하거나 "다시로드 한 후에 만 Jenkins에 나타나기 때문에 Jenkins CLI는 나에게 좋은 대안이 아니라는 것을 이해합니다. 디스크에서 구성 "을 선택하면 실행중인 다른 작업이 취소됩니다.
API 토큰 . 사용자 토큰을 가져 와서 스크립트에 매개 변수로 전달하는 방법을 찾을 수 없지만 그게 해결책 일 수 있습니다.
다음 방법을 시도해보십시오. (예 : 작업 삭제)
curl --silent --show-error http://<username>:<api-token>@<jenkins-server>/job/<job-name>/doDelete
API 토큰은에서 얻을 수 있습니다 http://<jenkins-server>/user/<username>/configure
.
이것은 나를 위해 일했습니다.
curl -u $username:$api_token -FSubmit=Build 'http://<jenkins-server>/job/<job-name>/buildWithParameters?environment='
API 토큰은 Jenkins 사용자 구성에서 얻을 수 있습니다.
CURL 명령에 POST를 명시 적으로 추가해야했습니다.
curl -X POST http://<user>:<token>@<server>/safeRestart
차이가 나는 경우를 대비 하여 SafeRestart 플러그인도 설치했습니다.
Jenkins CLI를 사용하면 모든 것을 다시로드 할 필요가 없습니다. 작업을로드하기 만하면됩니다 ( update-job 명령). CLI, AFAIK에서는 토큰을 사용할 수 없습니다. 비밀번호 또는 비밀번호 파일을 사용해야합니다.
사용자의 토큰 이름은
http://<jenkins-server>/user/<username>/configure
'Show API token'버튼을 눌러 얻을 수 있습니다 .다음은 API 토큰을 사용하는 방법에 대한 링크입니다 (를 사용
wget
하지만curl
매우 유사 함).
Jenkins API를 사용하여 작업 생성을 자동화하는 스크립트를 작성하려면 API 클라이언트 중 하나를 사용하면됩니다. Jenkins 용 Ruby 클라이언트는 https://github.com/arangamani/jenkins_api_client 에서 사용할 수 있습니다.
gem install jenkins_api_client
require "rubygems"
require "jenkins_api_client"
# Initialize the client by passing in the server information
# and credentials to communicate with the server
client = JenkinsApi::Client.new(
:server_ip => "127.0.0.1",
:username => "awesomeuser",
:password => "awesomepassword"
)
# The following block will create 10 jobs in Jenkins
# test_job_0, test_job_1, test_job_2, ...
10.times do |num|
client.job.create_freestyle(:name => "test_job_#{num}")
end
# The jobs in Jenkins can be listed using
client.job.list_all
API 클라이언트를 사용하여 많은 작업을 수행 할 수 있습니다.
API 토큰은 API 관점에서 볼 때 비밀번호와 동일합니다. 소스 코드 는 API 비밀번호 대신 토큰을 사용합니다 .
내 질문 python-jenkins 또는 jenkinsapi for jenkins remote access API in python 에서 @coffeebreaks의 관련 답변을 참조하십시오.
기타는 http 기본 인증 모델을 사용하는 문서에 설명되어 있습니다.
API 토큰을 사용하려면 사용자는 각각 https://<jenkins-server>/me/configure
또는 에서 고유 한 토큰을 얻어야합니다 https://<jenkins-server>/user/<user-name>/configure
. 사용자가 스크립트에 토큰을 제공하는 방법을 결정하는 것은 스크립트 작성자의 몫입니다. 예를 들어 Git 저장소 내에서 대화 형으로 실행되는 Bourne Shell 스크립트에서이 .gitignore
포함 된 /.jenkins_api_token
경우 다음과 같은 작업을 수행 할 수 있습니다.
api_token_file="$(git rev-parse --show-cdup).jenkins_api_token"
api_token=$(cat "$api_token_file" || true)
if [ -z "$api_token" ]; then
echo
echo "Obtain your API token from $JENKINS_URL/user/$user/configure"
echo "After entering here, it will be saved in $api_token_file; keep it safe!"
read -p "Enter your Jenkins API token: " api_token
echo $api_token > "$api_token_file"
fi
curl -u $user:$api_token $JENKINS_URL/someCommand
'IT TIP' 카테고리의 다른 글
Jasmine-생성자 내에서 메서드 호출 감시 (0) | 2020.11.30 |
---|---|
IOException이 Not-Enough-Disk-Space-Exception 유형인지 확인하는 방법은 무엇입니까? (0) | 2020.11.30 |
AngularJS 드롭 다운 필수 유효성 검사 (0) | 2020.11.30 |
IE에서 "개체가 속성 또는 메서드 '찾기'를 지원하지 않습니다." (0) | 2020.11.30 |
WPF 애플리케이션에서 App.config 파일을 사용하는 방법은 무엇입니까? (0) | 2020.11.30 |