Curl HTTPコールを介してジョブを削除および再作成するスクリプトがあり、ハードコードされた「username:password」を削除したい。例えば。 curl -X POST $url --user username:password
考慮事項:
Jenkins CLI(おそらくオプションではない)。 Jenkins API(ジョブの作成など)とCLIで同じことを達成できるはずですが、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 Plugin もインストールされているので、違いが生じる場合があります。
Jenkins CLIを使用すると、すべてをリロードする必要はありません-ジョブをロードできます(update-jobコマンド)。 CLIでトークンを使用することはできませんが、パスワードまたはパスワードファイルを使用する必要があります。
ユーザーのトークン名は、http://<jenkins-server>/user/<username>/configure
から取得できます-[APIトークンの表示]ボタンを押します。
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のパスワードの代わりにトークンを使用 。
私の質問の@coffeebreaksからの関連する答えを参照してください pythonのjenkinsリモートアクセスAPIのpython-jenkinsまたはjenkinsapi
その他は、HTTP基本認証モデルを使用するためにドキュメントで説明されています
APIトークンを使用するには、ユーザーはそれぞれhttps://<jenkins-server>/me/configure
またはhttps://<jenkins-server>/user/<user-name>/configure
から独自のトークンを取得する必要があります。ユーザーがスクリプトにトークンを提供する方法を決定するのは、スクリプトの作成者の責任です。たとえば、.gitignore
に/.jenkins_api_token
が含まれるGitリポジトリ内で対話的に実行されるBourne Shellスクリプトでは、次のようなことができます。
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