我正在使用Jenkins构建服务器来运行FPGA的综合/模拟。 现在我有夜间构建,可以在Jenkins浏览器界面中手动启动构建。
我的问题是:
是否有可能在不使用浏览器界面的情况下使用批处理脚本启动作业?
(我在Windows 7 64bit上运行Jenkins。)
答案 0 :(得分:3)
您可以使用带-I选项的curl命令执行此操作。为jenkins Job创建API令牌并使用它来触发作业。您也可以使用jenkins用户密码。
命令将是
curl -I -u auto:<user_api_token> http://<jenkins_Server>/job/test/build?token=wefiytgwiefiweihfqweiodf
答案 1 :(得分:2)
当我试图通过curl触发我的工作时,我最终总是得到“未授权”错误。
后来我发现这是因为我完全禁用了服务器上的匿名访问。解决方案是安装以下插件:https://wiki.jenkins-ci.org/display/JENKINS/Build+Token+Root+Plugin
答案 2 :(得分:0)
在新的Jenkins管道中,在构建触发器下,选择复选框远程触发器构建(例如,从脚本)。然后给Jenkins一个在触发构建时需要的标记。
Not authorized
错误远程触发构建的问题是,如果您正确设置Jenkins并禁用匿名用户访问,当您尝试从脚本触发构建时会出现Not authorized
错误(如@keocra指出的那样)出)。您现在有两个选择:
要远程触发构建,请运行
curl JENKINS_URL/buildByToken/build?job=JobFoo&token=MyToken
JENKINS_URL
是Jenkins实例的网址,JobFoo
是您的工作名称,而MyToken
是您在远程触发器下输入的令牌
当然,您不需要使用curl
;您还可以使用wget
或任何其他可以发出HTTP请求的程序。
答案 3 :(得分:0)
我在许多地址上搜索过Google,可以在这里找到工作结果:
#!/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}"
步骤脚本会执行:
您可以将该脚本另存为jenkins-job-cli.sh并调用它
chmod +x jenkins-job-cli.sh
./jenkins-job-cli.sh first-parameter second-parameter
希望获得帮助。
干杯
莱斯利