【发布时间】:2020-03-30 20:14:19
【问题描述】:
我们正在使用 BitBucket 来托管我们的 Git 存储库。
我们在本地托管的 Jenkins 服务器中定义了构建作业。
我们想知道是否可以在拉取请求批准后等使用 BitBucket 管道在 Jenkins 中触发构建。
在 Jenkins 中通过其 REST API 触发作业相当简单。
1: curl --request POST --user $username:$api_token --head http://jenkins.mydomain/job/myjob/build
这将返回一个位置响应标头。通过对其进行 GET 操作,我们可以获得有关排队项目的信息:
2: curl --user $username:$api_token http://jenkins.mydomain/queue/item/<item#>/api/json
这将返回描述排队项目的 JSON,指示项目是否被阻止以及原因。如果不是,它包含构建的 URL。这样,我们就可以检查构建本身的状态:
3: curl -–user $username:$api_token http://jenkins.mydomain/job/myjob/<build#>/api/json
这将返回更多的json,指示作业当前是否正在构建,如果已完成,则构建是否成功。
现在 BitBucket 管道步骤在 Docker 容器中运行,并且必须在 Linux 上运行。我们的 Jenkins 构建作业在多个平台上运行,并非所有平台都是 Linux。但 BitBucket 不应该在意。可以在 Linux 中进行必要的 REST API 调用,就像我在上面的示例中一样。
但是我们如何编写脚本呢?
我们是否创建一个运行 shell 脚本的单个步骤,该脚本运行命令 #1,然后重复调用命令 #2 直到构建开始,然后重复调用命令 #3 直到构建完成?
或者我们创建三个步骤,每个步骤一个? BitBucket 管道是否提供循环步骤?调用一个步骤,稍等片刻,然后再调用一次,直到成功?
【问题讨论】:
标签: jenkins bitbucket bitbucket-pipelines