68

我有一个通过 curl HTTP 调用删除和重新创建作业的脚本,我想摆脱任何硬编码的“用户名:密码”。例如curl -X POST $url --user username:password

注意事项:

  • Jenkins CLI(可能不是一个选项)。使用 CLI 应该能够实现与使用 Jenkins API(创建作业等)相同的效果,但据我了解,Jenkins CLI 对我来说不是一个好的选择,因为使用创建的作业只会在重新启动或“重新加载”后出现在 Jenkins 中从磁盘配置”,这将取消任何其他正在运行的作业。

  • API 令牌。无法找出如何获取用户令牌,然后将其作为参数传递给脚本,但这可能是一个解决方案..

4

7 回答 7

88

试试这种方式:(例如删除作业)

curl --silent --show-error http://<username>:<api-token>@<jenkins-server>/job/<job-name>/doDelete

api-token 可以从http://<jenkins-server>/user/<username>/configure.

于 2013-02-13T21:06:05.533 回答
29

这对我有用:

curl -u $username:$api_token -FSubmit=Build 'http://<jenkins-server>/job/<job-name>/buildWithParameters?environment='

API token 可以从 Jenkins 用户配置中获取。

于 2014-10-28T21:50:18.480 回答
8
  • 使用 Jenkins CLI,您不必重新加载所有内容 - 您只需加载作业(update-job命令)。您不能在 CLI、AFAIK 中使用令牌 - 您必须使用密码或密码文件。

  • 用户的令牌名称可以通过http://<jenkins-server>/user/<username>/configure- 按下“显示 API 令牌”按钮获得。

  • 这是有关如何使用 API 令牌的链接(它使用wget,但curl非常相似)。

于 2012-05-22T08:47:45.043 回答
7

我需要在 CURL 命令中显式添加 POST:

curl -X POST http://<user>:<token>@<server>/safeRestart

我还安装了SafeRestart 插件,以防万一。

于 2014-07-25T10:41:05.893 回答
2

如果您想编写一个脚本来使用 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 客户端可用于执行很多操作。

于 2013-03-19T06:28:43.220 回答
1

从 API 的角度来看,API 令牌与密码相同,请参阅源代码使用令牌代替 API 的密码

在我的问题python-jenkins 或 jenkinsapi 中查看@coffeebreaks 的相关答案,了解 python 中的 jenkins 远程访问 API

其他在 doc 中描述为使用 http 基本身份验证模型

于 2013-08-21T04:34:54.493 回答
0

为了使用 API 令牌,用户必须从https://<jenkins-server>/me/configure或获取他们自己的令牌https://<jenkins-server>/user/<user-name>/configure。作为脚本的作者,您可以决定用户如何向脚本提供令牌。例如,在 Git 存储库中以交互方式运行的 Bourne Shell 脚本中,其中.gitignorecontains /.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
于 2016-06-15T13:52:35.920 回答