使用Maven将应用部署到EDAS需要创建配置文件、账号文件等,您可以根据实际自定义配置文件、账号文件的内容。本文将介绍使用Maven将应用部署到EDAS的配置项说明、指定配置文件说明、账号配置优先级说明及相关使用示例。

配置项

部署应用的配置项可分成三大类:

  • 基本环境(ENV)
  • 应用配置(APP)
  • 存储配置(OSS)

目前支持的配置项如下表所示:

类型 key 是否必须 说明
ENV region_id 应用所在的区域ID。
endpoint 用于专有云设置POP网关接入点。
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 部署分批之间的等待时间,单位为分钟。默认不等待。
stage_timeout 展示每个变更流程stage状态的超时时间,单位为分钟,默认为5分钟。如果同时设置了batch_wait_time,那么此参数在计算时会自动加上batch_wait_time。在运行时,如果某个stage等待时间超过此阈值,那么此插件会自动退出。
OSS region_id 目标存储桶所在的区域ID。默认使用应用所在的区域ID。
bucket 目标存储桶名称。默认使用EDAS提供的免费OSS存储空间。若指定了OSS配置,则必须指定bucket参数,否则使用EDAS自动分配的免费OSS存储空间。
key 应用包上传到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的自定义账号密钥。

示例一

用户A在Region为北京有一个ID为eb20dc8a-xxx的应用,若需将版本为1.2的应用部署在分组ID为06923bb9-xxx分组下,则配置文件如下:

env:
  region_id: cn-beijing
app:
  app_id: eb20dc8a-xxx
  package_version: 1.2
  group_id: 06923bb9-xxx
            

示例二

用户B需部署一个ID为eb20dc8a-xxx的应用,并将部署包上传到自己在北京Region的名为release-pkg的存储桶中的my.war文件下。OSS账号ID为ABC,OSS账号密钥为1234567890。则配置文件如下:

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: 1234567890
            

指定配置文件

指定配置文件的方式有以下两种:

  • 在任意目录下新建配置文件,通过设置参数-Dedas_config={配置文件路径}来指定配置文件。

  • 当未设置参数指定配置文件时,Cloud Toolkit会默认使用被打包的工程根目录下的.edas_config.yaml文件作为配置文件。若被打包的工程为一个Maven工程的子模块,则默认使用该子模块的根目录下的.edas_config.yaml文件。

注意 如果既存在默认配置文件,也通过参数指定配置文件,Cloud Toolkit会优先使用参数指定的配置文件。

账号配置及优先级

使用Cloud Toolkit将应用部署到云端时,需要使用阿里云上的资源。因此在部署应用前,需要设置您的阿里云账号信息,确保拥有使用和管理相关资源、应用的权限。目前Cloud Toolkit支持多种配置方式,优先级从高到低如下:

说明 当重复配置时,优先级高的配置方式会覆盖优先级低的配置方式。
  • 使用命令行指定AccessKeyID和AccessKeySecret参数,有以下两种方式。

    • 在使用Maven命令打包时,通过命令-Daccess_key_id=xx -Daccess_key_secret=xx来指定。

    • 在Pom文件中配置Cloud Toolkit时,插入AccessKeyID和AccessKeySecret参数配置,示例如下:

      <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    
  • 使用默认的阿里云账号文件。

    如果没有通过以上两种方式指定账号,那么Cloud Toolkit会使用您曾经配置过的阿里云账号进行应用部署。

    • 如果您使用过最新的aliyuncli工具并且配置过阿里云账号,那么阿里云会在您当前Home目录下生成一个.aliyuncli目录,并在.aliyuncli目录下创建credentials文件来保存您的账号信息。以Mac系统为例,在/Users/用户名/.aliyuncli/credentials文件中保存账号信息如下:
          [default]
          aliyun_access_key_secret = 1234567890
          aliyun_access_key_id = abc
    • 如果您使用过老的aliyun工具并且配置过阿里云账号,那么aliyun工具会在您当前Home目录下生成一个.aliyun目录,并且在.aliyun目录下创建一个config.json文件来保存您的账号信息。以Mac系统为例,在/Users/用户名/.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": ""
      }
                                  
  • 系统环境变量。

    若您未采用上述任何一种方式设置账号文件,Cloud Toolkit会尝试通过系统环境变量来获取access_key_id和access_key_secret的值(即通过Java代码的System.getenv("access_key_id")System.getenv("access_key_secret")来获取相应的值)。