本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
步驟 5:建立組建專案
(上一個步驟:步驟 4:上傳源代碼和 Buildspec 檔案)
在此步驟中,您會建立 AWS CodeBuild 用來執行組建的組建專案。一個重建專案其中包含如何執行組建的信息,包括從何處獲取來源碼、使用哪個建置環境、執行哪些建置命令、在何處存放建置輸出。一個重建環境代表 CodeBuild 用來執行組建的作業系統、程式語言執行時間和工具的組合。建置環境會做為 Docker 影像表達。如需詳細資訊,請參閱 Docker Docs 網站上的 Docker 概觀
針對此組建環境,您會指示 CodeBuild 使用包含 Java Developments Kit (JDK) 和 Apache Maven 版本的 Docker 影像。
建立建置專案
-
使用 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
" }Replace
serviceIAMRole
使用 CodeBuild Service 角色的 Amazon Resource Name (ARN) (例如,arn:aws:iam::
。若要建立服務角色,請參閱建立 CodeBuild 服務角色。account-ID
:role/role-name
在此資料中:
-
name
代表此組建專案的必要識別符 (在此範例中為codebuild-demo-project
)。組建專案名稱在您帳戶內的所有組建專案中都必須是唯一的。 -
適用於
source
、type
是代表來源碼儲存庫類型的必要值 (在此範例中為S3
Amazon S3。 -
針對
source
,location
代表來源碼的路徑 (在此範例中為輸入儲存貯體名稱,其後跟隨 ZIP 檔案名稱)。 -
適用於
artifacts
、type
是代表建置輸出成品儲存庫類型的必要值 (在此範例中為S3
Amazon S3。 -
針對
artifacts
,location
代表您先前建立或找到的輸出儲存貯體名稱 (在此範例中為codebuild-
)。region-ID
-account-ID
-output-bucket -
適用於
environment
、type
是代表建置環境類型的必要值 (在此範例中為LINUX_CONTAINER
。 -
適用於
environment
、image
是代表此組建專案使用之 Docker 影像名稱和標籤組合的必要值,由 Docker 影像儲存庫類型指定 (在此範例中為aws/codebuild/standard:4.0
以獲取 CodeBuild Docker 映像存儲庫中的 Docker 映像)。aws/codebuild/standard
是 Docker 映像的名稱。4.0
是 Docker 影像的標籤。若要尋找更多您可以用於案例中的 Docker 影像,請參閱建置環境參考。
-
適用於
environment
、computeType
是代表 CodeBuild 使用運算資源的必要值 (在此範例中為BUILD_GENERAL1_SMALL
。
注意 其他原始 JSON 格式資料中的可用值,例如
description
、buildspec
、auth
(包含type
和resource
)、path
、namespaceType
、name
(適用於artifacts
)、packaging
、environmentVariables
(包含name
和value
)、timeoutInMinutes
、encryptionKey
和tags
(包含key
和value
) 為選擇性。本教學課程中不會使用到它們,因此不會在此顯示。如需詳細資訊,請參閱 建立建置專案 (AWS CLI)。 -
-
切換到包含您儲存檔案的目錄,然後再次執行 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 實體的證書:
-
您的AWS帳户。如需詳細資訊,請參閱 IAM 使用者指南中的建立您的第一個 IAM 管理員使用者和群組。
-
您的AWS帳户與
AWSCodeBuildAdminAccess
、AmazonS3ReadOnlyAccess
,和IAMFullAccess
託管策略附加到該 IAM 用户或 IAM 用户所屬的 IAM 組。如果您的AWS賬户,且您無法將這些許可新增到您的 IAM 使用者或羣組,請聯絡您的AWS帳户管理員以尋求協助。如需詳細資訊,請參閱 AWS CodeBuild 的 AWS 受管 (預先定義) 政策。