步驟 5:建立組建專案 - AWS CodeBuild

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

步驟 5:建立組建專案

(上一個步驟:步驟 4:上傳源代碼和 Buildspec 檔案)

在此步驟中,您會建立 AWS CodeBuild 用來執行組建的組建專案。一個重建專案其中包含如何執行組建的信息,包括從何處獲取來源碼、使用哪個建置環境、執行哪些建置命令、在何處存放建置輸出。一個重建環境代表 CodeBuild 用來執行組建的作業系統、程式語言執行時間和工具的組合。建置環境會做為 Docker 影像表達。如需詳細資訊,請參閱 Docker Docs 網站上的 Docker 概觀主題。

針對此組建環境,您會指示 CodeBuild 使用包含 Java Developments Kit (JDK) 和 Apache Maven 版本的 Docker 影像。

建立建置專案

  1. 使用 AWS CLI 執行 create-project 命令:

    aws codebuild create-project --generate-cli-skeleton

    即會在輸出中顯示 JSON 格式化資料。將資料複製到本機電腦或執行個體上 AWS CLI 安裝位置中名為 create-project.json 的檔案。若您選擇使用不同的檔案名稱,請務必在本教學課程範圍中使用它。

    修改複製的資料,遵循此格式,並儲存您的結果:

    { "name": "codebuild-demo-project", "source": { "type": "S3", "location": "codebuild-region-ID-account-ID-input-bucket/MessageUtil.zip" }, "artifacts": { "type": "S3", "location": "codebuild-region-ID-account-ID-output-bucket" }, "environment": { "type": "LINUX_CONTAINER", "image": "aws/codebuild/standard:4.0", "computeType": "BUILD_GENERAL1_SMALL" }, "serviceRole": "serviceIAMRole" }

    ReplaceserviceIAMRole使用 CodeBuild Service 角色的 Amazon Resource Name (ARN) (例如,arn:aws:iam::account-ID:role/role-name。若要建立服務角色,請參閱建立 CodeBuild 服務角色

    在此資料中:

    • name 代表此組建專案的必要識別符 (在此範例中為 codebuild-demo-project)。組建專案名稱在您帳戶內的所有組建專案中都必須是唯一的。

    • 適用於sourcetype是代表來源碼儲存庫類型的必要值 (在此範例中為S3Amazon S3。

    • 針對 sourcelocation 代表來源碼的路徑 (在此範例中為輸入儲存貯體名稱,其後跟隨 ZIP 檔案名稱)。

    • 適用於artifactstype是代表建置輸出成品儲存庫類型的必要值 (在此範例中為S3Amazon S3。

    • 針對 artifactslocation 代表您先前建立或找到的輸出儲存貯體名稱 (在此範例中為 codebuild-region-ID-account-ID-output-bucket)。

    • 適用於environmenttype是代表建置環境類型的必要值 (在此範例中為LINUX_CONTAINER

    • 適用於environmentimage是代表此組建專案使用之 Docker 影像名稱和標籤組合的必要值,由 Docker 影像儲存庫類型指定 (在此範例中為aws/codebuild/standard:4.0以獲取 CodeBuild Docker 映像存儲庫中的 Docker 映像)。aws/codebuild/standard是 Docker 映像的名稱。4.0是 Docker 影像的標籤。

      若要尋找更多您可以用於案例中的 Docker 影像,請參閱建置環境參考

    • 適用於environmentcomputeType是代表 CodeBuild 使用運算資源的必要值 (在此範例中為BUILD_GENERAL1_SMALL

    注意

    其他原始 JSON 格式資料中的可用值,例如 descriptionbuildspecauth (包含 typeresource)、pathnamespaceTypename (適用於 artifacts)、packagingenvironmentVariables (包含 namevalue)、timeoutInMinutesencryptionKeytags (包含 keyvalue) 為選擇性。本教學課程中不會使用到它們,因此不會在此顯示。如需詳細資訊,請參閱 建立建置專案 (AWS CLI)

  2. 切換到包含您儲存檔案的目錄,然後再次執行 create-project 命令。

    aws codebuild create-project --cli-input-json file://create-project.json

    若執行成功,則會在輸出中顯示與下列內容相似的資料。

    { "project": { "name": "codebuild-demo-project", "serviceRole": "serviceIAMRole", "tags": [], "artifacts": { "packaging": "NONE", "type": "S3", "location": "codebuild-region-ID-account-ID-output-bucket", "name": "message-util.zip" }, "lastModified": 1472661575.244, "timeoutInMinutes": 60, "created": 1472661575.244, "environment": { "computeType": "BUILD_GENERAL1_SMALL", "image": "aws/codebuild/standard:4.0", "type": "LINUX_CONTAINER", "environmentVariables": [] }, "source": { "type": "S3", "location": "codebuild-region-ID-account-ID-input-bucket/MessageUtil.zip" }, "encryptionKey": "arn:aws:kms:region-ID:account-ID:alias/aws/s3", "arn": "arn:aws:codebuild:region-ID:account-ID:project/codebuild-demo-project" } }
    • project 代表此組建專案的相關資訊。

      • tags 代表宣告的任何標籤。

      • packaging 代表組建輸出成品存放在輸出儲存貯體的方式。NONE 表示會在輸出儲存貯體內建立一個資料夾。組建輸出成品會存放在該資料夾中。

      • lastModified 代表時間 (以 Unix 時間格式表示),代表組建專案相關資訊最後變更的時間。

      • timeoutInMinutes代表分鐘數,若在此分鐘數過後建置仍未完成,便會停止建置。(預設為 60 分鐘。)

      • created 代表時間 (以 Unix 時間格式表示),代表建置專案的建立時間。

      • environmentVariables代表任何已宣告且可供 CodeBuild 在建置期間使用的環境變數。

      • encryptionKey代表 CodeBuild 用來加密建置輸出成品之客户受管金鑰的 ARN。

      • arn 代表組建專案的 ARN。

注意

運行create-project命令,則可能會輸出類似下列內容的錯誤訊息:用户:使用者 ARN未獲得授權,不得執行:CodeBuild: 組建專案。這很可能是因為您配置了AWS CLI針對未具備使用 CodeBuild 來建置專案的足夠許可的 IAM 使用者的證書。要解決此問題,請配置AWS CLI,使用屬於以下其中一個 IAM 實體的證書:

下一步驟

步驟 6:執行建置