選取您的 Cookie 偏好設定

我們使用提供自身網站和服務所需的基本 Cookie 和類似工具。我們使用效能 Cookie 收集匿名統計資料,以便了解客戶如何使用我們的網站並進行改進。基本 Cookie 無法停用,但可以按一下「自訂」或「拒絕」以拒絕效能 Cookie。

如果您同意,AWS 與經核准的第三方也會使用 Cookie 提供實用的網站功能、記住您的偏好設定,並顯示相關內容,包括相關廣告。若要接受或拒絕所有非必要 Cookie,請按一下「接受」或「拒絕」。若要進行更詳細的選擇,請按一下「自訂」。

自動為 Java 和 Python 專案建立動態 CI 管道 - AWS 方案指引

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

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

自動為 Java 和 Python 專案建立動態 CI 管道

由 Aromal Raj Jayarajan (AWS)、Amarnath Reddy (AWS)、MAHESH RAGHUNANDANAN (AWS) 和 Vijesh Vijayakumaran Nair (AWS) 建立

Summary

注意: AWS CodeCommit 不再提供給新客戶。的現有客戶 AWS CodeCommit 可以繼續正常使用服務。進一步了解

此模式說明如何使用 AWS 開發人員工具,自動為 Java 和 Python 專案建立動態持續整合 (CI) 管道。

隨著技術堆疊多樣化和開發活動增加,建立和維護跨組織一致 CI 管道可能會變得困難。透過在 AWS Step Functions 中自動化程序,您可以確保您的 CI 管道的使用和方法一致。

為了自動建立動態 CI 管道,此模式使用以下變數輸入:

  • 程式設計語言 (僅限 Java 或 Python)

  • 管道名稱

  • 必要的管道階段

注意

Step Functions 使用多個 AWS 服務協調管道建立。如需此解決方案中使用的 AWS 服務的詳細資訊,請參閱此模式的工具一節。

先決條件和限制

先決條件

  • 作用中的 AWS 帳戶

  • 正在部署此解決方案的相同 AWS 區域中的 Amazon S3 儲存貯體

  • 具有建立此解決方案所需資源所需的 AWS CloudFormation 許可的 AWS Identity and Access Management (IAM) 主體

限制

  • 此模式僅支援 Java 和 Python 專案。

  • 在此模式中佈建的 IAM 角色遵循最低權限原則。必須根據 CI 管道需要建立的特定資源更新 IAM 角色的許可。

架構

目標技術堆疊

  • AWS CloudFormation

  • AWS CodeBuild

  • AWS CodeCommit

  • AWS CodePipeline

  • IAM

  • Amazon Simple Storage Service (Amazon S3)

  • AWS Systems Manager

  • AWS Step Functions

  • AWS Lambda

  • Amazon DynamoDB

目標架構

下圖顯示使用 AWS 開發人員工具自動建立 Java 和 Python 專案動態 CI 管道的範例工作流程。

使用 AWS 工具自動建立 Java 和 Python 專案動態 CI 管道的工作流程。

該圖顯示以下工作流程:

  1. AWS 使用者以 JSON 格式提供 CI 管道建立的輸入參數。此輸入會啟動 Step Functions 工作流程 (狀態機器),該工作流程會使用 AWS 開發人員工具建立 CI 管道。

  2. Lambda 函數會讀取名為 input-reference 的資料夾,該資料夾存放在 Amazon S3 儲存貯體中,然後產生 buildspec.yml 檔案。 此產生的檔案會定義 CI 管道階段,並存放在存放參數參考的相同 Amazon S3 儲存貯體中。

  3. Step Functions 會檢查 CI 管道建立工作流程的相依性是否有任何變更,並視需要更新相依性堆疊。

  4. Step Functions 在 CloudFormation 堆疊中建立 CI 管道資源,包括 CodeCommit 儲存庫、CodeBuild 專案和 CodePipeline 管道。

  5. CloudFormation 堆疊會將所選技術堆疊 (Java 或 Python) 的範例原始碼和 buildspec.yml 檔案複製到 CodeCommit 儲存庫。

  6. CI 管道執行時間詳細資訊會存放在 DynamoDB 資料表中。

自動化和擴展

  • 此模式僅適用於單一開發環境。在多個開發環境中使用 需要變更組態。

  • 若要新增對多個 CloudFormation 堆疊的支援,您可以建立其他 CloudFormation 範本。如需詳細資訊,請參閱 CloudFormation 文件中的 AWS CloudFormation 入門。 CloudFormation

工具

工具

  • AWS Step Functions 是一種無伺服器協同運作服務,可協助您結合 AWS Lambda 函數和其他 AWS 服務來建置業務關鍵應用程式。

  • AWS Lambda 是一種運算服務,可協助您執行程式碼,而不需要佈建或管理伺服器。它只會在需要時執行程式碼,並自動擴展,因此您只需按使用的運算時間付費。

  • AWS CodeBuild 是一種全受管的建置服務,可協助您編譯原始程式碼、執行單元測試,並產生準備好部署的成品。

  • AWS CodeCommit 是一種版本控制服務,可協助您私下存放和管理 Git 儲存庫,而無需管理您自己的來源控制系統。

  • AWS CodePipeline 可協助您快速建模和設定軟體版本的不同階段,並自動執行持續發行軟體變更所需的步驟。

  • AWS Identity and Access Management (IAM) 可透過控制已驗證和獲授權使用的人員,協助您安全地管理對 AWS 資源的存取。

  • AWS Key Management Service (AWS KMS) 可協助您建立和控制密碼編譯金鑰,以協助保護您的資料。

  • Amazon Simple Storage Service (Amazon S3) 是一種雲端型物件儲存服務,可協助您儲存、保護和擷取任何數量的資料。

  • AWS CloudFormation 可協助您設定 AWS 資源、快速且一致地佈建資源,以及在 AWS 帳戶和區域的整個生命週期中管理這些資源。

  • Amazon DynamoDB 是一項全受管 NoSQL 資料庫服務,可提供快速、可預期且可擴展的效能。

  • AWS Systems Manager 參數存放區提供安全的階層式儲存,用於組態資料管理和秘密管理。

Code

此模式的程式碼可在 GitHub automated-ci-pipeline-creation 儲存庫中使用。儲存庫包含建立此模式中概述的目標架構所需的 CloudFormation 範本。

最佳實務

史詩

任務描述所需技能

建立 Amazon S3 儲存貯體。

建立 Amazon S3 儲存貯體 (或使用現有的儲存貯體),以存放解決方案所需的 CloudFormation 範本、原始程式碼和輸入檔案。

如需詳細資訊,請參閱 Amazon S3 文件中的步驟 1:建立您的第一個 S3 儲存貯體。 Amazon S3

注意

Amazon S3 儲存貯體必須位於您要部署解決方案的相同 AWS 區域。

AWS DevOps

複製 GitHub 儲存庫。

在終端機視窗中執行下列命令,複製 GitHub automated-ci-pipeline-creation 儲存庫:

git clone https://github.com/aws-samples/automated-ci-pipeline-creation.git

如需詳細資訊,請參閱 GitHub 文件中的複製儲存庫

AWS DevOps

將解決方案範本資料夾從複製的 GitHub 儲存庫上傳至您的 Amazon S3 儲存貯體。

從複製的 Solution-Templates 資料夾複製內容,並將其上傳至您建立的 Amazon S3 儲存貯體。

如需詳細資訊,請參閱 Amazon S3 文件中的上傳物件。 Amazon S3

注意

請務必僅上傳 Solution-Templates 資料夾的內容。您只能在 Amazon S3 儲存貯體的根層級上傳檔案。

AWS DevOps

設定先決條件

任務描述所需技能

建立 Amazon S3 儲存貯體。

建立 Amazon S3 儲存貯體 (或使用現有的儲存貯體),以存放解決方案所需的 CloudFormation 範本、原始程式碼和輸入檔案。

如需詳細資訊,請參閱 Amazon S3 文件中的步驟 1:建立您的第一個 S3 儲存貯體。 Amazon S3

注意

Amazon S3 儲存貯體必須位於您要部署解決方案的相同 AWS 區域。

AWS DevOps

複製 GitHub 儲存庫。

在終端機視窗中執行下列命令,複製 GitHub automated-ci-pipeline-creation 儲存庫:

git clone https://github.com/aws-samples/automated-ci-pipeline-creation.git

如需詳細資訊,請參閱 GitHub 文件中的複製儲存庫

AWS DevOps

將解決方案範本資料夾從複製的 GitHub 儲存庫上傳至您的 Amazon S3 儲存貯體。

從複製的 Solution-Templates 資料夾複製內容,並將其上傳至您建立的 Amazon S3 儲存貯體。

如需詳細資訊,請參閱 Amazon S3 文件中的上傳物件。 Amazon S3

注意

請務必僅上傳 Solution-Templates 資料夾的內容。您只能在 Amazon S3 儲存貯體的根層級上傳檔案。

AWS DevOps
任務描述所需技能

在複製的 GitHub 儲存庫中使用 template.yml 檔案,建立 CloudFormation 堆疊來部署解決方案。

  1. 登入 AWS 管理主控台,然後開啟 AWS CloudFormation 主控台

  2. 選擇建立堆疊。下拉式清單隨即出現。

  3. 在下拉式清單中,選取使用新資源 (標準)建立堆疊頁面隨即開啟。

  4. 指定範本區段中,選取上傳範本檔案旁的核取方塊。

  5. 選取 Choose file (選擇檔案)。然後,導覽至複製的 GitHub 儲存庫的根資料夾,然後選取 template.yml 檔案。然後選擇 Open (開啟)

  6. 選擇 Next (下一步)指定堆疊詳細資訊頁面隨即開啟。

  7. 參數區段中,指定下列參數:

    • 針對 S3TemplateBucketName,輸入您先前建立的 Amazon S3 儲存貯體名稱,其中包含此解決方案的原始程式碼和參考。請確定儲存貯體名稱參數為小寫。

    • 針對 DynamoDBTable,輸入 CloudFormation 堆疊建立的 DynamoDB 資料表名稱。

    • 針對 StateMachineName,輸入 CloudFormation 堆疊建立之 Step Functions 狀態機器的名稱。

  8. 選擇 Next (下一步)設定堆疊選項頁面隨即開啟。

  9. Configure stack options (設定堆疊選項) 頁面,選擇 Next (下一步)。請勿變更任何預設值。檢閱頁面隨即開啟。

  10. 檢閱堆疊建立設定。然後,選擇建立堆疊以啟動您的堆疊。

注意

建立堆疊時,它會列在 Stacks 頁面上,狀態為 CREATE_IN_PROGRESS。請務必等待堆疊的狀態變更為 CREATE_COMPLETE,然後再完成此模式中的剩餘步驟。

AWS 管理員、AWS DevOps

部署解決方案

任務描述所需技能

在複製的 GitHub 儲存庫中使用 template.yml 檔案,建立 CloudFormation 堆疊來部署解決方案。

  1. 登入 AWS 管理主控台,然後開啟 AWS CloudFormation 主控台

  2. 選擇建立堆疊。下拉式清單隨即出現。

  3. 在下拉式清單中,選取使用新資源 (標準)建立堆疊頁面隨即開啟。

  4. 指定範本區段中,選取上傳範本檔案旁的核取方塊。

  5. 選取 Choose file (選擇檔案)。然後,導覽至複製的 GitHub 儲存庫的根資料夾,然後選取 template.yml 檔案。然後選擇 Open (開啟)

  6. 選擇 Next (下一步)指定堆疊詳細資訊頁面隨即開啟。

  7. 參數區段中,指定下列參數:

    • 針對 S3TemplateBucketName,輸入您先前建立的 Amazon S3 儲存貯體名稱,其中包含此解決方案的原始程式碼和參考。請確定儲存貯體名稱參數為小寫。

    • 針對 DynamoDBTable,輸入 CloudFormation 堆疊建立的 DynamoDB 資料表名稱。

    • 針對 StateMachineName,輸入 CloudFormation 堆疊建立之 Step Functions 狀態機器的名稱。

  8. 選擇 Next (下一步)設定堆疊選項頁面隨即開啟。

  9. Configure stack options (設定堆疊選項) 頁面,選擇 Next (下一步)。請勿變更任何預設值。檢閱頁面隨即開啟。

  10. 檢閱堆疊建立設定。然後,選擇建立堆疊以啟動您的堆疊。

注意

建立堆疊時,它會列在 Stacks 頁面上,狀態為 CREATE_IN_PROGRESS。請務必等待堆疊的狀態變更為 CREATE_COMPLETE,然後再完成此模式中的剩餘步驟。

AWS 管理員、AWS DevOps
任務描述所需技能

執行您建立的步驟函數。

  1. 登入 AWS 管理主控台,然後開啟 Step Functions 主控台

  2. 開啟您建立的步驟函數。

  3. 選擇 Start execution (開始執行)。然後,以 JSON 格式輸入工作流程的輸入值 (請參閱下列範例輸入)。

  4. 選擇 Start execution (開始執行)

JSON 格式

{ "details": { "tech_stack": "Name of the Tech Stack (python/java)", "project_name": "Name of the Project that you want to create with", "pre_build": "Choose the step if it required in the buildspec.yml file i.e., yes/no", "build": "Choose the step if it required in the buildspec.yml file i.e., yes/no", "post_build": "Choose the step if it required in the buildspec.yml file i.e., yes/no", "reports": "Choose the step if it required in the buildspec.yml file i.e., yes/no", } }

Java JSON 輸入範例

{ "details": { "tech_stack": "java", "project_name": "pipeline-java-pjt", "pre_build": "yes", "build": "yes", "post_build": "yes", "reports": "yes" } }

Python JSON 輸入範例

{ "details": { "tech_stack": "python", "project_name": "pipeline-python-pjt", "pre_build": "yes", "build": "yes", "post_build": "yes", "reports": "yes" } }
AWS 管理員、AWS DevOps

確認 CI 管道的 CodeCommit 儲存庫已建立。

  1. 登入 AWS 管理主控台,然後開啟 CodeCommit 主控台

  2. 儲存庫頁面上,確認您建立的 CodeCommit 儲存庫名稱出現在儲存庫清單中。儲存庫的名稱會附加以下項目: pipeline-java-pjt-Repo

  3. 開啟 CodeCommit 儲存庫,並驗證範例原始程式碼與 buildspec.yml 檔案是否一起推送至主分支。

AWS DevOps

檢查 CodeBuild 專案資源。

  1. 登入 AWS 管理主控台,然後開啟 CodeBuild 主控台

  2. 建置專案頁面上,確認您建立的 CodeBuild 專案名稱出現在專案清單中。專案的名稱會附加以下項目: pipeline-java-pjt-Build

  3. 選取 CodeBuild 專案的名稱以開啟專案。然後,檢閱並驗證下列組態:

    • 專案組態

    • 來源

    • Environment (環境)

    • Buildspec

    • 批次組態

    • 成品

AWS DevOps

驗證 CodePipeline 階段。

  1. 登入 AWS 管理主控台,然後開啟 CodePipeline 主控台

  2. 管道頁面上,確認您建立的管道名稱出現在管道清單中。管道的名稱會附加以下項目: pipeline-java-pjt-Pipeline

  3. 選取管道的名稱以開啟管道。然後,檢閱並驗證管道的每個階段,包括遞交部署

AWS DevOps

確認 CI 管道已成功執行。

  1. CodePipeline 主控台管道頁面上,選取管道的名稱以檢視管道的狀態。

  2. 確認管道的每個階段都有成功狀態。

AWS DevOps

測試設定

任務描述所需技能

執行您建立的步驟函數。

  1. 登入 AWS 管理主控台,然後開啟 Step Functions 主控台

  2. 開啟您建立的步驟函數。

  3. 選擇 Start execution (開始執行)。然後,以 JSON 格式輸入工作流程的輸入值 (請參閱下列範例輸入)。

  4. 選擇 Start execution (開始執行)

JSON 格式

{ "details": { "tech_stack": "Name of the Tech Stack (python/java)", "project_name": "Name of the Project that you want to create with", "pre_build": "Choose the step if it required in the buildspec.yml file i.e., yes/no", "build": "Choose the step if it required in the buildspec.yml file i.e., yes/no", "post_build": "Choose the step if it required in the buildspec.yml file i.e., yes/no", "reports": "Choose the step if it required in the buildspec.yml file i.e., yes/no", } }

Java JSON 輸入範例

{ "details": { "tech_stack": "java", "project_name": "pipeline-java-pjt", "pre_build": "yes", "build": "yes", "post_build": "yes", "reports": "yes" } }

Python JSON 輸入範例

{ "details": { "tech_stack": "python", "project_name": "pipeline-python-pjt", "pre_build": "yes", "build": "yes", "post_build": "yes", "reports": "yes" } }
AWS 管理員、AWS DevOps

確認 CI 管道的 CodeCommit 儲存庫已建立。

  1. 登入 AWS 管理主控台,然後開啟 CodeCommit 主控台

  2. 儲存庫頁面上,確認您建立的 CodeCommit 儲存庫名稱出現在儲存庫清單中。儲存庫的名稱會附加以下項目: pipeline-java-pjt-Repo

  3. 開啟 CodeCommit 儲存庫,並驗證範例原始程式碼與 buildspec.yml 檔案是否一起推送至主分支。

AWS DevOps

檢查 CodeBuild 專案資源。

  1. 登入 AWS 管理主控台,然後開啟 CodeBuild 主控台

  2. 建置專案頁面上,確認您建立的 CodeBuild 專案名稱出現在專案清單中。專案的名稱會附加以下項目: pipeline-java-pjt-Build

  3. 選取 CodeBuild 專案的名稱以開啟專案。然後,檢閱並驗證下列組態:

    • 專案組態

    • 來源

    • Environment (環境)

    • Buildspec

    • 批次組態

    • 成品

AWS DevOps

驗證 CodePipeline 階段。

  1. 登入 AWS 管理主控台,然後開啟 CodePipeline 主控台

  2. 管道頁面上,確認您建立的管道名稱出現在管道清單中。管道的名稱會附加以下項目: pipeline-java-pjt-Pipeline

  3. 選取管道的名稱以開啟管道。然後,檢閱並驗證管道的每個階段,包括遞交部署

AWS DevOps

確認 CI 管道已成功執行。

  1. CodePipeline 主控台管道頁面上,選取管道的名稱以檢視管道的狀態。

  2. 確認管道的每個階段都有成功狀態。

AWS DevOps
任務描述所需技能

刪除 CloudFormation 中的資源堆疊。

在 CloudFormation 中刪除 CI 管道的資源堆疊。

如需詳細資訊,請參閱 CloudFormation 文件中的刪除 AWS CloudFormation 主控台上的堆疊。 CloudFormation

注意

請務必刪除名為 <project_name>-stack 的堆疊。

AWS DevOps

在 Amazon S3 和 CloudFormation 中刪除 CI 管道的相依性。

  1. 清空名為 DeploymentArtifactBucket 的 Amazon S3 儲存貯體。如需詳細資訊,請參閱 Amazon S3 文件中的清空儲存貯體。 Amazon S3

  2. 在 CloudFormation 中刪除 CI 管道的相依性堆疊。如需詳細資訊,請參閱 CloudFormation 文件中的刪除 AWS CloudFormation 主控台上的堆疊。 CloudFormation

注意

請務必刪除名為 pipeline-creation-dependencies-stack 的堆疊。

AWS DevOps

刪除 Amazon S3 範本儲存貯體。

刪除您在此模式的設定先決條件區段中建立的 Amazon s3 儲存貯體,該區段會存放此解決方案的範本。

如需詳細資訊,請參閱 Amazon S3 文件中的刪除儲存貯體。

AWS DevOps

清除您的資源

任務描述所需技能

刪除 CloudFormation 中的資源堆疊。

在 CloudFormation 中刪除 CI 管道的資源堆疊。

如需詳細資訊,請參閱 CloudFormation 文件中的刪除 AWS CloudFormation 主控台上的堆疊。 CloudFormation

注意

請務必刪除名為 <project_name>-stack 的堆疊。

AWS DevOps

在 Amazon S3 和 CloudFormation 中刪除 CI 管道的相依性。

  1. 清空名為 DeploymentArtifactBucket 的 Amazon S3 儲存貯體。如需詳細資訊,請參閱 Amazon S3 文件中的清空儲存貯體。 Amazon S3

  2. 在 CloudFormation 中刪除 CI 管道的相依性堆疊。如需詳細資訊,請參閱 CloudFormation 文件中的刪除 AWS CloudFormation 主控台上的堆疊。 CloudFormation

注意

請務必刪除名為 pipeline-creation-dependencies-stack 的堆疊。

AWS DevOps

刪除 Amazon S3 範本儲存貯體。

刪除您在此模式的設定先決條件區段中建立的 Amazon s3 儲存貯體,該區段會存放此解決方案的範本。

如需詳細資訊,請參閱 Amazon S3 文件中的刪除儲存貯體。

AWS DevOps

相關資源

隱私權網站條款Cookie 偏好設定
© 2025, Amazon Web Services, Inc.或其附屬公司。保留所有權利。