附录 A: GitHub 版本 1 源代码操作 - Amazon CodePipeline
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

附录 A: GitHub 版本 1 源代码操作

本附录提供有关中 GitHub 操作版本 1 的信息 CodePipeline。

注意

GitHub 版本 1 的 CodePipeline 操作不适用于中国(北京)和中国(宁夏)区域。要参考其他可用操作,请参阅 产品和服务与 CodePipeline

虽然我们不建议使用 GitHub 版本 1 操作,但具有 GitHub 版本 1 操作的现有管道将继续运行而不会产生任何影响。对于具有 GitHub版本 1 操作的管道, CodePipeline 使用OAuth基于令牌的令牌连接到您的 GitHub 存储库。相比之下, GitHub 操作(版本 2)使用连接资源将资源与您的 GitHub 存储库相关联 Amazon 。该连接资源使用基于应用的令牌进行连接。有关将管道更新为使用连接的推荐 GitHub 操作的更多信息,请参阅将 GitHub 版本 1 的源操作更新为 GitHub 版本 2 的源操作。有关OAuth基于应用程序的访问与基于应用程序 GitHub 的 GitHub 访问相比的更多信息,请参阅https://docs.github.com/en/developers/apps/differences-between-github-apps-and-oauth-apps

要与集成 GitHub,请为您的管道 CodePipeline 使用 GitHub OAuth应用程序。 CodePipeline使用 webhook 通过 GitHub 版本 1 源操作管理管道的变更检测。

注意

在中配置 GitHub 版本 2 源操作时 Amazon CloudFormation,无需包含任何 GitHub 令牌信息或添加 webhook 资源。您可以按照《 Amazon CloudFormation 用户指南》中的AWS::CodeStarConnections: Connection 所示配置连接资源。

本参考包含 GitHub 版本 1 操作的以下章节:

重要

创建 CodePipeline webhook 时,请勿使用自己的凭证,也不要在多个 Webhook 中重复使用相同的密钥令牌。为了获得最佳安全性,请为您创建的每个 webhook 生成一个唯一的密钥令牌。密钥令牌是您提供的任意字符串,用于计算和签署发送到的 GitHub webhook 有效负载 CodePipeline,以保护 webhook 有效负载的完整性和真实性。使用自己的凭证或在多个 Webhook 中重复使用相同的令牌可能会导致安全漏洞。

注意

如果提供了秘密令牌,它将在响应中被删除。

添加 GitHub 版本 1 源操作

您可以 CodePipeline 通过以下方式向其中添加 GitHub 版本 1 源操作:

  • 使用 CodePipeline 控制台的 “创建管道” 向导 (创建自定义管道(控制台)) 或 “编辑” 操作页面选择GitHub提供者选项。控制台会创建一个 Webhook,用于在源发生变更时启动您的管道。

  • 使用CLI为操作添加操作配置并创建其他资源,如下所示:GitHub

    • 使用 GitHub 版本 1 源操作参考中的 GitHub 示例操作配置来创建操作,如创建管道 (CLI) 中所示。

    • 禁用定期检查并手动创建更改检测,因为更改检测方法默认通过轮询源来启动管道。您可以将投票管道迁移到 webhook 以执行 GitHub 版本 1 操作。

GitHub 版本 1 源操作参考

注意

虽然我们不建议使用 GitHub 版本 1 操作,但具有 GitHub 版本 1 操作的现有管道将继续运行而不会产生任何影响。对于具有 GitHub GitHub 版本 1 源操作的管道, CodePipeline 使用OAuth基于令牌的令牌连接到您的 GitHub 存储库。相比之下,新 GitHub 操作(版本 2)使用连接资源将 Amazon 资源与存储 GitHub 库相关联。该连接资源使用基于应用的令牌进行连接。有关将管道更新为使用连接的推荐 GitHub 操作的更多信息,请参阅将 GitHub 版本 1 的源操作更新为 GitHub 版本 2 的源操作

在配置的 GitHub 存储库和分支上进行新提交时触发管道。

要与集成 GitHub,请为您的管道 CodePipeline 使用OAuth应用程序或个人访问令牌。如果您使用控制台创建或编辑管道,则 CodePipeline 会创建一个 GitHub webhook,当存储库发生更改时,该挂钩会启动您的管道。

在通过 GitHub 操作连接管道之前,您必须已经创建了 GitHub 账户和存储库。

如果您想限制对存储库的访问权限 CodePipeline ,请创建一个 GitHub 帐户,并仅向该账户授予您想要集成的存储库的访问权限 CodePipeline。当您配置 CodePipeline 为使用 GitHub 存储库作为管道中的源阶段时,请使用该帐户。

有关更多信息,请参阅 GitHub 网站上的GitHub 开发者文档

操作类型

  • 类别:Source

  • 拥有者:ThirdParty

  • 提供方:GitHub

  • 版本:1

配置参数

所有者

必需:是

拥有 GitHub存储库的 GitHub 用户或组织的名称。

存储库

必需:是

要在其中检测源更改的存储库的名称。

分支

必需:是

要在其中检测源更改的分支的名称。

OAuthToken

必需:是

表示允许对 GitHub 存储库执行操作 CodePipeline 的 GitHub 身份验证令牌。条目始终显示为四个星号的掩码。它表示以下值:

  • 使用控制台创建管道时, CodePipeline 使用OAuth令牌注册 GitHub 连接。

  • 使用创建管道时,可以在此字段中传递您的 GitHub 个人访问令牌。 Amazon CLI 将星号 (****) 替换为从中复制的个人访问令牌。 GitHub在运行 get-pipeline 查看操作配置时,将显示此值的四星号掩码。

  • 使用 Amazon CloudFormation 模板创建管道时,必须先将令牌作为密钥存储在中 Amazon Secrets Manager。您应该动态引用 Secrets Manager 中存储的密钥,将其作为此字段的值包含在内,如 {{resolve:secretsmanager:MyGitHubSecret:SecretString:token}}

有关 GitHub 范围的更多信息,请参阅 GitHub 网站上的GitHub 开发者API参考

PollForSourceChanges

必需:否

PollForSourceChanges控制是否 CodePipeline 轮询 GitHub存储库以获取源代码更改。我们建议您改为使用 Webhook 来检测源更改。有关配置 Webhook 的更多信息,请参阅将轮询管道迁移到 webhook(GitHub 版本 1 源操作)(CLI)更新推送事件的管道(GitHub 版本 1 源操作)(Amazon CloudFormation 模板)

重要

如果您要配置 Webhook,则必须将 PollForSourceChanges 设置为 false 以避免重复的管道执行。

此参数的有效值:

  • True: 如果已设置,则会 CodePipeline 轮询您的存储库以了解源代码更改。

    注意

    如果省略PollForSourceChanges,则 CodePipeline 默认为轮询存储库是否有源更改。此行为与将 PollForSourceChanges 设置为 true 相同。

  • False: 如果已设置,则 CodePipeline 不会轮询您的存储库以了解源代码更改。如果您打算配置 Webhook 来检测源更改,请使用此设置。

输入构件

  • 构件数:0

  • 描述:输入构件不适用于此操作类型。

输出构件

  • 构件数:1

  • 描述:此操作的输出对象是一个ZIP文件,其中包含已配置的存储库和提交时分支的内容,指定为管道执行的源修订版。从存储库生成的构件是 GitHub 操作的输出对象。源代码提交 ID 显示 CodePipeline 为触发管道执行的源修订版。

输出变量

配置后,此操作会生成变量,该变量可由管道中下游操作的操作配置引用。此操作生成的变量可视为输出变量,即使操作没有命名空间也是如此。您可以使用命名空间配置操作,以使这些变量可用于下游操作的配置。

有关中变量的更多信息 CodePipeline,请参阅变量参考

CommitId

触发管道执行的 GitHub 提交 ID。提交IDs是SHA提交的全部内容。

CommitMessage

与触发管道执行的提交相关联的描述消息(如果有)。

CommitUrl

触发管道的提交URL地址。

RepositoryName

触发管道的提交所在 GitHub 存储库的名称。

BranchName

进行源代码更改的 GitHub 存储库的分支名称。

AuthorDate

授权提交的日期,采用时间戳格式。

CommitterDate

进行提交的日期,采用时间戳格式。

操作声明(GitHub 示例)

YAML
Name: Source Actions: - InputArtifacts: [] ActionTypeId: Version: '1' Owner: ThirdParty Category: Source Provider: GitHub OutputArtifacts: - Name: SourceArtifact RunOrder: 1 Configuration: Owner: MyGitHubAccountName Repo: MyGitHubRepositoryName PollForSourceChanges: 'false' Branch: main OAuthToken: '{{resolve:secretsmanager:MyGitHubSecret:SecretString:token}}' Name: ApplicationSource
JSON
{ "Name": "Source", "Actions": [ { "InputArtifacts": [], "ActionTypeId": { "Version": "1", "Owner": "ThirdParty", "Category": "Source", "Provider": "GitHub" }, "OutputArtifacts": [ { "Name": "SourceArtifact" } ], "RunOrder": 1, "Configuration": { "Owner": "MyGitHubAccountName", "Repo": "MyGitHubRepositoryName", "PollForSourceChanges": "false", "Branch": "main", "OAuthToken": "{{resolve:secretsmanager:MyGitHubSecret:SecretString:token}}" }, "Name": "ApplicationSource" } ] },

正在连接到 GitHub (OAuth)

首次使用控制台向管道添加 GitHub 存储库时,系统会要求您授予对仓库的 CodePipeline 访问权限。该令牌需要以下 GitHub 范围:

  • repo 范围,用于完全控制从公有和私有存储库读取项目并将项目提取到管道中的过程。

  • admin:repo_hook 范围,用于完全控制存储库挂钩。

使用CLI或 Amazon CloudFormation 模板时,必须提供已在中创建的个人访问令牌的值 GitHub。

下列相关资源在您使用此操作的过程中会有所帮助。