附錄 A:第 1 GitHub 版來源動作 - AWS CodePipeline

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

附錄 A:第 1 GitHub 版來源動作

本附錄提供中 GitHub 動作第 1 版的相關資訊 CodePipeline。

注意

雖然我們不建議使用 GitHub 版本 1 動作,但具有第 1 GitHub 版動作的現有管道仍可繼續運作,而不會造成任何影響。對於具有 GitHub版本 1 操作的管道, CodePipeline 使用基於 OAuth 的 GitHub 令牌連接到存儲庫。相反地, GitHub 動作 (版本 2) 會使用連線資源將資 AWS 源與 GitHub 存放庫相關聯。連接資源使用基於應用程序的令牌進行連接。如需有關將管線更新為使用連線的建議 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 透過第 1 GitHub 版來源動作管道管理變更偵測。

注意

當您在中配置第 2 GitHub 版來源動作時 AWS CloudFormation,不會包含任何 GitHub 權杖資訊或新增 webhook 資源。您可以設定連線資源,如《 AWS CloudFormation 使用指南》AWS::CodeStarConnections::Connection中所示。

此參考包含第 1 GitHub 版動作的下列章節:

新增 GitHub 版本 1 來源動作

您可以將第 1 GitHub 版來源動作新 CodePipeline 增至:

  • 使用主 CodePipeline 控台「建立管線精靈」(建立管道 (主控台)) 或 「編輯」動作頁面來選擇GitHub提供者選項。控制台創建一個 webhook,當源更改時啟動管道。

  • 使用 CLI 新增動作的動作組態,並建立其他資源,如下所示:GitHub

    • 使用中的GitHub範例動作配置GitHub 版本 1 來源動作結構參考來建立動作,如中所示建立管道 (CLI)

    • 停用定期檢查並手動建立變更偵測,因為變更偵測方法預設為透過輪詢來源來啟動管線。您可以將輪詢管線移轉至 Webhook 以進行第 1 GitHub 版動作。

GitHub 版本 1 來源動作結構參考

注意

雖然我們不建議使用 GitHub 版本 1 動作,但具有第 1 GitHub 版動作的現有管道仍可繼續運作,而不會造成任何影響。對於具有 GitHub GitHub 版本 1 源動作的管道, CodePipeline 使用基於 OAuth 的令牌連接到存儲 GitHub 庫。相反地,新 GitHub 動作 (版本 2) 會使用連線資源將資 AWS 源與 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

組態參數

Owner

必要:是

擁有 GitHub存放庫的 GitHub 使用者或組織的名稱。

Repo

必要:是

要偵測來源變更的儲存庫名稱。

分支

必要:是

要偵測來源變更的分支名稱。

O AuthToken

必要:是

表示允許在 GitHub 存放庫上執 CodePipeline 行作業的 GitHub 驗證 Token。此項目永遠顯示為四個星號的遮罩。代表下列其中一個值:

  • 當您使用主控台建立管道時,請 CodePipeline 使用 OAuth 權杖來註冊 GitHub 連線。

  • 當您使用建立管道時,您可以在此欄位中傳遞您的 GitHub 個人存取權杖。 AWS CLI 用複製來源的個人訪問令牌替換星號(****)。 GitHub當您執行 get-pipeline 以檢視動作組態時,會為此數值顯示四星號遮罩。

  • 當您使用 AWS CloudFormation 範本建立管道時,必須先將權杖作為密碼儲存在中 AWS Secrets Manager。您可以將此欄位的值納入為 Secret Manager 中已儲存密碼的動態參照,例如{{resolve:secretsmanager:MyGitHubSecret:SecretString:token}}

有關 GitHub 範圍的更多信息,請參閱 GitHub 網站上的GitHub 開發人員 API 參考

PollForSourceChanges

必要:否

PollForSourceChanges控制是否 CodePipeline 輪詢 GitHub存放庫中的來源變更。我們建議您改用 webhook 以偵測來源變更。如需有關設定 webhook 的詳細資訊,請參閱將輪詢管線移轉至 Webhook (第 1 GitHub 版來源動作) (CLI)更新推送事件的管道 (第 1 GitHub 版來源動作) (AWS CloudFormation 範本)

重要

如果您想要設定 webhook,則必須將 PollForSourceChanges 設定為 false,以避免管道執行重複。

此參數的有效值:

  • True:如果設置,則 CodePipeline 輪詢您的存儲庫以進行源更改。

    注意

    如果省略PollForSourceChanges,則 CodePipeline 預設會輪詢儲存庫以進行來源變更。此行為同於 PollForSourceChanges 設定為 true

  • False:如果設定,則 CodePipeline 不會輪詢您的儲存庫是否有來源變更。如果您想要設定 webhook 以偵測來源變更,請使用此設定。

Input artifacts (輸入成品)

  • 人工因素數目:0

  • 描述:輸入成品不適用於此動作類型。

輸出成品

  • 人工因素數目:1

  • 描述:此動作的輸出成品是 ZIP 檔案,其中包含在指定為管道執行來源修訂的遞交上所設定的儲存庫和分支的內容。從存放庫產生的成品是 GitHub 動作的輸出成品。中的原始程式碼提交 ID 會顯示 CodePipeline 為觸發管線執行的來源修訂。

輸出變數

設定時,此動作會產生變數,供管道中的下游動作的動作組態所參考。即使此動作沒有命名空間,此動作產生的變數仍可視為輸出變數。您可以設定動作的命名空間,讓這些變數可供下游動作的組態使用。

如需中變數的更多資訊 CodePipeline,請參閱Variables

CommitId

觸發管線執行的 GitHub 提交 ID。遞交 ID 是遞交的完整 SHA。

CommitMessage

與觸發管道執行的遞交相關聯的描述訊息 (如果有的話)。

CommitUrl

觸發管道的遞交的 URL 位址。

RepositoryName

執行觸發管線之提交的 GitHub 儲存庫名稱。

BranchName

進行來源變更之 GitHub 儲存庫的分支名稱。

AuthorDate

遞交的撰寫日期 (時間戳記格式)。

如需 Git 中的作者和遞交者之間差異的詳細信息,請參閱 Scott Chacon 和 Ben Straub 共同撰寫的 Pro Git 中的檢視提交的歷史記錄

CommitterDate

遞交的遞交日期 (時間戳記格式)。

如需 Git 中的作者和遞交者之間差異的詳細信息,請參閱 Scott Chacon 和 Ben Straub 共同撰寫的 Pro Git 中的檢視提交的歷史記錄

動作宣告 (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 或 AWS CloudFormation 範本時,您必須為已在中建立的個人存取權杖提供值 GitHub。

以下相關資源可協助您使用此動作。