針對 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={賬号檔案路徑}

執行以上指令後,看到終端輸出上圖日志,代表應用已經成功部署到 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
指定配置檔案
- 當未指定配置檔案時,此插件會預設使用打包工程的根目錄下的
檔案。如果打包工程為一個 Maven 工程的子子產品,那麼預設配置檔案應該存放在該子子產品的根目錄下而不是整個 Maven 工程的根目錄下。.edas_config.yaml
- 您也可以通過設定參數
來指定配置檔案。-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 指令打包時,通過
- 指令行指定賬号檔案(推薦):在使用 Maven 指令打包時,通過
來指定 yaml 格式的賬号檔案。例如:-Daccess_key_file={賬号檔案路徑
access_key_id: abc access_key_secret: 1234567890
- 使用預設的阿裡雲賬号檔案:如果沒有通過以上兩種方式指定賬号,那麼此插件會使用您曾經配置過的阿裡雲賬号進行應用部署。
- aliyuncli:如果您使用過最新的 aliyuncli 工具并且配置過阿裡雲賬号,那麼阿裡雲會在您目前 Home 目錄下生成一個
目錄,并在.aliyuncli
目錄下建立.aliyuncli
檔案來儲存您的賬号資訊。以Mac系統為例,假如系統使用者為jack,那麼會在credentials
檔案中儲存如下資訊:/Users/jack/.aliyuncli/credentials
[default] aliyun_access_key_secret = 1234567890 aliyun_access_key_id = abc
- aliyuncli:如果您使用過最新的 aliyuncli 工具并且配置過阿裡雲賬号,那麼阿裡雲會在您目前 Home 目錄下生成一個
此插件會使用此賬号檔案作為部署應用的賬号。
- 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交流群(釘釘)
交流群(微信)