我目前正在开展一个项目,其中我们有一个jenkins实例与一个单独的网站并排运行,工作流程是这样的,用户需要点击网站中的链接,这会触发詹金斯的jenkins工作实例
触发的jenkins工作有几十个参数,我们目前正在做的是网站将用javascript构建这样的URL:
https://JENKINS_HOST/job/JOB_NAME/buildWithParameters?DOZENS=of&PARAMETERES=here&delay=0sec
然后用户将点击此项(发送GET请求),jenkins会显示一个小警告页面,上面写着“您应该使用POST,然后点击继续进行操作。”
过去点击后,你会被发送到工作页面,在那里你可以看到工作的状态,但是我们最近升级了jenkins,现在只有点击继续后才会出现一个空白的白色屏幕。 / p>
我在这里看到另一个答案,其中“空白屏幕”问题的解决方案是提交POST而不是获取,但这对我们来说是有问题的,因为我们的Jenkins和我们的辅助网站都暴露在公共互联网上,所以我们不能只生成用于触发器作业的API令牌,因为这意味着任何随机的人都可以触发我们的工作。我们通过使用openid插件和一些基于此的ACL来处理安全性,因此我们实际上需要能够执行GET请求,让用户登录(如果尚未登录),然后在登录时提交作业用户。
那么,有没有办法,而不是“远程触发作业”,只显示构建参数表单,但是GET参数预先填充了值?通过这种方式,我们的用户可以在点击“构建”然后立即观看状态更新之前,直观地查看参数并进行更正。
到目前为止,我能够找到的所有文档都假设这些作业将由脚本触发,并提供了如何使用curl提交POST请求的示例,但这种事情对我没有帮助。我希望人类以交互方式触发工作,目前的经验并不是特别方便用户。
感谢。
答案 0 :(得分:1)
事实证明,我正在寻找的功能是由Build With Parameters插件提供的。这在我的搜索中出现了几次,但我每次都认为它只是内置的buildWithParameters
功能不能满足我的需求而忽略了它。
忽略这个不幸的名字,这个插件完全符合我的要求:它会显示构建参数表单,其值从GET参数中填充。