使用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文件。

重要 如果既存在默認(rèn)配置文件,也通過(guò)參數(shù)指定配置文件,Cloud Toolkit會(huì)優(yōu)先使用參數(shù)指定的配置文件。

賬號(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í)從高到低如下:

說(shuō)明 當(dāng)重復(fù)配置時(shí),優(yōu)先級(jí)高的配置方式會(huì)覆蓋優(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": ""
      }
                                  
  • 系統(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)的值)。