使用批处理脚本启动Jenkins构建

时间:2016-04-11 12:26:49

标签: batch-file jenkins continuous-integration

我正在使用Jenkins构建服务器来运行FPGA的综合/模拟。 现在我有夜间构建,可以在Jenkins浏览器界面中手动启动构建。

我的问题是:

是否有可能在不使用浏览器界面的情况下使用批处理脚本启动作业?

(我在Windows 7 64bit上运行Jenkins。)

4 个答案:

答案 0 :(得分:3)

您可以使用带-I选项的curl命令执行此操作。为jenkins Job创建API令牌并使用它来触发作业。您也可以使用jenkins用户密码。

enter image description here

命令将是

curl -I -u auto:<user_api_token> http://<jenkins_Server>/job/test/build?token=wefiytgwiefiweihfqweiodf

结果将是 enter image description here

了解更多信息 https://serverfault.com/questions/888176/how-to-trigger-jenkins-job-via-curl-command-remotely/888248#888248

答案 1 :(得分:2)

当我试图通过curl触发我的工作时,我最终总是得到“未授权”错误。

后来我发现这是因为我完全禁用了服务器上的匿名访问。解决方案是安装以下插件:https://wiki.jenkins-ci.org/display/JENKINS/Build+Token+Root+Plugin

来源:https://issues.jenkins-ci.org/browse/JENKINS-17764

答案 2 :(得分:0)

在新的Jenkins管道中,在构建触发器下,选择复选框远程触发器构建(例如,从脚本)。然后给Jenkins一个在触发构建时需要的标记。

Not authorized错误

远程触发构建的问题是,如果您正确设置Jenkins并禁用匿名用户访问,当您尝试从脚本触发构建时会出现Not authorized错误(如@keocra指出的那样)出)。您现在有两个选择:

  1. 在触发构建时传递用户名和密码。这意味着您的脚本需要包含用户名和密码,这意味着每个可以阅读您脚本的人都会拥有用户名和密码,这几乎与匿名访问一样糟糕。
  2. 使用Build Token Root Plugin。此插件允许您使用触发器远程构建功能,而无需用户名和密码。您所需要的就是之前生成的令牌。
  3. 触发构建

    要远程触发构建,请运行

    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}"

步骤脚本会执行:

  1. 获取面包屑
  2. 致电jenkins执行具有多个参数的作业

您可以将该脚本另存为jenkins-job-cli.sh并调用它

chmod +x jenkins-job-cli.sh
./jenkins-job-cli.sh first-parameter second-parameter

希望获得帮助。

干杯

莱斯利