本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
步驟 2:建立 Buildspec 檔案
(上一個步驟:步驟 1:建立原始程式碼)
在此步驟中,您會建立組建規格 (build spec) 檔案。一個BuildSpec是 CodeBuild 用來執行組建的一組組建命令及相關設定 (使用 YAML 格式)。若沒有建置規格,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 執行命令的建置階段期間。這些組建階段會在此以install
、pre_build
、build
和post_build
的形式列出。您無法變更這些組建階段名稱的拼字,也無法建立更多組建階段名稱。在此示例中,在
build
階段,CodeBuild 運行mvn install
命令。此命令會指示 Apache Maven 編譯、測試,並將編譯過的 Java 類別檔案封裝到建置輸出成品中。為求完整,此範例中的每個建置階段內都置放了一些echo
命令。當您在本教學課程後文檢視詳細建置資訊時,會顯示這些echo
命令可協助您更進一步了解 CodeBuild 執行命令的方式及順序。(雖然此範例中包含了所有組建階段,但若您不需要在其中一個階段執行任何命令,則可不必包含該組建階段。) 針對每個建置階段,CodeBuild 會依照列出的順序,從頭到尾執行每個指定的命令 (一次一個)。 -
artifacts
表示 CodeBuild 上傳到輸出存儲桶的構建輸出對象集。files
代表要包括在建置輸出中的檔案。CodeBuild 上傳單個messageUtil-1.0.jar
文件中找到target
相對目錄。檔案名稱 (messageUtil-1.0.jar
) 及目錄名稱 (target
) 是以 Apache Maven 建立及存放組建輸出成品的方式為基礎,僅適用於此範例。在您自己的組建中,檔案名稱及目錄可能會有所不同。
如需詳細資訊,請參閱 Buildspec 參考。
此時您的目錄結構看起來應該會如下。
(root directory name)
|-- pom.xml |-- buildspec.yml `-- src |-- main | `-- java | `-- MessageUtil.java `-- test `-- java `-- TestMessageUtil.java