Atlassian Bamboo 集成
Tier: 基础版,专业版,旗舰版
Offering: JihuLab.com,私有化部署
当您将更改推送到极狐GitLab 中的项目时,您可以自动触发 Atlassian Bamboo 中的构建。
Bamboo 在接受 webhook 和提交数据时,提供的功能与传统构建系统不同。在极狐GitLab 中配置集成之前,您必须先配置一个 Bamboo 构建计划。
配置 Bamboo
- 在 Bamboo 中,转至一个构建计划,然后选择 操作 > 配置计划。
- 选择 触发器 选项卡。
- 选择 添加触发器。
- 输入描述,例如 极狐GitLab 触发器。
- 选择 当提交更改时,存储库触发构建。
- 选择一个或多个存储库的复选框。
- 在 触发器 IP 地址 中输入极狐GitLab IP 地址。这些 IP 地址被允许触发 Bamboo 构建。
- 保存触发器。
- 在左侧窗格中,选择一个构建阶段。如果您有多个构建阶段,选择包含 Git 检出任务的最后一个阶段。
- 选择 杂项 选项卡。
- 在 模式匹配标签 下的 标签 中输入 ${bamboo.repository.revision.number}。
- 选择 保存。
Bamboo 已准备好接受来自极狐GitLab 的触发器。接下来,在极狐GitLab 中设置 Bamboo 集成。
配置极狐GitLab
- 在顶部栏中,选择 搜索或跳转到 并找到您的项目。
- 在左侧边栏中,选择 设置 > 集成。
- 选择 Atlassian Bamboo。
- 确保 活跃 复选框被选中。
- 输入您 Bamboo 服务器的基础 URL。例如,https://bamboo.example.com。
- 可选。清除 启用 SSL 验证 复选框以禁用 SSL 验证。
- 输入来自 Bamboo 构建计划的构建密钥。
- 如有必要,输入有权触发构建计划的 Bamboo 用户的用户名和密码。如果您不需要身份验证,请将这些字段留空。
- 可选。选择 测试设置。
- 选择 保存更改。
识别 Bamboo 构建计划构建密钥
构建密钥是一个唯一标识符,通常由项目密钥和计划密钥组成。构建密钥很短,全部大写,并以破折号(-)分隔,例如 PROJ-PLAN。
当您在 Bamboo 中查看计划时,构建密钥会包含在浏览器 URL 中。例如,https://bamboo.example.com/browse/PROJ-PLAN。
在极狐GitLab 中更新 Bamboo 构建状态
您可以使用一个脚本,该脚本利用提交状态 API 和 Bamboo 构建变量来:
- 使用构建状态更新提交。
- 将 Bamboo 构建计划 URL 添加为提交的 target_url。
例如:
-
创建一个个人访问令牌,并将范围设置为 api。
-
将该令牌保存为 Bamboo 中的 $GITLAB_TOKEN 变量。
-
将以下脚本作为最终任务添加到 Bamboo 计划的作业中:
shell1#!/bin/bash 2 3# 用于在 GitLab 上更新 CI 状态的脚本。 4# 将此脚本作为 Bamboo 作业中的最终内联脚本任务添加。 5# 6# 通用文档:https://gitlab.cn/docs/user/project/integrations/bamboo/ 7# 修复灵感源自 https://jihulab.com/gitlab-cn/gitlab/-/issues/34744 8 9# 遇到第一个错误即停止 10set -e 11 12# 访问令牌。在 Bamboo 中将其设置为 CI 变量。 13#GITLAB_TOKEN= 14 15# 状态 16cistatus="failed" 17if [ "${bamboo_buildFailed}" = "false" ]; then 18 cistatus="success" 19fi 20 21repo_url="${bamboo_planRepository_repositoryUrl}" 22 23# 检查使用的是 SSH 还是 HTTPS 24protocol=${repo_url::4} 25if [ "$protocol" == "git@" ]; then 26 repo=${repo_url:${#protocol}}; 27 gitlab_url=${repo%%:*}; 28else 29 protocol="https://" 30 repo=${repo_url:${#protocol}}; 31 gitlab_url=${repo%%/*}; 32fi 33 34start=$((${#gitlab_url} + 1)) # +1 针对 / (https) 或 : (ssh) 35end=$((${#repo} - $start -4)) # -4 针对 .git 36repo=${repo:$start:$end} 37repo=$(echo "$repo" | sed "s/\//%2F/g") 38 39# 发送请求 40url="https://${gitlab_url}/api/v4/projects/${repo}/statuses/${bamboo_planRepository_revision}?state=${cistatus}&target_url=${bamboo_buildResultsUrl}" 41echo "正在发送请求至 $url" 42curl --fail --request POST --header "PRIVATE-TOKEN: $GITLAB_TOKEN" "$url"
故障排查
构建未触发
如果构建未被触发,请确保您在 Bamboo 的 触发器 IP 地址 中输入了正确的极狐GitLab IP 地址。同时,检查集成 webhook 日志是否有请求失败。
高级 Atlassian Bamboo 功能在极狐GitLab UI 中不可用
高级 Atlassian Bamboo 功能与极狐GitLab 不兼容。这些功能包括但不限于从极狐GitLab UI 查看构建日志的能力。