amazon-web-services - AWS codebuild 是否允许使用 bitbucket 企业服务器?
问题描述
我希望将企业 bitbucket 服务器与 aws ci/cd 管道功能集成。
我尝试在 aws codebuild 中创建一个项目,但没有看到 bitbucket enterprise 的任何选项。
如果这是不可能的,那么使用 api gateway / webhooks 等的长途路线是什么?
解决方案
AWS Codebuild 仅支持 Bitbucket 云。要与 Bitbucket 自托管解决方案集成,您需要创建一个 API 网关 + Lambda。然后将此网关地址作为 webhook 添加到 bitbucket 存储库中。然后 Lambda 将负责处理来自 Bitbucket 服务器的传入事件。从这里可能有 2 条路线。
一种方法是下载特定提交的 zip 并将其上传到 S3 存储桶。添加 S3 作为构建项目的源触发器。在这种情况下,您将无法运行任何特定于 git 的命令,因为它只是一个包含特定版本文件的 zip 文件。
第二种选择可能是通过直接从 Lambda 调用将相关信息传递给 codebuild。将 commit_id、事件(pr 或 push)、分支等细节作为环境变量传递。根据此信息,在运行其他构建步骤之前,在 codebuild 中运行 git clone。这样你就可以访问 git 特定的命令。
这是来自 AWS 的示例工作流程(它用于代码管道,但您可以针对代码构建进行适当修改)
推荐阅读
- android - 如何在查询中实现字符串数组?
- typescript - 打字稿注入`require(...)`而不是导入文件
- javascript - Code only works when not wrapped in a function
- sql-server - 访问数据导入的 SSIS 包的 SQL 作业错误
- java - Spring Data JDBC 是否支持自定义类型转换器
- d3.js - D3 - 2 种不同的酒吧填充物
- c# - 程序集重定向未指向预期的程序集
- r - paste(v, collapse = "\n") 中的错误:结果将超过 2^31-1 个字节
- node.js - scss 错误“预期媒体查询” - 使用多个媒体查询 - 标准化设备的大小
- android - PreferenceScreen 之间的分隔符