天天看點

Cloud Toolkit Maven 插件部署應用到阿裡雲 EDAS第 1 步 :添加 Maven 依賴第 2 步 :設定 yaml 檔案第 3 步:關聯 EDAS 賬号第 4 步:完成部署更多配置項

針對 EDAS 開發者,如果目前正在使用 WAR 包或 JAR 包來部署應用,那麼就可以通過 Cloud Toolkit Maven 插件部署應用到阿裡雲 EDAS。

第 1 步 :添加 Maven 依賴

在項目工程的 pom.xml 檔案中,添加如下

<build>

依賴

<build>
 <plugins>
     <plugin>
         <groupId>com.alibaba.cloud</groupId>
         <artifactId>toolkit-maven-plugin</artifactId>
         <version>1.0.0</version>
     </plugin>
 </plugins>
</build>           

從 Mavan 官方中央倉庫

查詢最新版本

第 2 步 :設定 yaml 檔案

在項目工程的根目錄下建立一個 .edas_config.yaml 檔案。如果打包工程為 Maven 的子子產品,則需要在子子產品的根目錄下建立該檔案,檔案内容如下:

env:
  region_id: cn-beijing
app:
  app_id: eb20dc8a-0000-567-1234-5f6a54550453           

以上配置項中,region_id 為應用機器所在的區域 ID,app_id 為應用 ID,以上的配置參數為示例參數,請替換成您的應用參數。更多參數請參閱本文文末的更多配置項。

第 3 步:關聯 EDAS 賬号

在任意目錄下建立一個賬号檔案,使用 yaml 格式配置 Access Key ID 和 Access Key Secret,Access Key ID 和 Access Key Secret 可登入阿裡雲使用者資訊管理檢視。配置示例如下:

access_key_id: 123456
access_key_secret: 7891011           

第 4 步:完成部署

進入您的根目錄(如果為 Maven 多子產品則進入子子產品目錄),打包指令:

mvn package toolkit:deploy -Daccess_key_file={賬号檔案路徑}           
Cloud Toolkit Maven 插件部署應用到阿裡雲 EDAS第 1 步 :添加 Maven 依賴第 2 步 :設定 yaml 檔案第 3 步:關聯 EDAS 賬号第 4 步:完成部署更多配置項

執行以上指令後,看到終端輸出上圖日志,代表應用已經成功部署到 EDAS 了。

更多配置項

部署應用的配置項可分成三大類:

  • 基本環境(env)
  • 應用配置(app)
  • 存儲配置(oss)

目前支援的配置項如下表所示:

類型 key 是否必須 說明
env region_id 應用所在的區域ID
app app_id 應用ID
package_version 部署包的版本。預設為 pom 檔案的 version 加上目前機器建構的時間,格式如:"1.0 (2018-09-27 19:00:00)"。
desc 部署的描述
group_id 部署分組 ID。預設為所有分組。
batch 部署分批。預設為 1 批,最大為 5 批。
batch_wait_time 部署分批之間的等待時間,機關為分鐘。預設不等待。
buildPackId

如果在建立應用時沒有指定運作環境,且沒有部署,

原生 Dubbo 或者 Spring Cloud 應用在第一次部署時可以不填。

非原生 Dubbo 或者 Spring Cloud 應在第一次部署時需要指定這個字段。(根據擷取容器版本清單接口 ListBuildPackRequest 查詢擷取)。

componentIds

原生 Dubbo 或者 Spring Cloud 應用在第一次通過 WAR 包部署時,需要通過這個字段指定部署所依賴的 Apache Tomcat 元件的版本。(根據擷取元件清單接口 ListComponentsRequest 接口查詢擷取)。

非原生 Dubbo 或者 Spring Cloud 應用在第一次通過 WAR 包部署時,可以不填。

stage_timeout 展示每個釋出單 stage 狀态的逾時時間,機關為分鐘,預設為 5 分鐘。如果同時設定了 batch_wait_time,那麼此參數在計算時會自動加上 batch_wait_time。在運作時,如果某個 stage 等待時間超過此門檻值,那麼此插件會自動退出。
oss 目标存儲桶所在的區域 ID 。預設使用應用所在的區域 ID 。
bucket 目标存儲桶名稱。預設使用 EDAS 提供的免費 OSS 存儲空間。若指定了 oss 配置,則必須指定 bucket 參數,否則使用 EDAS 自動配置設定的免費 OSS 存儲空間。

應用包上傳到oss的自定義路徑,預設使用 EDAS 提供的免費 OSS 存儲空間。

若使用指定的 OSS 存儲,則可通過該參數指明包存儲路徑,同時可以使用以下變量來進行參數化的路徑配置 {region_id},{app_id},{version},例如: pkgs/petstore/{version}/store.war

該配置預設為 {region_id}/{app_id}/{version}

access_key_id 應用包上傳到 oss 的自定義賬号 ID。
access_key_secret 應用包上傳到 oss 的自定義賬号密鑰。

配置示例一:指定分組和部署包的版本

例如我們在北京 region 有一個 ID 為 eb20dc8a-e6ee-4f6d-a36f-5f6a54550453 的應用,希望部署的分組 ID 為 06923bb9-8c5f-4508-94d8-517b692f30b9,部署包版本為 1.2。那麼配置如下:

env:
  region_id: cn-beijing
app:
  app_id: eb20dc8a-e6ee-4f6d-a36f-5f6a54550453
  package_version: 1.2
  group_id: 06923bb9-8c5f-4508-94d8-517b692f30b9           

配置示例二:指定 OSS 存儲

例如我們希望部署一個 ID 為 eb20dc8a-e6ee-4f6d-a36f-5f6a54550453 的應用,并将部署包上傳到自己在北京 region 的名為 release-pkg 的存儲桶,檔案對象名為 my.war,OSS 賬号 ID 為 ABC,OSS 賬号密鑰為 1234567890。那麼配置如下:

env:
  region_id: cn-beijing
app:
  app_id: eb20dc8a-e6ee-4f6d-a36f-5f6a54550453
oss:
  region_id: cn-beijing
  bucket: release-pkg
  key: my.war  
  access_key_id: ABC
  access_key_secret: 1234567890           

指定配置檔案

  • 當未指定配置檔案時,此插件會預設使用打包工程的根目錄下的

    .edas_config.yaml

    檔案。如果打包工程為一個 Maven 工程的子子產品,那麼預設配置檔案應該存放在該子子產品的根目錄下而不是整個 Maven 工程的根目錄下。
  • 您也可以通過設定參數

    -Dedas_config=xxx

    來指定配置檔案。
  • 如果既存在預設配置檔案,也通過參數指定配置檔案,那麼此插件會使用參數指定的配置檔案。

賬号配置及賬号優先級說明

當使用此插件部署應用時,您需提供部署應用的阿裡雲賬号密鑰對。目前此插件支援多種配置方式,當存在重複配置的情況時,優先級高的配置方式會覆寫優先級低的配置方式。優先級從高到低的配置方式羅列如下:

  • 指令行指定 ak/sk 參數:您可以通過如下任一方式來指定 access_key_id/access_key_secret:
    • 在使用 Maven 指令打包時,通過

      -Daccess_key_id=xx -Daccess_key_secret=xx

      來指定。
    • 在 pom 中配置此插件時,配置 ak/sk 參數如下所示:
      <plugin>
        <groupId>com.aliyun</groupId>
        <artifactId>edas-maven-plugin</artifactId>
        <version>2.30.0</version>
        <configuration>
            <accessKeyId>abc</accessKeyId>
            <accessKeySecret>1234567890</accessKeySecret>
        </configuration>
      </plugin>           
  • 指令行指定賬号檔案(推薦):在使用 Maven 指令打包時,通過

    -Daccess_key_file={賬号檔案路徑

    來指定 yaml 格式的賬号檔案。例如:
    access_key_id: abc
    access_key_secret: 1234567890           
  • 使用預設的阿裡雲賬号檔案:如果沒有通過以上兩種方式指定賬号,那麼此插件會使用您曾經配置過的阿裡雲賬号進行應用部署。
    • aliyuncli:如果您使用過最新的 aliyuncli 工具并且配置過阿裡雲賬号,那麼阿裡雲會在您目前 Home 目錄下生成一個

      .aliyuncli

      目錄,并在

      .aliyuncli

      目錄下建立

      credentials

      檔案來儲存您的賬号資訊。以Mac系統為例,假如系統使用者為jack,那麼會在

      /Users/jack/.aliyuncli/credentials

      檔案中儲存如下資訊:
      [default]
      aliyun_access_key_secret = 1234567890
      aliyun_access_key_id = abc           

此插件會使用此賬号檔案作為部署應用的賬号。

  • aliyun:如果您使用過老的 aliyun 工具并且配置過阿裡雲賬号,那麼 aliyun 工具會在您目前 Home 目錄下生成一個

    .aliyun

    目錄,并且在

    .aliyun

    目錄下建立一個

    config.json

    /Users/jack/.aliyun/config.json

    檔案中儲存賬号資訊,例如:
    {
      "current": "",
      "profiles": [{
          "name": "default",
          "mode": "AK",
          "access_key_id": "",
          "access_key_secret": "",
          "sts_token": "",
          "ram_role_name": "",
          "ram_role_arn": "",
          "ram_session_name": "",
          "private_key": "",
          "key_pair_name": "",
          "expired_seconds": 0,
          "verified": "",
          "region_id": "",
          "output_format": "json",
          "language": "en",
          "site": "",
          "retry_timeout": 0,
          "retry_count": 0
      }, {
          "name": "",
          "mode": "AK",
          "access_key_id": "abc",
          "access_key_secret": "xxx",
          "sts_token": "",
          "ram_role_name": "",
          "ram_role_arn": "",
          "ram_session_name": "",
          "private_key": "",
          "key_pair_name": "",
          "expired_seconds": 0,
          "verified": "",
          "region_id": "cn-hangzhou",
          "output_format": "json",
          "language": "en",
          "site": "",
          "retry_timeout": 0,
          "retry_count": 0
      }],
      "meta_path": ""
    }           
  • 系統環境變量:最後,此插件會嘗試通過系統環境變量來擷取 access_key_id 和 access_key_secret 的值。即通過 Java 代碼的

    System.getenv("access_key_id")

    System.getenv("access_key_secret")

    來擷取相應的值。

官網

https://toolkit.aliyun.com
Cloud Toolkit Maven 插件部署應用到阿裡雲 EDAS第 1 步 :添加 Maven 依賴第 2 步 :設定 yaml 檔案第 3 步:關聯 EDAS 賬号第 4 步:完成部署更多配置項

交流群(釘釘)

Cloud Toolkit Maven 插件部署應用到阿裡雲 EDAS第 1 步 :添加 Maven 依賴第 2 步 :設定 yaml 檔案第 3 步:關聯 EDAS 賬号第 4 步:完成部署更多配置項

交流群(微信)