使用Maven將應(yīng)用部署到EDAS需要?jiǎng)?chuàng)建配置文件、賬號(hào)文件等,您可以根據(jù)實(shí)際自定義配置文件、賬號(hào)文件的內(nèi)容。本文將介紹使用Maven將應(yīng)用部署到EDAS的配置項(xiàng)說(shuō)明、指定配置文件說(shuō)明、賬號(hào)配置優(yōu)先級(jí)說(shuō)明及相關(guān)使用示例。
配置項(xiàng)
部署應(yīng)用的配置項(xiàng)可分成三大類(lèi):
- 基本環(huán)境(ENV)
- 應(yīng)用配置(APP)
- 存儲(chǔ)配置(OSS)
目前支持的配置項(xiàng)如下表所示:
類(lèi)型 | key | 是否必須 | 說(shuō)明 |
---|---|---|---|
ENV | region_id | 是 | 應(yīng)用所在的區(qū)域ID。 |
endpoint | 否 | 用于專(zhuān)有云設(shè)置POP網(wǎng)關(guān)接入點(diǎn)。 | |
APP | app_id | 是 | 應(yīng)用ID。 |
package_version | 否 | 部署包的版本。默認(rèn)為pom文件的version加上當(dāng)前機(jī)器構(gòu)建的時(shí)間,格式如:”1.0 (2018-09-27 19:00:00)”。 | |
desc | 否 | 部署的描述。 | |
group_id | 否 | 部署分組ID。默認(rèn)為所有分組。 | |
batch | 否 | 部署分批。默認(rèn)為1批,最大為5批。 | |
batch_wait_time | 否 | 部署分批之間的等待時(shí)間,單位為分鐘。默認(rèn)不等待。 | |
stage_timeout | 否 | 展示每個(gè)變更流程stage狀態(tài)的超時(shí)時(shí)間,單位為分鐘,默認(rèn)為5分鐘。如果同時(shí)設(shè)置了batch_wait_time,那么此參數(shù)在計(jì)算時(shí)會(huì)自動(dòng)加上batch_wait_time。在運(yùn)行時(shí),如果某個(gè)stage等待時(shí)間超過(guò)此閾值,那么此插件會(huì)自動(dòng)退出。 | |
OSS | region_id | 否 | 目標(biāo)存儲(chǔ)桶所在的區(qū)域ID。默認(rèn)使用應(yīng)用所在的區(qū)域ID。 |
bucket | 否 | 目標(biāo)存儲(chǔ)桶名稱(chēng)。默認(rèn)使用EDAS提供的免費(fèi)OSS存儲(chǔ)空間。若指定了OSS配置,則必須指定bucket參數(shù),否則使用EDAS自動(dòng)分配的免費(fèi)OSS存儲(chǔ)空間。 | |
key | 否 | 應(yīng)用包上傳到OSS的自定義路徑,默認(rèn)使用EDAS提供的免費(fèi)OSS存儲(chǔ)空間。若使用指定的OSS存儲(chǔ),則可通過(guò)該參數(shù)指明包存儲(chǔ)路徑,同時(shí)可以使用以下變量來(lái)進(jìn)行參數(shù)化的路徑配置 {region_id},{app_id},{version},例如:pkgs/petstore/{version}/store.war該配置默認(rèn)為{region_id}/{app_id}/{version}。 | |
access_key_id | 否 | 應(yīng)用包上傳到OSS的自定義賬號(hào)ID。 | |
access_key_secret | 否 | 應(yīng)用包上傳到OSS的自定義賬號(hào)密鑰。 |
示例一
用戶A在Region為北京有一個(gè)ID為eb20dc8a-xxx
的應(yīng)用,若需將版本為1.2的應(yīng)用部署在分組ID為06923bb9-xxx
分組下,則配置文件如下:
env:
region_id: cn-beijing
app:
app_id: eb20dc8a-xxx
package_version: 1.2
group_id: 06923bb9-xxx
示例二
用戶B需部署一個(gè)ID為eb20dc8a-xxx的應(yīng)用,并將部署包上傳到自己在北京Region的名為release-pkg
的存儲(chǔ)桶中的my.war
文件下。OSS賬號(hào)ID為ABC,OSS賬號(hào)密鑰為123456****。則配置文件如下:
env:
region_id: cn-beijing
app:
app_id: eb20dc8a-xxx
oss:
region_id: cn-beijing
bucket: release-pkg
key: my.war
access_key_id: ABC
access_key_secret: 123456****
指定配置文件
指定配置文件的方式有以下兩種:
-
在任意目錄下新建配置文件,通過(guò)設(shè)置參數(shù)
-Dedas_config={配置文件路徑}
來(lái)指定配置文件。 -
當(dāng)未設(shè)置參數(shù)指定配置文件時(shí),Cloud Toolkit會(huì)默認(rèn)使用被打包的工程根目錄下的
.edas_config.yaml
文件作為配置文件。若被打包的工程為一個(gè)Maven工程的子模塊,則默認(rèn)使用該子模塊的根目錄下的.edas_config.yaml
文件。
賬號(hào)配置及優(yōu)先級(jí)
使用Cloud Toolkit將應(yīng)用部署到云端時(shí),需要使用阿里云上的資源。因此在部署應(yīng)用前,需要設(shè)置您的阿里云賬號(hào)信息,確保擁有使用和管理相關(guān)資源、應(yīng)用的權(quán)限。目前Cloud Toolkit支持多種配置方式,優(yōu)先級(jí)從高到低如下:
-
使用命令行指定AccessKeyID和AccessKeySecret參數(shù),有以下兩種方式。
-
在使用Maven命令打包時(shí),通過(guò)命令
-Daccess_key_id=xx -Daccess_key_secret=xx
來(lái)指定。 -
在Pom文件中配置Cloud Toolkit時(shí),插入AccessKeyID和AccessKeySecret參數(shù)配置,示例如下:
<plugin> <groupId>com.aliyun</groupId> <artifactId>edas-maven-plugin</artifactId> <version>2.30.0</version> <configuration> <accessKeyId>abc</accessKeyId> <accessKeySecret>123456****</accessKeySecret> </configuration> </plugin>
-
-
命令行指定賬號(hào)文件(推薦)。
在使用Maven命令打包時(shí),通過(guò)
-Daccess_key_file={賬號(hào)文件路徑}
來(lái)指定YAML格式的賬號(hào)文件。賬號(hào)文件示例如下:access_key_id: abc access_key_secret: 123456****
-
使用默認(rèn)的阿里云賬號(hào)文件。
如果沒(méi)有通過(guò)以上兩種方式指定賬號(hào),那么Cloud Toolkit會(huì)使用您曾經(jīng)配置過(guò)的阿里云賬號(hào)進(jìn)行應(yīng)用部署。
- 如果您使用過(guò)最新的aliyuncli工具并且配置過(guò)阿里云賬號(hào),那么阿里云會(huì)在您當(dāng)前Home目錄下生成一個(gè)
.aliyuncli
目錄,并在.aliyuncli
目錄下創(chuàng)建credentials
文件來(lái)保存您的賬號(hào)信息。以Mac系統(tǒng)為例,在/Users/用戶名/.aliyuncli/credentials
文件中保存賬號(hào)信息如下:[default] aliyun_access_key_secret = 123456**** aliyun_access_key_id = abc
- 如果您使用過(guò)老的aliyun工具并且配置過(guò)阿里云賬號(hào),那么aliyun工具會(huì)在您當(dāng)前Home目錄下生成一個(gè)
.aliyun
目錄,并且在.aliyun
目錄下創(chuàng)建一個(gè)config.json
文件來(lái)保存您的賬號(hào)信息。以Mac系統(tǒng)為例,在/Users/用戶名/.aliyun/config.json
文件中保存賬號(hào)信息如下:{ "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": "" }
- 如果您使用過(guò)最新的aliyuncli工具并且配置過(guò)阿里云賬號(hào),那么阿里云會(huì)在您當(dāng)前Home目錄下生成一個(gè)
- 系統(tǒng)環(huán)境變量。
若您未采用上述任何一種方式設(shè)置賬號(hào)文件,Cloud Toolkit會(huì)嘗試通過(guò)系統(tǒng)環(huán)境變量來(lái)獲取access_key_id和access_key_secret的值(即通過(guò)Java代碼的
System.getenv("access_key_id")
和System.getenv("access_key_secret")
來(lái)獲取相應(yīng)的值)。