通过 Cloud Toolkit Maven 插件部署应用到阿里云 EDAS

本文涉及的产品
Serverless 应用引擎 SAE,800核*时 1600GiB*时
云原生网关 MSE Higress,422元/月
注册配置 MSE Nacos/ZooKeeper,118元/月
简介: Cloud Toolkit 1.1.0 支持 Command 清理

针对 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 --proudct=edas -Daccess_key_file={账号文件路径}

image

执行以上命令后,看到终端输出上图日志,代表应用已经成功部署到 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 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 的自定义账号密钥。

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

例如我们在北京 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 文件来保存您的账号信息。以Mac系统为例,假如系统用户为jack,那么会在 /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
文档中心:https://yq.aliyun.com/articles/665049
需求Bug反馈:https://www.wenjuan.com/s/emIFb2/

钉钉群

image

微信群

image





相关实践学习
使用DAS实现数据库自动SQL优化
本场景介绍如何使用DAS实现数据库自动SQL优化。
SpringMVC框架入门
Spring MVC属于SpringFrameWork的后续产品,已经融合在Spring Web Flow里面。Spring 框架提供了构建 Web 应用程序的全功能 MVC 模块。在使用Spring进行WEB开发时,可以选择使用Spring的SpringMVC框架或集成其他MVC开发框架,如Struts2等。 相关的阿里云产品企业级分布式应用服务 EDAS:企业级分布式应用服务 EDAS(Enterprise Distributed Application Service)是一个应用托管和微服务管理的 PaaS 平台,提供应用开发、部署、监控、运维等全栈式解决方案,同时支持 Spring Cloud、Apache Dubbo(以下简称 Dubbo )等微服务运行环境,助力您的各类应用轻松上云。产品详情: https://www.aliyun.com/product/edas&nbsp;
目录
相关文章
|
4月前
|
Java Linux Maven
Linux系统Docker部署Nexus Maven并实现远程访问本地管理界面
Linux系统Docker部署Nexus Maven并实现远程访问本地管理界面
161 3
|
4月前
|
Java Linux Maven
私有仓库工具Nexus Maven如何部署并实现远程访问管理界面
私有仓库工具Nexus Maven如何部署并实现远程访问管理界面
148 0
|
4月前
|
IDE jenkins Java
告别繁琐配置:Alibaba Cloud Toolkit插件打破Jenkins自动化部署的局限
告别繁琐配置:Alibaba Cloud Toolkit插件打破Jenkins自动化部署的局限
282 0
|
24天前
|
Java Linux Maven
部署安装maven和mvnd
部署安装maven和mvnd
|
16天前
|
Java
pandora boot热点应用探索问题之maven-compiler-plugin耗时较长的问题如何解决
pandora boot热点应用探索问题之maven-compiler-plugin耗时较长的问题如何解决
|
3月前
|
Java Linux 测试技术
Maven命令大全:从安装到部署,一篇文章带你玩转Maven
本文由木头左介绍Maven,一个用于Java项目管理的工具,涉及Maven的安装配置(Windows和Linux)及核心命令,包括install、package、compile、clean、deploy、test、verify和site。通过这些命令,可以实现构建、打包、编译、测试、部署和生成项目站点等操作。
|
2月前
|
Java jenkins 持续交付
Jenkins是开源CI/CD工具,用于自动化Java项目构建、测试和部署。通过配置源码管理、构建触发器、执行Maven目标,实现代码提交即触发构建和测试
【7月更文挑战第1天】Jenkins是开源CI/CD工具,用于自动化Java项目构建、测试和部署。通过配置源码管理、构建触发器、执行Maven目标,实现代码提交即触发构建和测试。成功后,Jenkins执行部署任务,发布到服务器或云环境。使用Jenkins能提升效率,保证软件质量,加速上线,并需维护其稳定运行。
88 0
|
3月前
|
IDE Java Linux
在Maven中设置JVM系统参数及Java应用调试实例
在Maven中设置JVM系统参数及Java应用调试实例
86 0
|
4月前
|
Java 应用服务中间件 Apache
Tomcat的基本使用,如何用Maven创建Web项目、开发完成部署的Web项目
Tomcat的基本使用,如何用Maven创建Web项目、开发完成部署的Web项目
56 1
|
4月前
|
Java Maven 数据安全/隐私保护
Nexus【应用 01】上传jar包到私有Maven仓库的两种方法:手动 Upload 和 mvn deploy 命令(配置+操作流程)
Nexus【应用 01】上传jar包到私有Maven仓库的两种方法:手动 Upload 和 mvn deploy 命令(配置+操作流程)
1463 0

相关产品

  • 企业级分布式应用服务
  • 推荐镜像

    更多
    下一篇
    云函数