GitHub适用于 的 Enterprise Server 示例CodeBuild - AWS CodeBuild
AWS 文档中描述的 AWS 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 AWS 服务入门

GitHub适用于 的 Enterprise Server 示例CodeBuild

AWS CodeBuild 支持将 GitHub Enterprise Server 作为源存储库。此示例显示了如何在 CodeBuild Enterprise Server 存储库安装了证书的情况下设置 GitHub 项目。它还演示了如何启用 Webhook,这样在每次代码更改推送到您的 CodeBuild Enterprise Server 存储库后,GitHub 都可以重新构建源代码。

Prerequisites

  1. 为您的 CodeBuild 项目生成个人访问令牌。我们建议您创建一个 GitHub Enterprise 用户,并为该用户生成个人访问令牌。将它复制到您的剪贴板,以便在创建 CodeBuild 项目时使用。有关更多信息,请参阅 帮助网站上的为命令行创建个人访问令牌GitHub。

    在创建个人访问令牌时,请在定义中包含存储库范围。

  2. 从 GitHub Enterprise Server 下载您的证书。CodeBuild 使用证书与存储库建立可信 SSL 连接。

    Linux/macOS 客户端:

    从您的 终端窗口中运行以下命令:

    echo -n | openssl s_client -connect HOST:PORTNUMBER \ | sed -ne '/-BEGIN CERTIFICATE-/,/-END CERTIFICATE-/p' > /folder/filename.pem

    将命令中的占位符替换为以下值:

    HOST, 您的 GitHub Enterprise Server 存储库的 IP 地址。

    PORTNUMBER, 用于连接的端口号 (例如,443)。

    folder, 您将证书下载到的文件夹。

    filename, 证书文件的文件名。

    重要

    将证书另存为 .pem 文件。

    Windows 客户端:

    使用浏览器从 GitHub Enterprise Server 下载您的证书。要查看站点的证书详细信息,请选择挂锁图标。有关如何导出证书的信息,请参阅浏览器文档。

    重要

    将证书另存为 .pem 文件。

  3. 将您的证书文件上传到 S3 存储桶。有关如何创建 S3 存储桶的信息,请参阅如何创建 S3 存储桶? 有关如何将对象上传到 S3 存储桶的信息,请参阅如何将文件和文件夹上传至存储桶?

    注意

    此存储桶必须与您的构建项目处在同一个 AWS 区域中。例如,如果您指示 CodeBuild 在美国东部(俄亥俄)区域运行生成任务,则存储桶也必须位于美国东部(俄亥俄)区域中。

创建将 GitHub Enterprise Server 作为源存储库的构建项目并启用 Webhook(控制台)

  1. Open the AWS CodeBuild console at https://console.amazonaws.cn/codesuite/codebuild/home.

  2. If a CodeBuild information page is displayed, choose Create build project. Otherwise, on the navigation pane, expand Build, choose Build projects, and then choose Create build project.

  3. Project name (项目名称),输入此构建项目的名称。构建项目名称在您的各个 AWS 账户内必须是唯一的。您也可以包含构建项目的可选描述来帮助其他用户了解此项目的用途。

  4. Source (源)Source provider (源提供商) 中,选择 GitHub Enterprise (企业版)

    • 对于 Personal Access Token,粘贴您复制到剪贴板的令牌,然后选择 Save Token。在 Repository URL (存储库 URL) 中,输入您的 GitHub Enterprise Server 存储库的 URL。

      注意

      您只需输入并保存一次个人访问令牌。未来所有 AWS CodeBuild 项目均会使用此令牌。

    • Repository URL (存储库 URL) 中,输入您的存储库的路径,包括存储库的名称。

    • 展开 Additional configuration (其他配置)

    • 选择 Rebuild every time a code change is pushed to this repository (每次将代码推送到此存储库时都会重建) 以便每次将代码推送到此存储库时进行重建。

    • 选择 Enable insecure SSL (启用不安全的 SSL),在您连接到 GitHub Enterprise Server 项目存储库时忽略 SSL 警告。

      注意

      建议您仅将 Enable insecure SSL (启用不安全的 SSL) 用于测试。它不应在生产环境中使用。

  5. Environment (环境) 中:

    对于 Environment image (环境映像),执行下列操作之一:

    • 要使用由 AWS CodeBuild 托管的 Docker 映像,请选择 Managed image (托管映像),然后从 Operating system (操作系统)Runtime(s) (运行时)Image (映像) 以及 Image version (映像版本) 中进行相应选择。从 Environment type (环境类型) 中进行选择(如果可用)。

    • 要使用其他 Docker 映像,请选择 Custom image (自定义映像)。对于 Environment type (环境类型),选择 ARMLinuxLinux GPUWindows。如果您针对 External registry URL (外部注册表 URL) 选择 Other registry (其他注册表),请在 Docker Hub 中按照格式 docker repository/docker image name 输入 Docker 映像的名称和标签。如果您选择 Amazon ECR,请使用 Amazon ECR repository (Amazon ECR 存储库)Amazon ECR image (Amazon ECR 映像) 在您的 AWS 账户中选择 Docker 映像。

    • 要使用私有 Docker 映像,请选择自定义映像。对于 Environment type (环境类型),选择 ARMLinuxLinux GPUWindows。对于 Image registry (映像注册表),选择 Other registry (其他注册表),然后输入您的私有 Docker 映像的凭证的 ARN。凭证必须由 Secrets Manager 创建。有关更多信息,请参阅 AWS Secrets Manager 用户指南 中的什么是 AWS Secrets Manager?

  6. In Service role, do one of the following:

    • If you do not have a CodeBuild service role, choose New service role. In Role name, enter a name for the new role.

    • If you have a CodeBuild service role, choose Existing service role. In Role ARN, choose the service role.

    注意

    When you use the console to create or update a build project, you can create a CodeBuild service role at the same time. By default, the role works with that build project only. If you use the console to associate this service role with another build project, the role is updated to work with the other build project. A service role can work with up to 10 build projects.

  7. Expand Additional configuration.

    If you want CodeBuild to work with your VPC:

    • For VPC, choose the VPC ID that CodeBuild uses.

    • For VPC Subnets, choose the subnets that include resources that CodeBuild uses.

    • For VPC Security groups, choose the security groups that CodeBuild uses to allow access to resources in the VPCs.

    For more information, see 将 AWS CodeBuild 与 Amazon Virtual Private Cloud 结合使用.

  8. 构建规范中,执行以下操作之一:

    • 选择 Use a buildspec file (使用 buildspec 文件) 以在源代码根目录中使用 buildspec.yml 文件。

    • 选择 Insert build commands (插入构建命令) 以使用控制台插入构建命令。

    有关更多信息,请参见 构建规范参考

  9. In Artifacts, for Type, do one of the following:

    • If you do not want to create build output artifacts, choose No artifacts.

    • To store the build output in an S3 bucket, choose Amazon S3, and then do the following:

      • If you want to use your project name for the build output ZIP file or folder, leave Name blank. Otherwise, enter the name. By default, the artifact name is the project name. If you want to use a different name, enter it in the artifacts name box. If you want to output a ZIP file, include the zip extension.

      • For Bucket name, choose the name of the output bucket.

      • If you chose Insert build commands earlier in this procedure, for Output files, enter the locations of the files from the build that you want to put into the build output ZIP file or folder. For multiple locations, separate each location with a comma (for example, appspec.yml, target/my-app.jar). For more information, see the description of files in 构建规范语法.

  10. For Cache type, choose one of the following:

    • If you do not want to use a cache, choose No cache.

    • If you want to use an Amazon S3 cache, choose Amazon S3, and then do the following:

      • For Bucket, choose the name of the S3 bucket where the cache is stored.

      • (Optional) For Cache path prefix, enter an Amazon S3 path prefix. The Cache path prefix value is similar to a directory name. It makes it possible for you to store the cache under the same directory in a bucket.

        重要

        Do not append a trailing slash (/) to the end of the path prefix.

    • If you want to use a local cache, choose Local, and then choose one or more local cache modes.

      注意

      Docker layer cache mode is available for Linux only. If you choose it, your project must run in privileged mode. The ARM_CONTAINER and LINUX_GPU_CONTAINER environment types and the BUILD_GENERAL1_2XLARGE compute type do not support the use of a local cache.

    Using a cache saves considerable build time because reusable pieces of the build environment are stored in the cache and used across builds. For information about specifying a cache in the buildspec file, see 构建规范语法. For more information about caching, see 在 AWS CodeBuild 中构建缓存.

  11. 选择 Create build project (创建构建项目)。在生成项目页面上,选择 Start build (开始生成)

  12. 如果您在 Source (源) 中启用了 Webhook,将出现 Create webhook (创建 Webhook) 对话框,其中显示 Payload URL (负载 URL)Secret (密钥) 的值。

    重要

    Create webhook 对话框只出现一次。请复制负载 URL 和私有密钥。在 GitHub Enterprise Server 中添加 Webhook 时会用到它们。

    如果您需要再次生成负载 URL 和私有密钥,则必须先从 GitHub Enterprise Server 存储库中删除 Webhook。在您的 CodeBuild 项目中,清除 Webhook 复选框,然后选择 Save (保存)。然后您可以在创建或更新 CodeBuild 项目时选中 Webhook 复选框。Create webhook (创建 webhook) 对话框将再次出现。

  13. 在 GitHub Enterprise Server 中,选择存储您的 CodeBuild 项目的存储库。

  14. 选择 Settings (设置),选择 Hooks & services (挂钩和服务),然后选择 Add webhook (添加 webhook)

  15. 输入负载 URL 和私有密钥,接受其他字段的默认值,然后选择 Add webhook

  16. 返回您的 CodeBuild 项目。关闭 Create webhook 对话框,然后选择 Start build