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

本文涉及的产品
Serverless 应用引擎免费试用套餐包,4320000 CU,有效期3个月
云原生网关 MSE Higress,422元/月
服务治理 MSE Sentinel/OpenSergo,Agent数量 不受限
简介: 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;
目录
相关文章
|
7月前
|
Java Linux Maven
Linux系统Docker部署Nexus Maven并实现远程访问本地管理界面
Linux系统Docker部署Nexus Maven并实现远程访问本地管理界面
190 3
|
7月前
|
Java Linux Maven
私有仓库工具Nexus Maven如何部署并实现远程访问管理界面
私有仓库工具Nexus Maven如何部署并实现远程访问管理界面
182 0
|
4月前
|
敏捷开发 Java 持续交付
阿里云云效产品使用合集之maven仓库是否可以代替自建的Nexus
云效作为一款全面覆盖研发全生命周期管理的云端效能平台,致力于帮助企业实现高效协同、敏捷研发和持续交付。本合集收集整理了用户在使用云效过程中遇到的常见问题,问题涉及项目创建与管理、需求规划与迭代、代码托管与版本控制、自动化测试、持续集成与发布等方面。
|
2月前
|
SQL IDE Java
入门Cloud Toolkit:简化你的Java应用开发与部署流程
【10月更文挑战第19天】作为一名长期从事Java开发的程序员,我一直致力于寻找能够简化日常开发工作的工具。在众多工具中,阿里巴巴推出的Cloud Toolkit引起了我的注意。这款免费的插件旨在帮助开发者更轻松地进行开发、测试及部署工作,尤其是在与云服务交互时表现尤为出色。本文将从个人的角度出发,介绍Cloud Toolkit的基本功能及其使用技巧,希望能帮助初学者快速上手这款实用工具。
30 1
|
4月前
|
安全 Java Maven
优化Maven镜像配置:使用阿里云加速依赖下载
更新Maven镜像配置至关重要,尤其使用阿里云仓库时。在`settings.xml`中加入特定镜像配置可显著提升依赖下载速度。示例配置指定了阿里云镜像ID、替代表态仓库、安全的URL、默认布局及启用版本管理。需定位至用户目录下的`.m2/`文件夹编辑`settings.xml`,添加镜像信息后保存测试。若下载仍慢,考虑网络状况或备选镜像。多镜像设置时需注意避免冲突。
698 3
|
4月前
|
Java Linux Maven
部署安装maven和mvnd
部署安装maven和mvnd
|
4月前
|
Kubernetes jenkins 持续交付
Jenkins + SVN/Git + Maven + Docker + 阿里云镜像 + Kubernetes(K8S)
Jenkins + SVN/Git + Maven + Docker + 阿里云镜像 + Kubernetes(K8S)
182 0
|
6月前
|
运维 安全 Java
阿里云云效操作报错合集之maven的setting.xml 上,本地拉取时,报401问题,该怎么办
本合集将整理呈现用户在使用过程中遇到的报错及其对应的解决办法,包括但不限于账户权限设置错误、项目配置不正确、代码提交冲突、构建任务执行失败、测试环境异常、需求流转阻塞等问题。阿里云云效是一站式企业级研发协同和DevOps平台,为企业提供从需求规划、开发、测试、发布到运维、运营的全流程端到端服务和工具支撑,致力于提升企业的研发效能和创新能力。
|
5月前
|
运维 Java Devops
阿里云云效操作报错合集之进行Maven打包时,遇到报错"ERR: No email loop found by ",该怎么办
本合集将整理呈现用户在使用过程中遇到的报错及其对应的解决办法,包括但不限于账户权限设置错误、项目配置不正确、代码提交冲突、构建任务执行失败、测试环境异常、需求流转阻塞等问题。阿里云云效是一站式企业级研发协同和DevOps平台,为企业提供从需求规划、开发、测试、发布到运维、运营的全流程端到端服务和工具支撑,致力于提升企业的研发效能和创新能力。
|
6月前
|
Java Linux 测试技术
Maven命令大全:从安装到部署,一篇文章带你玩转Maven
本文由木头左介绍Maven,一个用于Java项目管理的工具,涉及Maven的安装配置(Windows和Linux)及核心命令,包括install、package、compile、clean、deploy、test、verify和site。通过这些命令,可以实现构建、打包、编译、测试、部署和生成项目站点等操作。

相关产品

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

    更多