附錄 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 存取的詳細資訊,請參閱〈〉https://docs.github.com/en/developers/apps/differences-between-github-apps-and-oauth-apps。 GitHub

若要與整合 GitHub,請在管道中 CodePipeline 使用 GitHub OAuth應用程式。 CodePipeline使用 webhook 透過第 1 GitHub 版來源動作管道管理變更偵測。

注意

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

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

重要

建立 CodePipeline Webhook 時,請勿使用您自己的憑證,也不要在多個 Webhook 上重複使用相同的密碼權杖。為了獲得最佳安全性,請為您創建的每個 webhook 生成一個唯一的密鑰令牌。秘密令牌是您提供的任意字符串, GitHub用於計算和簽署發送到的 webhook 有效載荷 CodePipeline,以保護 webhook 有效載荷的完整性和真實性。使用您自己的憑據或在多個 webhook 上重複使用相同的令牌可能會導致安全漏洞。

注意

如果提供了秘密令牌,則將在響應中對其進行編輯。

新增 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

必要:是

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

分支

必要:是

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

OAuthToken

必要:是

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

  • 當您使用控制台建立管道時, CodePipeline 會使用 OAuth Token 來註冊 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,請參閱變數參考

CommitId

觸發管線執行的 GitHub 提交 ID。提交IDs是完整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。

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