適用於的 CodeDeploy 示例 CodeBuild - AWS CodeBuild

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

適用於的 CodeDeploy 示例 CodeBuild

此範例指示 AWS CodeBuild 使用 Maven 產生名為 my-app-1.0-SNAPSHOT.jar 的單一 JAR 檔案,做為組建輸出。然後,此示例使用 CodeDeploy 將 JAR 檔案部署到 Amazon Linux 執行個體。您也可以使用AWS CodePipeline來自動使用 CodeDeploy 將 JAR 檔案部署到 Amazon Linux 執行個體。此範例是根據 Apache Maven 網站上的 Maven in 5 Minutes 主題。

重要

執行此範例可能會對您的 AWS 帳戶收取費用。收費的項目可能包括 CodeBuild 和AWS與亞馬遜 S3 相關的資源和操作,AWS KMS、 CloudWatch 日誌和 Amazon EC2。如需詳細資訊,請參閱「」CodeBuild 定價Amazon S3 定價AWS Key Management Service價錢亞馬遜 CloudWatch 價錢,和Amazon EC2 定價

執行範例

如何執行此範例

  1. 下載並安裝 Maven。如需詳細資訊,請參閱 Apache Maven 網站上的下載 Apache Maven安裝 Apache Maven

  2. 切換至您本機電腦或執行個體上的空白目錄,然後執行此 Maven 命令。

    mvn archetype:generate -DgroupId=com.mycompany.app -DartifactId=my-app -DarchetypeArtifactId=maven-archetype-quickstart -DinteractiveMode=false

    如果成功,則會建立此目錄結構和檔案。

    . └── my-app ├── pom.xml └── src ├── main │ └── java │ └── com │ └── mycompany │ └── app │ └── App.java └── test └── java └── com └── mycompany └── app └── AppTest.java
  3. 建立檔案並輸入此內容。將檔案命名為 buildspec.yml,然後新增至 my-app 目錄。

    version: 0.2 phases: install: runtime-versions: java: corretto8 build: commands: - echo Build started on `date` - mvn test post_build: commands: - echo Build completed on `date` - mvn package artifacts: files: - target/my-app-1.0-SNAPSHOT.jar - appspec.yml discard-paths: yes
  4. 建立檔案並輸入此內容。將檔案命名為 appspec.yml,然後新增至 my-app 目錄。

    version: 0.0 os: linux files: - source: ./my-app-1.0-SNAPSHOT.jar destination: /tmp

    完成時,您的目錄結構和檔案應該如下所示。

    . └── my-app ├── buildspec.yml ├── appspec.yml ├── pom.xml └── src ├── main │ └── java │ └── com │ └── mycompany │ └── app │ └── App.java └── test └── java └── com └── mycompany └── app └── AppTest.java
  5. 建立 ZIP 檔案,其中包含my-app,然後將 ZIP 文件上傳到AWS CodeBuild和 CodeDeploy,例如 S3 輸入存儲桶或 GitHub 或位桶存儲庫。

    重要

    如果您想要使用 CodePipeline 來部署產生的組建輸出成品,則不能將原始碼上傳到 Bitbucket 儲存庫。

    請勿添加my-app設定到 ZIP 檔案,僅新增my-app。ZIP 檔案應該包含這些目錄和檔案:

    . └── CodeDeploySample.zip ├── buildspec.yml ├── appspec.yml ├── pom.xml └── src ├── main │ └── java │ └── com │ └── mycompany │ └── app │ └── App.java └── test └── java └── com └── mycompany └── app └── AppTest.java
  6. 遵循建立組建專案中的步驟建立組建專案。

    如果您使用 AWS CLI 來建立組建專案,則 create-project 命令的 JSON 格式輸入可能類似如下。(以您自己的值取代預留位置。)

    { "name": "sample-codedeploy-project", "source": { "type": "S3", "location": "codebuild-region-ID-account-ID-input-bucket/CodeDeploySample.zip" }, "artifacts": { "type": "S3", "location": "codebuild-region-ID-account-ID-output-bucket", "packaging": "ZIP", "name": "CodeDeployOutputArtifact.zip" }, "environment": { "type": "LINUX_CONTAINER", "image": "aws/codebuild/standard:4.0", "computeType": "BUILD_GENERAL1_SMALL" }, "serviceRole": "arn:aws:iam::account-ID:role/role-name", "encryptionKey": "arn:aws:kms:region-ID:account-ID:key/key-ID" }
  7. 如果您打算以 CodeDeploy 部署建置輸出成品,請遵循執行建置。否則,請跳過這個步驟。(這是因為如果您打算以 CodePipeline 部署建置輸出成品, CodePipeline 使用 CodeBuild 自動運行構建。)

  8. 完成使用 CodeDeploy 的設定步驟,包括:

    • 授予 IAM 使用者存取的權限 CodeDeploy 與AWS服務和行動 CodeDeploy 取決於。如需詳細資訊,請參閱「」預配 IAM 使用者中的AWS CodeDeploy使用者指南

    • 創建或標識要啟用的服務角色 CodeDeploy 來識別部署組建輸出成品的實例。如需詳細資訊,請參閱「」建立 CodeDeploy 的服務角色中的AWS CodeDeploy使用者指南

    • 建立或識別 IAM 執行個體描述檔,讓您的執行個體能夠存取 S3 輸入儲存貯體或 GitHub 儲存庫,該儲存庫包含建置輸出成品。如需詳細資訊,請參閱「」為您的 Amazon EC2 執行個體建立 IAM 執行個體描述檔中的AWS CodeDeploy使用者指南

  9. 建立或標識與 CodeDeploy ,其中部署建置輸出成品。如需詳細資訊,請參閱「」使用實例進行 CodeDeploy中的AWS CodeDeploy使用者指南

  10. 建立或識別 CodeDeploy 應用程式和部署羣組。如需詳細資訊,請參閱「」使用 CodeDeploy 創建應用程序中的AWS CodeDeploy使用者指南

  11. 將組建輸出成品部署至執行個體。

    若要使用 CodeDeploy 來部署,請參使用 CodeDeploy 部署修訂中的AWS CodeDeploy使用者指南

    若要使用 CodePipeline 來部署,請參使用 CodePipeline 與 CodeBuild 結合使用

  12. 部署完成之後,若要尋找組建輸出成品,請登入執行個體,然後在 /tmp 目錄中尋找名為 my-app-1.0-SNAPSHOT.jar 的檔案。

相關資源