跳过正文
Background Image
  1. Posts/

使用 REST API 添加或更新 Bitbucket 构建状态

·364 字·1 分钟· ·
沈显鹏
作者
沈显鹏
目录

使用场景
#

  1. 添加构建状态
    当你从某个分支启动构建时,希望为该分支的特定提交添加构建状态。

  2. 更新构建状态
    当构建状态错误时(如错误地标记为 FAILED),你可能需要将其手动更新为 SUCCESSFUL 等正确状态。

此时可通过 Bitbucket REST API 实现。


示例脚本
#

以下 Shell 脚本演示了如何使用 REST API 更新 Bitbucket 构建状态。
代码 GitHub Gist 链接:gist.github.com/shenxianpeng/bd5eddc5fb39e54110afb8e2e7a6c4fb

#!/bin/sh

username=your-bitbucket-user
password=your-bitbucket-password

commit_id='57587d7d4892bc4ef2c4375028c19b27921e2485'
# 构建状态可选值:SUCCESSFUL, FAILED, INPROGRESS
build_result='SUCCESSFUL'
description='Manually update bitbucket status'

build_name='test #1'
build_url=http://localhost:8080/job/test/

bitbucket_rest_api='https://myorg.bitbucket.com/rest/build-status/latest/commits'

gen_post_data() {
cat <<EOF
{
  "state": "$build_result",
  "key": "$commit_id",
  "name": "$build_name",
  "url": "$build_url",
  "description": "$description"
}
EOF
}

echo "$(gen_post_data)"

curl -u $username:$password \
  -H "Accept: application/json" \
  -H "Content-Type:application/json" \
  -X POST $bitbucket_rest_api/$commit_id --data "$(gen_post_data)"

if [ $? -ne 0 ]; then
  echo "$0: Update bitbucket build status failed."
  exit 1
else
  echo "$0: Update bitbucket build status success."
  exit 0
fi

最终效果
#

执行成功后,可以在 Bitbucket 中看到构建状态的更新结果:

Bitbucket build status


转载本文请注明作者与出处,禁止用于商业用途。欢迎关注公众号「DevOps攻城狮」。

相关文章

建议在 Bitbucket/GitHub 中启用的仓库设置
·599 字·2 分钟
列出 Bitbucket 和 GitHub 仓库推荐启用的设置,包括禁止强制推送、分支保护、标签管理、合并检查以及提交信息规范等。
这也能用Jenkins?快速实现一个定期批量登录远程虚拟机并支持添加新的主机名称的Job
·910 字·2 分钟
本文介绍了如何使用 Jenkins 实现定期批量登录远程虚拟机,并支持用户添加新的主机名称,提供了完整的实现代码和步骤。
通过 generic-webhook-trigger 插件实时获取 Bitbucket Repository Events
·716 字·2 分钟
本文介绍如何使用 Jenkins 的 generic-webhook-trigger 插件来实时获取 Bitbucket 仓库的事件信息,如 Pull Request ID 等。
如何将 Bitbucket 仓库同步到 GitHub
·1218 字·3 分钟
介绍如何通过 Jenkins 将 Bitbucket 仓库的 master 分支同步到 GitHub。
Jenkins 与 Bitbucket Webhooks 的配置和使用
·1303 字·3 分钟
本文介绍如何在 Jenkins 中配置 Bitbucket Webhooks,以便在创建 Pull Request 时自动触发 Jenkins 构建。
如何设置 NFS 共享以及在不同的平台 Windows/Linux/Unix 进行挂载
·678 字·2 分钟
本文介绍了如何设置 NFS 共享以及在不同平台(Windows/Linux/Unix)上进行挂载的步骤和命令。