入門 CodeBuild - AWS CodeBuild

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

入門 CodeBuild

在以下教學課程中,您可以使用 AWS CodeBuild 將範例原始碼輸入檔案的集合建置到原始碼的可部署版本中。

兩個教學課程都有相同的輸入和結果,但其中一個使用 AWS CodeBuild 主控台,另一個使用 AWS CLI。

重要

我們不建議您使用 AWS 根帳戶來完成本教學課程。

AWS CodeBuild 開始使用 主控台

在本教學課程中,您可以使用 AWS CodeBuild 將範例原始碼輸入檔案集合 (建置輸入成品建置輸入 ) 建置至原始碼的可部署版本 (建置輸出成品建置輸出 )。具體而言,您會指示 CodeBuild 使用常見的建置工具 Apache Maven,將一組 Java 類別檔案建置到 Java Archive (JAR) 檔案中。您不需要熟悉 Apache Maven 或 Java,也能完成本教學課程。

您可以透過 CodeBuild CodeBuild 主控台、 AWS CodePipeline、 AWS CLI或 AWS 使用 SDKs。本教學課程示範如何使用 CodeBuild 主控台。如需使用 的資訊 CodePipeline,請參閱 CodeBuild 搭配 使用 CodePipeline

重要

本教學課程中的步驟要求您建立資源 (例如 S3 儲存貯體),這可能會導致 AWS 您的帳戶產生費用。這包括與 Amazon S3 AWS KMS CodeBuild 和 CloudWatch Logs 相關的 AWS 資源和動作的可能費用。如需詳細資訊,請參閱AWS CodeBuild 定價 Amazon S3 定價AWS Key Management Service 定價 Amazon CloudWatch 定價

步驟 1:建立原始程式碼

(部分:AWS CodeBuild 開始使用 主控台)

在此步驟中,您可以建立 CodeBuild 您要建置到輸出儲存貯體的原始程式碼。此原始程式碼包含兩個 Java 類別檔案和 Apache Maven 專案物件模型 (POM) 檔案。

  1. 在您本機電腦或執行個體上的空目錄內,建立此目錄結構。

    (root directory name) `-- src |-- main | `-- java `-- test `-- java
  2. 使用您選擇的文字編輯器建立此檔案,將它命名為 MessageUtil.java,然後將它儲存在 src/main/java 目錄中。

    public class MessageUtil { private String message; public MessageUtil(String message) { this.message = message; } public String printMessage() { System.out.println(message); return message; } public String salutationMessage() { message = "Hi!" + message; System.out.println(message); return message; } }

    此類別檔案會將傳遞給它的字元字串做為輸出建立。MessageUtil 建構函數會設定字元字串。printMessage 方法會建立輸出。salutationMessage 方法會輸出 Hi!,其後跟隨字元字串。

  3. 建立此檔案,將它命名為 TestMessageUtil.java,然後將它儲存在 /src/test/java 目錄中。

    import org.junit.Test; import org.junit.Ignore; import static org.junit.Assert.assertEquals; public class TestMessageUtil { String message = "Robert"; MessageUtil messageUtil = new MessageUtil(message); @Test public void testPrintMessage() { System.out.println("Inside testPrintMessage()"); assertEquals(message,messageUtil.printMessage()); } @Test public void testSalutationMessage() { System.out.println("Inside testSalutationMessage()"); message = "Hi!" + "Robert"; assertEquals(message,messageUtil.salutationMessage()); } }

    此類別檔案會將 MessageUtil 類別中的 message 變數設為 Robert。它接著會透過檢查 RobertHi!Robert 字串是否出現在輸出中,來測試 message 變數是否設定成功。

  4. 建立此檔案,將它命名為 pom.xml,然後將它儲存在根 (最上層) 目錄中。

    <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>org.example</groupId> <artifactId>messageUtil</artifactId> <version>1.0</version> <packaging>jar</packaging> <name>Message Utility Java Sample App</name> <dependencies> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>4.11</version> <scope>test</scope> </dependency> </dependencies> <build> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compiler-plugin</artifactId> <version>3.8.0</version> </plugin> </plugins> </build> </project>

    Apache Maven 會使用此檔案中的說明,將 MessageUtil.javaTestMessageUtil.java 轉換成名為 messageUtil-1.0.jar 的檔案,然後執行指定的測試。

此時您的目錄結構看起來應該會如下。

(root directory name) |-- pom.xml `-- src |-- main | `-- java | `-- MessageUtil.java `-- test `-- java `-- TestMessageUtil.java

步驟 2:建立 buildspec 檔案

(上一個步驟:步驟 1:建立原始程式碼)

在此步驟中,您會建立組建規格 (build spec) 檔案。buildspec 是組建命令和相關設定的集合,其YAML格式 CodeBuild 可用於執行組建。如果沒有建置規格, CodeBuild 就無法成功將建置輸入轉換為建置輸出,或在建置環境中尋找建置輸出成品,以上傳至輸出儲存貯體。

建立此檔案,將它命名為 buildspec.yml,然後將它儲存在根 (最上層) 目錄中。

version: 0.2 phases: install: runtime-versions: java: corretto11 pre_build: commands: - echo Nothing to do in the pre_build phase... build: commands: - echo Build started on `date` - mvn install post_build: commands: - echo Build completed on `date` artifacts: files: - target/messageUtil-1.0.jar
重要

由於組建規格宣告必須是有效的 YAML,因此組建規格宣告中的間隔很重要。若您建置規格宣告中的空格數與此不符,建置會立即失敗。您可以使用YAML驗證器來測試建置規格宣告是否有效YAML。

注意

您可以在建立建置專案時分別宣告建置命令,而非在您的來源碼中包含建置規格檔案。這在您希望使用不同建置命令建置來源碼,卻又不想要每次都更新您來源碼的儲存庫時會非常有用。如需詳細資訊,請參閱Buildspec 語法

在此建置規格宣告中:

  • version 代表要使用的建置規格標準版本。此建置規格宣告使用最新版本,0.2

  • phases 代表您可以在其中指示 執行命令 CodeBuild 的建置階段。這些組建階段會在此以 installpre_buildbuildpost_build 的形式列出。您無法變更這些組建階段名稱的拼字,也無法建立更多組建階段名稱。

    在此範例中, 會在build階段 CodeBuild 執行 mvn install命令。此命令會指示 Apache Maven 編譯、測試,並將編譯過的 Java 類別檔案封裝到建置輸出成品中。為求完整,此範例中的每個建置階段內都置放了一些 echo 命令。當您稍後在本教學課程中檢視詳細的建置資訊時,這些echo命令的輸出可協助您進一步了解如何 CodeBuild執行命令,以及依何種順序執行。(雖然此範例中包含了所有組建階段,但若您不需要在其中一個階段執行任何命令,則可不必包含該組建階段。) 對於每個建置階段, 會依列出的順序從頭到尾 CodeBuild 執行每個指定的命令,一次執行一個。

  • artifacts 代表上傳至輸出儲存貯體的組建置輸出成品 CodeBuild。 files代表要包含在組建輸出中的檔案。 CodeBuild 會上傳組建環境中target相對目錄中找到的單一messageUtil-1.0.jar檔案。檔案名稱 (messageUtil-1.0.jar) 及目錄名稱 (target) 是以 Apache Maven 建立及存放組建輸出成品的方式為基礎,僅適用於此範例。在您自己的組建中,檔案名稱及目錄可能會有所不同。

如需詳細資訊,請參閱 Buildspec 參考

此時您的目錄結構看起來應該會如下。

(root directory name) |-- pom.xml |-- buildspec.yml `-- src |-- main | `-- java | `-- MessageUtil.java `-- test `-- java `-- TestMessageUtil.java

步驟 3:建立兩個 S3 儲存貯體

(上一個步驟:步驟 2:建立 buildspec 檔案)

雖然您可以在本教學課程中使用單一儲存貯體,但是使用兩個儲存貯體可讓查看組建輸入來源和組建輸出目標的過程變得更為簡單。

  • 其中一個儲存貯體 (輸入儲存貯體) 會儲存組建輸入。在本教學課程中,此輸入儲存貯體的名稱為 codebuild-region-ID-account-ID-input-bucket,其中 region-ID 是儲存貯體 AWS 的區域,且 account-ID 是 AWS 您的帳戶 ID。

  • 另一個儲存貯體 (輸出儲存貯體) 則會儲存組建輸出。在本教學課程中,此輸出儲存貯體的名稱為 codebuild-region-ID-account-ID-output-bucket

如果您為這些儲存貯體選擇了不同的名稱,請務必在本教學課程中使用它們。

這兩個儲存貯體必須與 建置位於相同的 AWS 區域中。例如,如果您指示在美國東部 (俄亥俄) 區域中 CodeBuild 執行建置,則這些儲存貯體也必須位於美國東部 (俄亥俄) 區域中。

如需詳細資訊,請參閱 Amazon Simple Storage Service 主控台使用者指南中的建立儲存貯體

注意

雖然 CodeBuild 也支援建置儲存在 CodeCommit GitHub、 和 Bitbucket 儲存庫中的輸入,但本教學課程不會向您展示如何使用。如需詳細資訊,請參閱規劃組建

步驟 4:上傳原始程式碼和 Buildspec 檔案

(上一個步驟:步驟 3:建立兩個 S3 儲存貯體)

在此步驟中,您會將來源碼和組建規格檔案新增到輸入儲存貯體。

使用您作業系統的 zip 公用程式,建立名為 MessageUtil.zip 的檔案,其中包含 MessageUtil.javaTestMessageUtil.javapom.xmlbuildspec.yml

MessageUtil.zip 檔案的目錄結構看起來必須如下。

MessageUtil.zip |-- pom.xml |-- buildspec.yml `-- src |-- main | `-- java | `-- MessageUtil.java `-- test `-- java `-- TestMessageUtil.java
重要

請不要包含 (root directory name) 目錄,而是只有 (root directory name) 目錄中的目錄和檔案。

MessageUtil.zip 檔案上傳至名為 codebuild-region-ID-account-ID-input-bucket 的輸入儲存貯體。

重要

對於 CodeCommit GitHub、 和 Bitbucket 儲存庫,根據慣例,您必須在每個儲存庫的根 (頂層) buildspec.yml 中存放名為 的建置規格檔案,或將建置規格宣告包含在建置專案定義中。請勿建立ZIP包含儲存庫原始碼和建置規格檔案的檔案。

對於儲存在 S3 儲存貯體中的建置輸入,您必須建立包含原始程式碼ZIP的檔案,並依慣例建立buildspec.yml名為根 (頂層) 的建置規格檔案,或將建置規格宣告納入建置專案定義的一部分。

若您想要針對建置規格檔案使用不同的名稱,或是想要參考位於根以外其他位置的建置規格,您可以指定建置規格覆寫,做為建置專案定義的一部分。如需詳細資訊,請參閱Buildspec 檔案名稱和儲存位置

步驟 5:建立建置專案

(上一個步驟:步驟 4:上傳原始程式碼和 Buildspec 檔案)

在此步驟中,您會建立 AWS CodeBuild 用於執行建置的建置專案。建置專案包含如何執行建置的相關資訊,包括取得原始程式碼的位置、要使用的建置環境、要執行的建置命令,以及儲存建置輸出的位置。建置環境代表作業系統、程式設計語言執行期和 CodeBuild 用於執行建置之工具的組合。建置環境會以 Docker 映像表示。如需詳細資訊,請參閱 Docker Docs 網站上的 Docker 概觀主題。

在此建置環境中,您會指示 CodeBuild 使用包含 Java 開發套件 (JDK) 和 Apache Maven 版本的 Docker 映像。

建立建置專案
  1. 登入 AWS Management Console 並在 https://console.aws.amazon.com/codesuite/Codebuild/home 開啟 AWS CodeBuild 主控台。

  2. 使用 AWS 區域選取器選擇 CodeBuild 支援 AWS 的區域。如需詳細資訊,請參閱 Amazon Web Services 一般參考 中的 AWS CodeBuild 端點和配額

  3. 如果顯示 CodeBuild 資訊頁面,請選擇建立建置專案 。否則,請在導覽窗格中展開建置 ,選擇建置專案 ,然後選擇建立建置專案

  4. Create build project (建立組建專案) 頁面上,於 Project configuration (專案組態) 中,針對 Project name (專案名稱),輸入此組建專案的名稱 (在此範例中為 codebuild-demo-project)。建置專案名稱在每個 AWS 帳戶中必須是唯一的。如果您使用不同名稱,請在此教學課程中都使用此名稱。

    注意

    Create build project (建立建置專案) 頁面上,您可能會看到與以下訊息相似的錯誤訊息:You are not authorized to perform this operation (您未獲得執行此操作的授權)。這很可能是因為您以沒有建立建置專案許可的使用者 AWS Management Console 身分登入 。若要修正此問題,請登出 AWS Management Console,然後使用屬於下列其中一個IAM實體的憑證重新登入:

    • 您 AWS 帳戶中的管理員使用者。如需詳細資訊,請參閱 使用者指南 中的建立您的第一個 AWS 帳戶 根使用者和群組

    • 您 AWS 帳戶中的使用者,其 AWSCodeBuildAdminAccessAmazonS3ReadOnlyAccessIAMFullAccess受管政策連接至該使用者或該使用者所屬的IAM群組。如果您的 AWS 帳戶中沒有具有這些許可的使用者或群組,且您無法將這些許可新增至您的使用者或群組,請聯絡您的 AWS 帳戶管理員以取得協助。如需詳細資訊,請參閱AWS 的受管 (預先定義) 政策 AWS CodeBuild

    這兩個選項都包含管理員許可,可讓您建立建置專案以完成本教學課程。建議您一律使用完成任務所需的最低許可。如需詳細資訊,請參閱AWS CodeBuild 許可參考

  5. 來源 中,對於來源提供者 ,選擇 Amazon S3

  6. 針對儲存貯體 ,選擇 codebuild-region-ID-account-ID-input-bucket

  7. 針對 S3 object key (S3 物件金鑰),輸入 MessageUtil.zip

  8. Environment (環境) 中,針對 Environment image (環境映像),請讓 Managed image (受管映像) 維持在選取狀態。

  9. 針對作業系統 ,選擇 Amazon Linux

  10. 針對 Runtime(s) (執行時間),選擇 Standard (標準)

  11. 針對映像 ,選擇 aws/codebuild/amazonlinux2-x86_64-standard:corretto11

  12. Service role (服務角色) 中,讓 New service role (新服務角色) 維持在選取狀態,然後讓 Role name (角色名稱) 維持不變。

  13. 針對 Buildspec,將 Use a buildspec file (使用 buildspec 檔案) 維持在選取狀態。

  14. 偽影 中,針對類型 ,選擇 Amazon S3

  15. 針對儲存貯體名稱 ,選擇 codebuild-region-ID-account-ID-output-bucket

  16. Name (名稱)Path (路徑) 欄位保留空白。

  17. 選擇 Create build project (建立建置專案)

步驟 6:執行建置

(上一個步驟:步驟 5:建立建置專案)

在此步驟中,您會 AWS CodeBuild 指示 使用建置專案中的設定執行建置。

執行建置
  1. https://console.aws.amazon.com/codesuite/Codebuild/home 開啟 AWS CodeBuild 主控台。

  2. 在導覽窗格中,選擇 Build projects (建置專案)

  3. 在建置專案清單中,選擇 codebuild-demo-project,然後選擇開始建置 。建置會立即開始。

步驟 7:檢視摘要建置資訊

(上一個步驟:步驟 6:執行建置)

在此步驟中,您會檢視您組建狀態的摘要資訊。

檢視摘要建置資訊

  1. 如果 codebuild-demo-project:<build-ID> 頁面未顯示,在導覽列中,選擇建置歷史記錄 。接下來,在建置專案清單中,針對專案 ,選擇建置 執行連結codebuild-demo-project。此處應該只會有一個相符的連結。(如果您之前已完成此教學課程,請在 Completed (已完成) 欄中選擇具有最新值的連結。)

  2. 建置狀態頁面上,在階段詳細資訊 中,應顯示下列建置階段,其中狀態已成功

    • SUBMITTED

    • QUEUED

    • PROVISIONING

    • DOWNLOAD_SOURCE

    • INSTALL

    • PRE_BUILD

    • BUILD

    • POST_BUILD

    • UPLOAD_ARTIFACTS

    • FINALIZING

    • COMPLETED

    Build Status (建置狀態) 中,應會顯示 Succeeded (成功)

    若您看到 In Progress (進行中),請選擇重新整理按鈕。

  3. 在每個組建階段旁,Duration (期間值) 值表示組建階段的持續時間長度。End time (結束時間) 值表示建置階段的結束時間。

步驟 8:檢視詳細建置資訊

(上一個步驟:步驟 7:檢視摘要建置資訊)

在此步驟中,您可以在 CloudWatch 日誌中檢視建置的詳細資訊。

注意

為了保護敏感資訊, CodeBuild 日誌中會隱藏下列項目:

檢視詳細建置資訊
  1. 在先前步驟的建置詳細資訊頁面仍顯示的情況下,建置日誌的最後 10,000 行會顯示在 Build logs (建置日誌) 中。若要在 CloudWatch 日誌中查看整個建置日誌,請選擇檢視整個日誌連結。

  2. 在 CloudWatch 日誌日誌串流中,您可以瀏覽日誌事件。根據預設,只會顯示最後一組日誌事件。若要查看更早的事件,請捲動到清單的開頭。

  3. 在本教學課程中,大多數日誌事件都包含有關 CodeBuild 下載和安裝建置相依性檔案到其建置環境的詳盡資訊,您可能不關心。您可以使用 Filter events (篩選事件) 方塊,減少顯示的資訊。例如,如果您在篩選事件 "[INFO]"中輸入 ,[INFO]則只會顯示包含這些事件。如需詳細資訊,請參閱 Amazon CloudWatch 使用者指南 中的篩選和模式語法

步驟 9:取得建置輸出成品

(上一個步驟:步驟 8:檢視詳細建置資訊)

在此步驟中,您會取得 CodeBuild 建置並上傳至輸出儲存貯體messageUtil-1.0.jar的檔案。

您可以使用 CodeBuild 主控台或 Amazon S3 主控台來完成此步驟。

若要取得建置輸出成品AWS CodeBuild (主控台)
  1. 在 CodeBuild 主控台仍開啟且建置詳細資訊頁面仍顯示上一個步驟時,選擇建置詳細資訊索引標籤,然後向下捲動至偽影區段。

    注意

    如果未顯示建置詳細資訊頁面,請在導覽列中選擇建置歷史記錄 ,然後選擇建置執行連結。

  2. Amazon S3 資料夾的連結位於 Artifacts 上傳位置 下。此連結會在 Amazon S3 中開啟資料夾,您可以在其中找到messageUtil-1.0.jar建置輸出成品檔案。

若要取得建置輸出成品 (Amazon S3 主控台)
  1. 在 開啟 Amazon S3 主控台https://console.aws.amazon.com/s3/

  2. 打開 codebuild-region-ID-account-ID-output-bucket.

  3. 開啟 codebuild-demo-project 資料夾。

  4. 開啟 target 資料夾,您會在其中找到 messageUtil-1.0.jar 建置輸出成品檔案。

步驟 10:刪除 S3 儲存貯體

(上一個步驟:步驟 9:取得建置輸出成品)

若要避免持續向 AWS 您的帳戶收取費用,您可以刪除本教學課程中使用的輸入和輸出儲存貯體。如需指示,請參閱 Amazon Simple Storage Service 使用者指南 中的刪除或清空儲存貯體。

如果您使用IAM使用者或管理員IAM使用者來刪除這些儲存貯體,則使用者必須擁有更多存取權限。在標記之間新增下列陳述式 (### BEGIN ADDING STATEMENT HERE ### 以及 ### END ADDING STATEMENTS HERE ###) 至使用者的現有存取政策。

這個陳述式中的省略符號 (...) 是為了簡潔起見。請不要移除現有存取政策中的任何陳述式。請勿在政策中輸入這些省略符號。

{ "Version": "2012-10-17", "Id": "...", "Statement": [ ### BEGIN ADDING STATEMENT HERE ### { "Effect": "Allow", "Action": [ "s3:DeleteBucket", "s3:DeleteObject" ], "Resource": "*" } ### END ADDING STATEMENT HERE ### ] }

包裝

在本教學課程中,您曾 AWS CodeBuild 用來將一組 Java 類別檔案建置至JAR檔案中。您接著檢視了建置的結果。

您現在可以 CodeBuild 在自己的案例中嘗試使用 。請遵循中的說明進行規劃組建 若您覺得尚未準備就緒,建議您嘗試組建我們的一些範例。如需詳細資訊,請參閱使用以案例為基礎的範例 CodeBuild

AWS CodeBuild 開始使用 AWS CLI

在本教學課程中,您可以使用 AWS CodeBuild 將範例原始碼輸入檔案集合 (稱為建置輸入成品建置輸入) 建置至原始碼的可部署版本 (稱為建置輸出成品建置輸出)。具體而言,您會指示 CodeBuild 使用常見的建置工具 Apache Maven,將一組 Java 類別檔案建置至 Java Archive (JAR) 檔案。您不需要熟悉 Apache Maven 或 Java,也能完成本教學課程。

您可以透過 CodeBuild CodeBuild 主控台、 AWS CodePipeline、 AWS CLI或 AWS 使用 SDKs。本教學課程示範如何 CodeBuild 搭配 使用 AWS CLI。如需有關使用 的資訊 CodePipeline,請參閱 CodeBuild 搭配 使用 CodePipeline

重要

本教學課程中的步驟要求您建立資源 (例如 S3 儲存貯體),這可能會導致 AWS 您的帳戶產生費用。這包括與 Amazon S3 AWS KMS CodeBuild 和 CloudWatch Logs 相關的 AWS 資源和動作的可能費用。如需詳細資訊,請參閱CodeBuild定價 Amazon S3 定價AWS Key Management Service 定價 Amazon CloudWatch 定價

步驟 1:建立原始程式碼

(部分:AWS CodeBuild 開始使用 AWS CLI)

在此步驟中,您可以建立 CodeBuild 您要建置到輸出儲存貯體的原始程式碼。此原始程式碼包含兩個 Java 類別檔案和 Apache Maven 專案物件模型 (POM) 檔案。

  1. 在您本機電腦或執行個體上的空目錄內,建立此目錄結構。

    (root directory name) `-- src |-- main | `-- java `-- test `-- java
  2. 使用您選擇的文字編輯器建立此檔案,將它命名為 MessageUtil.java,然後將它儲存在 src/main/java 目錄中。

    public class MessageUtil { private String message; public MessageUtil(String message) { this.message = message; } public String printMessage() { System.out.println(message); return message; } public String salutationMessage() { message = "Hi!" + message; System.out.println(message); return message; } }

    此類別檔案會將傳遞給它的字元字串做為輸出建立。MessageUtil 建構函數會設定字元字串。printMessage 方法會建立輸出。salutationMessage 方法會輸出 Hi!,其後跟隨字元字串。

  3. 建立此檔案,將它命名為 TestMessageUtil.java,然後將它儲存在 /src/test/java 目錄中。

    import org.junit.Test; import org.junit.Ignore; import static org.junit.Assert.assertEquals; public class TestMessageUtil { String message = "Robert"; MessageUtil messageUtil = new MessageUtil(message); @Test public void testPrintMessage() { System.out.println("Inside testPrintMessage()"); assertEquals(message,messageUtil.printMessage()); } @Test public void testSalutationMessage() { System.out.println("Inside testSalutationMessage()"); message = "Hi!" + "Robert"; assertEquals(message,messageUtil.salutationMessage()); } }

    此類別檔案會將 MessageUtil 類別中的 message 變數設為 Robert。它接著會透過檢查 RobertHi!Robert 字串是否出現在輸出中,來測試 message 變數是否設定成功。

  4. 建立此檔案,將它命名為 pom.xml,然後將它儲存在根 (最上層) 目錄中。

    <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>org.example</groupId> <artifactId>messageUtil</artifactId> <version>1.0</version> <packaging>jar</packaging> <name>Message Utility Java Sample App</name> <dependencies> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>4.11</version> <scope>test</scope> </dependency> </dependencies> <build> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compiler-plugin</artifactId> <version>3.8.0</version> </plugin> </plugins> </build> </project>

    Apache Maven 會使用此檔案中的說明,將 MessageUtil.javaTestMessageUtil.java 轉換成名為 messageUtil-1.0.jar 的檔案,然後執行指定的測試。

此時您的目錄結構看起來應該會如下。

(root directory name) |-- pom.xml `-- src |-- main | `-- java | `-- MessageUtil.java `-- test `-- java `-- TestMessageUtil.java

步驟 2:建立 buildspec 檔案

(上一個步驟:步驟 1:建立原始程式碼)

在此步驟中,您會建立組建規格 (build spec) 檔案。buildspec 是組建命令和相關設定的集合,其YAML格式 CodeBuild 是用來執行組建。如果沒有建置規格, CodeBuild 就無法成功將建置輸入轉換為建置輸出,或在建置環境中尋找建置輸出成品,以上傳至輸出儲存貯體。

建立此檔案,將它命名為 buildspec.yml,然後將它儲存在根 (最上層) 目錄中。

version: 0.2 phases: install: runtime-versions: java: corretto11 pre_build: commands: - echo Nothing to do in the pre_build phase... build: commands: - echo Build started on `date` - mvn install post_build: commands: - echo Build completed on `date` artifacts: files: - target/messageUtil-1.0.jar
重要

由於組建規格宣告必須是有效的 YAML,因此組建規格宣告中的間隔很重要。若您建置規格宣告中的空格數與此不符,建置會立即失敗。您可以使用YAML驗證器來測試建置規格宣告是否有效YAML。

注意

您可以在建立建置專案時分別宣告建置命令,而非在您的來源碼中包含建置規格檔案。這在您希望使用不同建置命令建置來源碼,卻又不想要每次都更新您來源碼的儲存庫時會非常有用。如需詳細資訊,請參閱Buildspec 語法

在此建置規格宣告中:

  • version 代表要使用的建置規格標準版本。此建置規格宣告使用最新版本,0.2

  • phases 代表您可以在其中指示 執行命令 CodeBuild 的建置階段。這些組建階段會在此以 installpre_buildbuildpost_build 的形式列出。您無法變更這些組建階段名稱的拼字,也無法建立更多組建階段名稱。

    在此範例中, 會在build階段 CodeBuild 執行 mvn install命令。此命令會指示 Apache Maven 編譯、測試,並將編譯過的 Java 類別檔案封裝到建置輸出成品中。為求完整,此範例中的每個建置階段內都置放了一些 echo 命令。當您稍後在本教學課程中檢視詳細的建置資訊時,這些echo命令的輸出可協助您更了解執行命令的方式 CodeBuild和順序。(雖然此範例中包含了所有組建階段,但若您不需要在其中一個階段執行任何命令,則可不必包含該組建階段。) 對於每個建置階段, 會依列出的順序從頭到尾 CodeBuild 執行每個指定的命令,一次執行一個。

  • artifacts 代表上傳至輸出儲存貯體的組建置輸出成品 CodeBuild。 files代表要包含在組建輸出中的檔案。 CodeBuild 會上傳組建環境中target相對目錄中找到的單一messageUtil-1.0.jar檔案。檔案名稱 (messageUtil-1.0.jar) 及目錄名稱 (target) 是以 Apache Maven 建立及存放組建輸出成品的方式為基礎,僅適用於此範例。在您自己的組建中,檔案名稱及目錄可能會有所不同。

如需詳細資訊,請參閱 Buildspec 參考

此時您的目錄結構看起來應該會如下。

(root directory name) |-- pom.xml |-- buildspec.yml `-- src |-- main | `-- java | `-- MessageUtil.java `-- test `-- java `-- TestMessageUtil.java

步驟 3:建立兩個 S3 儲存貯體

(上一個步驟:步驟 2:建立 buildspec 檔案)

雖然您可以在本教學課程中使用單一儲存貯體,但是使用兩個儲存貯體可讓查看組建輸入來源和組建輸出目標的過程變得更為簡單。

  • 其中一個儲存貯體 (輸入儲存貯體) 會儲存組建輸入。在本教學課程中,此輸入儲存貯體的名稱為 codebuild-region-ID-account-ID-input-bucket,其中 region-ID 是儲存貯體 AWS 的區域,以及 account-ID 是 AWS 您的帳戶 ID。

  • 另一個儲存貯體 (輸出儲存貯體) 則會儲存組建輸出。在本教學課程中,此輸出儲存貯體的名稱為 codebuild-region-ID-account-ID-output-bucket

如果您為這些儲存貯體選擇了不同的名稱,請務必在本教學課程中使用它們。

這兩個儲存貯體必須與 建置位於相同的 AWS 區域中。例如,如果您指示在美國東部 (俄亥俄) 區域中 CodeBuild 執行建置,則這些儲存貯體也必須位於美國東部 (俄亥俄) 區域中。

如需詳細資訊,請參閱 Amazon Simple Storage Service 主控台使用者指南中的建立儲存貯體

注意

雖然 CodeBuild 也支援儲存在 CodeCommit GitHub、 和 Bitbucket 儲存庫中的建置輸入,但本教學課程不會向您示範如何使用。如需詳細資訊,請參閱規劃組建

步驟 4:上傳原始程式碼和 Buildspec 檔案

(上一個步驟:步驟 3:建立兩個 S3 儲存貯體)

在此步驟中,您會將來源碼和組建規格檔案新增到輸入儲存貯體。

使用您作業系統的 zip 公用程式,建立名為 MessageUtil.zip 的檔案,其中包含 MessageUtil.javaTestMessageUtil.javapom.xmlbuildspec.yml

MessageUtil.zip 檔案的目錄結構看起來必須如下。

MessageUtil.zip |-- pom.xml |-- buildspec.yml `-- src |-- main | `-- java | `-- MessageUtil.java `-- test `-- java `-- TestMessageUtil.java
重要

請不要包含 (root directory name) 目錄,而是只有 (root directory name) 目錄中的目錄和檔案。

MessageUtil.zip 檔案上傳至名為 codebuild-region-ID-account-ID-input-bucket 的輸入儲存貯體。

重要

對於 CodeCommit GitHub、 和 Bitbucket 儲存庫,根據慣例,您必須在每個儲存庫的根 (頂層) buildspec.yml 中存放名為 的建置規格檔案,或將建置規格宣告包含在建置專案定義中。請勿建立ZIP包含儲存庫原始碼和建置規格檔案的檔案。

對於儲存在 S3 儲存貯體中的建置輸入,您必須建立包含原始碼ZIP的檔案,並依慣例建立buildspec.yml名為根 (頂層) 的建置規格檔案,或將建置規格宣告納入建置專案定義的一部分。

若您想要針對建置規格檔案使用不同的名稱,或是想要參考位於根以外其他位置的建置規格,您可以指定建置規格覆寫,做為建置專案定義的一部分。如需詳細資訊,請參閱Buildspec 檔案名稱和儲存位置

步驟 5:建立建置專案

(上一個步驟:步驟 4:上傳原始程式碼和 Buildspec 檔案)

在此步驟中,您會建立 AWS CodeBuild 用於執行建置的建置專案。建置專案包含如何執行建置的相關資訊,包括取得原始程式碼的位置、要使用的建置環境、要執行的建置命令,以及儲存建置輸出的位置。建置環境代表作業系統、程式設計語言執行期和 CodeBuild 用於執行建置之工具的組合。建置環境會以 Docker 映像表示。如需詳細資訊,請參閱 Docker Docs 網站上的 Docker 概觀主題。

在此建置環境中,您會指示 CodeBuild 使用包含 Java 開發套件 (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:5.0", "computeType": "BUILD_GENERAL1_SMALL" }, "serviceRole": "serviceIAMRole" }

    Replace (取代) serviceIAMRole 服務 CodeBuild 角色的 Amazon Resource Name (ARN) (例如 arn:aws:iam::account-ID:role/role-name)。若要建立服務角色,請參閱允許 AWS 與其他 服務 CodeBuild 互動

    在此資料中:

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

    • 對於 sourcetype 是代表原始碼儲存庫類型的必要值 (在此範例中,S3適用於 Amazon S3 儲存貯體)。

    • 對於 sourcelocation代表原始程式碼的路徑 (在此範例中,輸入儲存貯體名稱後面接著ZIP檔案名稱)。

    • 對於 artifactstype 是代表建置輸出成品儲存庫類型的必要值 (在此範例中為 S3 Amazon S3 儲存貯體)。

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

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

    • 對於 environmentimage 是代表此建置專案使用的 Docker 映像名稱和標籤組合的必要值,如 Docker 映像儲存庫類型所指定 (在此範例中aws/codebuild/standard:5.0為 Docker 映像儲存庫中的 CodeBuild Docker 映像)。 aws/codebuild/standard 是 Docker 映像的名稱。 5.0是 Docker 映像的標籤。

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

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

    注意

    原始JSON格式化資料中的其他可用值,例如 descriptionbuildspecauth(包括 typeresourcepath、、namespaceTypename(適用於 artifactspackagingenvironmentVariables(包括 namevaluetimeoutInMinutes、、encryptionKey、 和 tags(包括 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:5.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 表示如果建置尚未完成 CodeBuild ,則停止建置的分鐘數。(預設為 60 分鐘。)

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

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

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

      • arn 代表建置專案ARN的 。

注意

執行 create-project 命令之後,可能會輸出類似下列內容的錯誤訊息:使用者:user-ARN 無權執行:Codebuild:CreateProject。這很可能是因為您使用沒有足夠的許可來建立建置專案的使用者 AWS CLI 憑證 CodeBuild 來設定 。若要修正此問題,請使用屬於下列其中一個IAM實體的憑證來設定 AWS CLI :

  • 您 AWS 帳戶中的管理員使用者。如需詳細資訊,請參閱 使用者指南 中的建立您的第一個 AWS 帳戶 根使用者和群組

  • 您 AWS 帳戶中的使用者,其 AWSCodeBuildAdminAccessAmazonS3ReadOnlyAccessIAMFullAccess受管政策連接至該使用者或使用者所屬的IAM群組。如果您的 AWS 帳戶中沒有具有這些許可的使用者或群組,且您無法將這些許可新增至您的使用者或群組,請聯絡您的 AWS 帳戶管理員尋求協助。如需詳細資訊,請參閱AWS 的受管 (預先定義) 政策 AWS CodeBuild

步驟 6:執行建置

(上一個步驟:步驟 5:建立建置專案)

在此步驟中,您會 AWS CodeBuild 指示 使用建置專案中的設定執行建置。

執行建置
  1. 使用 AWS CLI 執行start-build命令:

    aws codebuild start-build --project-name project-name

    Replace (取代) project-name 使用上一個步驟的建置專案名稱 (例如 codebuild-demo-project)。

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

    { "build": { "buildComplete": false, "initiator": "user-name", "artifacts": { "location": "arn:aws:s3:::codebuild-region-ID-account-ID-output-bucket/message-util.zip" }, "projectName": "codebuild-demo-project", "timeoutInMinutes": 60, "buildStatus": "IN_PROGRESS", "environment": { "computeType": "BUILD_GENERAL1_SMALL", "image": "aws/codebuild/standard:5.0", "type": "LINUX_CONTAINER", "environmentVariables": [] }, "source": { "type": "S3", "location": "codebuild-region-ID-account-ID-input-bucket/MessageUtil.zip" }, "currentPhase": "SUBMITTED", "startTime": 1472848787.882, "id": "codebuild-demo-project:0cfbb6ec-3db9-4e8c-992b-1ab28EXAMPLE", "arn": "arn:aws:codebuild:region-ID:account-ID:build/codebuild-demo-project:0cfbb6ec-3db9-4e8c-992b-1ab28EXAMPLE" } }
    • build 代表此組建的相關資訊。

      • buildComplete 代表建置完成 (true)。否則為 false

      • initiator 代表啟動建置的實體。

      • artifacts 代表建置輸出的相關資訊,包括其位置。

      • projectName 代表建置專案的名稱。

      • buildStatus 代表 start-build 命令執行時目前的組建狀態。

      • currentPhase 代表 start-build 命令執行時目前的組建階段。

      • startTime 代表時間 (以 Unix 時間格式表示),代表建置程序的啟動時間。

      • id 代表組建的 ID。

      • arn 代表 建置ARN的 。

    記下 id 值。下一個步驟需要此值。

步驟 7:檢視摘要建置資訊

(上一個步驟:步驟 6:執行建置)

在此步驟中,您會檢視您組建狀態的摘要資訊。

檢視摘要建置資訊
  • 使用 AWS CLI 執行 batch-get-builds 命令。

    aws codebuild batch-get-builds --ids id

    Replace (取代) id 上一個步驟的輸出中出現id的值。

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

    { "buildsNotFound": [], "builds": [ { "buildComplete": true, "phases": [ { "phaseStatus": "SUCCEEDED", "endTime": 1472848788.525, "phaseType": "SUBMITTED", "durationInSeconds": 0, "startTime": 1472848787.882 }, ... The full list of build phases has been omitted for brevity ... { "phaseType": "COMPLETED", "startTime": 1472848878.079 } ], "logs": { "groupName": "/aws/codebuild/codebuild-demo-project", "deepLink": "https://console.aws.amazon.com/cloudwatch/home?region=region-ID#logEvent:group=/aws/codebuild/codebuild-demo-project;stream=38ca1c4a-e9ca-4dbc-bef1-d52bfEXAMPLE", "streamName": "38ca1c4a-e9ca-4dbc-bef1-d52bfEXAMPLE" }, "artifacts": { "md5sum": "MD5-hash", "location": "arn:aws:s3:::codebuild-region-ID-account-ID-output-bucket/message-util.zip", "sha256sum": "SHA-256-hash" }, "projectName": "codebuild-demo-project", "timeoutInMinutes": 60, "initiator": "user-name", "buildStatus": "SUCCEEDED", "environment": { "computeType": "BUILD_GENERAL1_SMALL", "image": "aws/codebuild/standard:5.0", "type": "LINUX_CONTAINER", "environmentVariables": [] }, "source": { "type": "S3", "location": "codebuild-region-ID-account-ID-input-bucket/MessageUtil.zip" }, "currentPhase": "COMPLETED", "startTime": 1472848787.882, "endTime": 1472848878.079, "id": "codebuild-demo-project:38ca1c4a-e9ca-4dbc-bef1-d52bfEXAMPLE", "arn": "arn:aws:codebuild:region-ID:account-ID:build/codebuild-demo-project:38ca1c4a-e9ca-4dbc-bef1-d52bfEXAMPLE" } ] }
    • buildsNotFound 代表資訊不可用IDs的任何建置的建置。在此範例中,此處應為空白。

    • builds 代表可取得資訊的建置相關資訊。在此範例中,輸出內應該會只顯示一個建置相關資訊。

      • phases 代表組建過程中 CodeBuild 執行的組建置階段。每個組建階段的相關資訊會分別以 startTimeendTimedurationInSeconds (組建階段啟動和結束的時間 (以 Unix 時間格式表示),以及階段持續的時間長度 (以秒數表示)) 列出,以及 phaseType (例如 SUBMITTEDPROVISIONINGDOWNLOAD_SOURCEINSTALLPRE_BUILDBUILDPOST_BUILDUPLOAD_ARTIFACTSFINALIZINGCOMPLETED) 及 phaseStatus (例如 SUCCEEDEDFAILEDFAULTTIMED_OUTIN_PROGRESSSTOPPED)。當您第一次執行 batch-get-builds 命令時,可能不會有太多 (甚至完全沒有) 階段。在後續使用相同的組建 ID 執行 batch-get-builds 命令後,輸出內便會出現更多組建階段。

      • logs 代表 Amazon CloudWatch Logs 中建置日誌的相關資訊。

      • md5sumsha256sum代表 建置輸出成品的 MD5和 SHA-256 雜湊。只有在組建專案的 packaging 值設為 ZIP 時,這些才會出現在輸出中。(您未在本教學課程中設定此值。) 您可以搭配檢查總和工具使用這些雜湊,確認檔案完整性及真確性。

        注意

        您也可以使用 Amazon S3 主控台來檢視這些雜湊。選取建置輸出成品旁的方塊,選擇 Actions (動作),然後選擇 Properties (屬性)。在屬性窗格中,展開中繼資料 ,並檢視 x-amz-meta-codebuild-content-md5x-amz-meta-codebuild-content-sha256 的值。(在 Amazon S3 主控台中,建置輸出成品ETag的值不應解釋為 MD5或 SHA-256 雜湊。)

        如果您使用 AWS SDKs取得這些雜湊,則值會命名為 codebuild-content-md5codebuild-content-sha256

      • endTime 代表時間 (以 Unix 時間格式表示),代表建置程序的結束時間。

    注意

    Amazon S3 中繼資料具有名為 的 CodeBuild 標頭x-amz-meta-codebuild-buildarn,其中包含將成品發佈至 Amazon S3 buildArn的 CodeBuild 建置的 。buildArn 新增 以允許來源追蹤通知,以及參考從中產生成品的建置。

步驟 8:檢視詳細建置資訊

(上一個步驟:步驟 7:檢視摘要建置資訊)

在此步驟中,您可以在 CloudWatch 日誌中檢視建置的詳細資訊。

注意

為了保護敏感資訊, CodeBuild 日誌中會隱藏下列項目:

檢視詳細建置資訊
  1. 使用您的 Web 瀏覽器前往先前步驟輸出中顯示的 deepLink 位置 (例如,https://console.aws.amazon.com/cloudwatch/home?region=region-ID#logEvent:group=/aws/codebuild/codebuild-demo-project;stream=38ca1c4a-e9ca-4dbc-bef1-d52bfEXAMPLE)。

  2. 在 CloudWatch 日誌日誌串流中,您可以瀏覽日誌事件。根據預設,只會顯示最後一組日誌事件。若要查看更早的事件,請捲動到清單的開頭。

  3. 在本教學課程中,大多數日誌事件都包含有關將建置相依性檔案 CodeBuild 下載和安裝到其建置環境中的詳細資訊,您可能不在乎。您可以使用 Filter events (篩選事件) 方塊,減少顯示的資訊。例如,如果您在篩選事件 "[INFO]"中輸入 ,[INFO]則只會顯示包含這些事件。如需詳細資訊,請參閱 Amazon CloudWatch 使用者指南 中的篩選和模式語法

CloudWatch Logs 日誌串流的這些部分與本教學課程相關。

... [Container] 2016/04/15 17:49:42 Entering phase PRE_BUILD [Container] 2016/04/15 17:49:42 Running command echo Entering pre_build phase... [Container] 2016/04/15 17:49:42 Entering pre_build phase... [Container] 2016/04/15 17:49:42 Phase complete: PRE_BUILD Success: true [Container] 2016/04/15 17:49:42 Entering phase BUILD [Container] 2016/04/15 17:49:42 Running command echo Entering build phase... [Container] 2016/04/15 17:49:42 Entering build phase... [Container] 2016/04/15 17:49:42 Running command mvn install [Container] 2016/04/15 17:49:44 [INFO] Scanning for projects... [Container] 2016/04/15 17:49:44 [INFO] [Container] 2016/04/15 17:49:44 [INFO] ------------------------------------------------------------------------ [Container] 2016/04/15 17:49:44 [INFO] Building Message Utility Java Sample App 1.0 [Container] 2016/04/15 17:49:44 [INFO] ------------------------------------------------------------------------ ... [Container] 2016/04/15 17:49:55 ------------------------------------------------------- [Container] 2016/04/15 17:49:55 T E S T S [Container] 2016/04/15 17:49:55 ------------------------------------------------------- [Container] 2016/04/15 17:49:55 Running TestMessageUtil [Container] 2016/04/15 17:49:55 Inside testSalutationMessage() [Container] 2016/04/15 17:49:55 Hi!Robert [Container] 2016/04/15 17:49:55 Inside testPrintMessage() [Container] 2016/04/15 17:49:55 Robert [Container] 2016/04/15 17:49:55 Tests run: 2, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.018 sec [Container] 2016/04/15 17:49:55 [Container] 2016/04/15 17:49:55 Results : [Container] 2016/04/15 17:49:55 [Container] 2016/04/15 17:49:55 Tests run: 2, Failures: 0, Errors: 0, Skipped: 0 ... [Container] 2016/04/15 17:49:56 [INFO] ------------------------------------------------------------------------ [Container] 2016/04/15 17:49:56 [INFO] BUILD SUCCESS [Container] 2016/04/15 17:49:56 [INFO] ------------------------------------------------------------------------ [Container] 2016/04/15 17:49:56 [INFO] Total time: 11.845 s [Container] 2016/04/15 17:49:56 [INFO] Finished at: 2016-04-15T17:49:56+00:00 [Container] 2016/04/15 17:49:56 [INFO] Final Memory: 18M/216M [Container] 2016/04/15 17:49:56 [INFO] ------------------------------------------------------------------------ [Container] 2016/04/15 17:49:56 Phase complete: BUILD Success: true [Container] 2016/04/15 17:49:56 Entering phase POST_BUILD [Container] 2016/04/15 17:49:56 Running command echo Entering post_build phase... [Container] 2016/04/15 17:49:56 Entering post_build phase... [Container] 2016/04/15 17:49:56 Phase complete: POST_BUILD Success: true [Container] 2016/04/15 17:49:57 Preparing to copy artifacts [Container] 2016/04/15 17:49:57 Assembling file list [Container] 2016/04/15 17:49:57 Expanding target/messageUtil-1.0.jar [Container] 2016/04/15 17:49:57 Found target/messageUtil-1.0.jar [Container] 2016/04/15 17:49:57 Creating zip artifact

在此範例中, CodeBuild 已成功完成建置前、建置後建置階段。它執行了單位測試並成功建置了 messageUtil-1.0.jar 檔案。

步驟 9:取得建置輸出成品

(上一個步驟:步驟 8:檢視詳細建置資訊)

在此步驟中,您會取得 CodeBuild 建置並上傳至輸出儲存貯體messageUtil-1.0.jar的檔案。

您可以使用 CodeBuild 主控台或 Amazon S3 主控台來完成此步驟。

若要取得建置輸出成品AWS CodeBuild (主控台)
  1. 在 CodeBuild 主控台仍開啟,且建置詳細資訊頁面仍顯示自上一個步驟,選擇建置詳細資訊索引標籤,然後向下捲動至人工部分

    注意

    如果未顯示建置詳細資訊頁面,請在導覽列中選擇建置歷史記錄 ,然後選擇建置執行連結。

  2. Amazon S3 資料夾的連結位於 Artifacts 上傳位置 下。此連結會在 Amazon S3 中開啟資料夾,您可以在其中找到messageUtil-1.0.jar建置輸出成品檔案。

若要取得建置輸出成品 (Amazon S3 主控台)
  1. 在 開啟 Amazon S3 主控台https://console.aws.amazon.com/s3/

  2. 打開 codebuild-region-ID-account-ID-output-bucket.

  3. 開啟 codebuild-demo-project 資料夾。

  4. 開啟 target 資料夾,您會在其中找到 messageUtil-1.0.jar 建置輸出成品檔案。

步驟 10:刪除 S3 儲存貯體

(上一個步驟:步驟 9:取得建置輸出成品)

若要避免持續向 AWS 您的帳戶收取費用,您可以刪除本教學課程中使用的輸入和輸出儲存貯體。如需指示,請參閱Amazon Simple Storage Service 使用者指南中的刪除或清空儲存貯體

如果您使用IAM使用者或管理員IAM使用者來刪除這些儲存貯體,則使用者必須擁有更多存取權限。在標記之間新增下列陳述式 (### BEGIN ADDING STATEMENT HERE ### 以及 ### END ADDING STATEMENTS HERE ###) 至使用者的現有存取政策。

這個陳述式中的省略符號 (...) 是為了簡潔起見。請不要移除現有存取政策中的任何陳述式。請勿在政策中輸入這些省略符號。

{ "Version": "2012-10-17", "Id": "...", "Statement": [ ### BEGIN ADDING STATEMENT HERE ### { "Effect": "Allow", "Action": [ "s3:DeleteBucket", "s3:DeleteObject" ], "Resource": "*" } ### END ADDING STATEMENT HERE ### ] }

包裝

在本教學課程中,您曾 AWS CodeBuild 用來將一組 Java 類別檔案建置至JAR檔案中。您接著檢視了建置的結果。

您現在可以 CodeBuild 在自己的案例中嘗試使用 。請遵循中的說明進行規劃組建 若您覺得尚未準備就緒,建議您嘗試組建我們的一些範例。如需詳細資訊,請參閱使用以案例為基礎的範例 CodeBuild