Help us learn about your current experience with the documentation. Take the survey.
Atlassian Bamboo
- Tier: Free, Premium, Ultimate
- Offering: GitLab.com, GitLab Self-Managed, GitLab Dedicated
当您向 GitLab 项目推送更改时,可以自动触发 Atlassian Bamboo 中的构建。
Bamboo 在接受 webhook 和提交数据时,与传统构建系统提供的功能不同。您必须在 GitLab 中配置集成之前,先配置一个 Bamboo 构建计划。
配置 Bamboo
- 在 Bamboo 中,进入构建计划并选择 操作 > 配置计划。
- 选择 触发器 选项卡。
- 选择 添加触发器。
- 输入描述,如
GitLab 触发器。 - 选择 提交更改时仓库触发构建。
- 选择一个或多个仓库的复选框。
- 在 触发 IP 地址 中输入 GitLab IP 地址。这些 IP 地址被允许触发 Bamboo 构建。
- 保存触发器。
- 在左侧面板中,选择一个构建阶段。如果您有多个构建阶段,请选择包含 Git checkout 任务的最后一个阶段。
- 选择 杂项 选项卡。
- 在 模式匹配标签 下的 标签 中输入
${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。
例如:
-
在 GitLab 中创建一个具有
:api权限的 访问令牌。 -
将令牌保存为 Bamboo 中的
$GITLAB_TOKEN变量。 -
将以下脚本作为最终任务添加到 Bamboo 计划的作业中:
#!/bin/bash # 用于更新 GitLab CI 状态的脚本。 # 将此脚本作为 Bamboo 作业中的最终内联脚本任务添加。 # # 通用文档:https://docs.gitlab.com/ee/user/project/integrations/bamboo.html # 修复灵感来自 https://gitlab.com/gitlab-org/gitlab/-/issues/34744 # 遇到第一个错误时停止 set -e # 访问令牌。在 Bamboo 中将其设置为 CI 变量。 #GITLAB_TOKEN= # 状态 cistatus="failed" if [ "${bamboo_buildFailed}" = "false" ]; then cistatus="success" fi repo_url="${bamboo_planRepository_repositoryUrl}" # 检查我们使用的是 SSH 还是 HTTPS protocol=${repo_url::4} if [ "$protocol" == "git@" ]; then repo=${repo_url:${#protocol}}; gitlab_url=${repo%%:*}; else protocol="https://" repo=${repo_url:${#protocol}}; gitlab_url=${repo%%/*}; fi start=$((${#gitlab_url} + 1)) # +1 用于 / (https) 或 : (ssh) end=$((${#repo} - $start -4)) # -4 用于 .git repo=${repo:$start:$end} repo=$(echo "$repo" | sed "s/\//%2F/g") # 发送请求 url="https://${gitlab_url}/api/v4/projects/${repo}/statuses/${bamboo_planRepository_revision}?state=${cistatus}&target_url=${bamboo_buildResultsUrl}" echo "正在发送请求到 $url" curl --fail --request POST --header "PRIVATE-TOKEN: $GITLAB_TOKEN" "$url"
故障排除
构建未触发
如果构建未触发,请确保您在 Bamboo 的 触发 IP 地址 中输入了正确的 GitLab IP 地址。同时检查集成 webhook 日志中的请求失败情况。
GitLab UI 中不可用的高级 Atlassian Bamboo 功能
高级 Atlassian Bamboo 功能与 GitLab 不兼容。这些功能包括但不限于从 GitLab UI 查看构建日志的能力。