#!/bin/bash
TOKEN='jenkins-user-token'
USER='my-username'
SERVER="http://your.server.address"
#jenkins job parameters
PARAMF=$1
SECONDPARAM=$2
# retrieve the crumb that we need to pass in the header
CRUMBS=$(curl -s -X GET -u $USER:$TOKEN ${SERVER}/crumbIssuer/api/json | jq -c '. | .crumb ')
curl --user $USER:$TOKEN -H "Jenkins-Crumb:${CRUMBS}" -X POST "${SERVER}/view/MyView/job/JobName/buildWithParameters?TOKEN=${TOKEN}&PARAMETERONE=${PARAMF}&PARAMETERTWO=${SECONDPARAM}"
步骤脚本执行以下操作: 1.得到面包屑 1.调用jenkins来执行带有多个参数的作业 您可以将此脚本另存为www.example.com并将其称为jenkins-job-cli.sh and call it
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¶m1_name=$PARAM1_VALUE¶m2_name=$PARAM2_VALUE"
7条答案
按热度按时间vfwfrxfs1#
下面是curl命令的示例(针对带参数的作业):
和一个没有参数的作业:
如果您不想使用您的用户名/密码,您可以为您的Jenkins用户生成一个API令牌:
在curl命令中使用以下标记:
wz8daaqr2#
您可以使用配置的令牌而不是用户名/密码触发Jenkins作业,这将允许您共享触发器脚本,而不会暴露您自己的凭据。
1.转到作业的配置。
1.向下滚动到构建触发器,选中**远程触发构建(例如,从脚本)**复选框,然后输入身份验证令牌(例如,“MY_TOKEN”)。
1.根据您的构建是否具有参数,复制身份验证令牌字段下方的URL之一。
然后在
curl
命令中使用该URL触发构建。例如:-I
参数告诉curl
打印响应的头,您可以使用它来确定结果状态。如果成功,Jenkins将使用HTTP 201进行回复:hfsqlsce3#
当我试图通过curl触发我的工作时,我最终总是得到“未授权”的错误。
后来我发现这是因为我在服务器上完全禁用了匿名访问,解决办法是安装以下插件:https://wiki.jenkins-ci.org/display/JENKINS/Build+Token+Root+Plugin
来源:https://issues.jenkins-ci.org/browse/JENKINS-17764
pnwntuvh4#
您可以使用curl命令和-I选项来执行此操作。为jenkins作业创建API内标识,并使用它来触发作业。您也可以使用jenkins用户密码来执行此操作。
命令将是
结果将为
有关详细信息,请访问https://serverfault.com/questions/888176/how-to-trigger-jenkins-job-via-curl-command-remotely/888248#888248
vh0rcniy5#
在新的Jenkins管道中,在 * 构建触发器 * 下,选中复选框 * 远程触发构建(例如,从脚本)*。然后为Jenkins提供触发构建时所需的令牌。
Not authorized
错误远程触发构建的一个问题是,如果您设置了Jenkins权限并禁用了匿名用户访问,那么当您尝试从脚本触发构建时,您将得到
Not authorized
错误(正如@keocra指出的)。1.当你触发构建的时候,沿着传递用户名和密码,这意味着你的脚本需要包含用户名和密码,也就是说每个能读到你脚本的人都有用户名和密码,这几乎和匿名访问一样糟糕。
1.使用Build Token Root Plugin。此插件允许您使用 * 远程触发构建 * 功能,而无需用户名和密码。您所需要的只是之前生成的令牌。
触发构建
若要远程触发生成,请运行
其中
JENKINS_URL
是Jenkins示例的URL,JobFoo
是作业的名称,MyToken
是您在 * 远程触发bulids * 下输入的令牌。当然,您不需要使用
curl
;您还可以使用wget
或任何其他可以发出HTTP请求的程序。ojsjcaue6#
我在谷歌上搜索了许多地址,工作结果可以在这里找到:
步骤脚本执行以下操作:
1.得到面包屑
1.调用jenkins来执行带有多个参数的作业
您可以将此脚本另存为www.example.com并将其称为jenkins-job-cli.sh and call it
希望这能有所帮助。
干杯,
莱斯利
c9qzyr3d7#
您需要传递2个令牌才能从脚本/bash远程执行作业。
您需要:
1.启用"远程触发生成"时创建的另一个作业身份验证令牌。
下面是一个例子来执行作业与2个参数,你可以调整得到你的完成。