通过IntelliJ IDEA插件部署应用

除了通过SAE控制台进行应用部署,您还可以通过Alibaba Cloud Toolkit for IntelliJ IDEA(简称Cloud Toolkit)插件部署应用。

前提条件

  1. 下载并安装JDK1.8或更高版本
  2. 下载并安装IntelliJ IDEA(2018.3或更高版本)
    说明 由于JetBrains插件官方服务器设立在海外,如果因访问缓慢导致无法下载安装,请联系我们
  3. 在IntelliJ IDEA中安装和配置Cloud Toolkit

背景信息

Cloud Toolkit是阿里巴巴提供的免费IDE插件。您可以注册或使用已有的账号免费下载Cloud Toolkit,下载完成后,将其安装在IntelliJ IDEA中。

在本地完成应用程序的开发、调试及测试后,您可以通过本插件将应用程序快速部署到SAE

部署应用到SAE

Cloud Toolkit插件目前仅支持将应用以WAR包、JAR包或镜像方式部署到SAE

  1. 在IntelliJ IDEA界面左侧的Project区域中右键单击待部署的工程名,在快捷菜单中选择Alibaba Cloud > Deploy to SAE...
  2. Deploy to SAE对话框,配置应用部署参数,配置完成后单击Apply保存设置。
    参数说明如下:
    参数说明
    Region选择应用所在地域。
    Namespace选择应用所在命名空间。
    Application选择应用名称。
    Build
    • Maven Build:Maven Build方式构建应用,默认添加Maven任务构建部署包。如果需要部署子模块,请参见使用IntelliJ IDEA部署多模块工程中的子模块
    • Upload File:JAR包或者WAR包构建应用,上传WAR包或者JAR包后部署应用。
    • Image:镜像方式构建应用,需要设置镜像地址后部署应用。
    • Gradle Build:暂不支持。
  3. 可选:Deploy to SAE对话框,单击Advanced,在Advanced区域配置应用高级参数。
    说明 如果您未配置高级参数,部署时将默认使用SAE控制台上的值。

    参数说明如下:

    类型参数示例值说明
    部署JAR包Package Version1.0.1部署的应用版本号。
    JDKOpen JDK 8部署的应用依赖的JDK版本。
    Web Containerapache-tomcat-7.0.91部署的应用依赖的Tomcat版本。
    启动命令设置Jar Start Optionscustom-optionJAR包启动应用选项。应用默认启动命令如下:
    $JAVA_HOME/bin/java $JarStartOptions -jar $CATALINA_OPTS "$package_path" $JarStartArgs
    Jar Start Argscustom-argsJAR包启动应用参数。应用默认启动命令如下:
    $JAVA_HOME/bin/java $JarStartOptions -jar $CATALINA_OPTS "$package_path" $JarStartArgs
    发布策略设置Update Strategy{"type":"GrayBatchUpdate","batchUpdate":{"batch":2,"releaseType":"auto","batchWaitTime":1},"grayUpdate":{"gray":1}}部署策略,可参考以下示例:
    • 示例1:灰度1台+后续分2批+自动分批+分批间隔1分钟
      {"type":"GrayBatchUpdate","batchUpdate":{"batch":2,"releaseType":"auto","batchWaitTime":1},"grayUpdate":{"gray":1}}
    • 示例2:分2批发布+自动分批+分批间隔0分钟
      {"type":"BatchUpdate","batchUpdate":{"batch":2,"releaseType":"auto","batchWaitTime":0}}
    Hosts绑定设置Custom Host Alias[{"hostName":"samplehost","ip":"127.0.0.1"}]容器内自定义Host映射。
    应用健康检查设置Liveness{"exec":{"command":["sleep","5s"]},"initialDelaySeconds":10,"timeoutSeconds":11}容器健康检查,健康检查失败的容器将被强制关闭并恢复。目前仅支持容器内下发命令的方式:
    {"exec":{"command":["sleep","5s"]},"initialDelaySeconds":10,"timeoutSeconds":11}
    Readiness{"exec":{"command":["sleep","6s"]},"initialDelaySeconds":15,"timeoutSeconds":12}应用启动状态检查,多次健康检查失败的容器将被强制关闭并重启。不通过健康检查的容器将不会有SLB流量进入。
    部署设置Min Ready Instances1应用的最小存活实例数。
    Batch Wait Time10分批发布等待时间,单位为秒。
    环境变量设置Envs[{"name":"envtmp","value":"0"}]容器环境变量参数。
  4. 单击Run
    您可以通过以下两种方式证明应用已部署成功:
    • IntelliJ IDEA的Console区域打印的运行日志中显示BUILD SUCCESS
    • SAE控制台上的应用变更记录显示执行成功

管理Maven构建任务

Deploy to SAE页面的Before launch区域,您可以对Maven构建任务执行添加、删除、修改和移动操作。

  1. 在IntelliJ IDEA界面左侧的Project中右键单击待部署的工程名,在快捷菜单中选择Alibaba Cloud > Deploy to SAE...
  2. Deploy to SAE页面的Before launch区域,管理Maven任务。
    • 添加任务
      1. 单击Before launch区域右侧的添加Maven任务,在下拉框中选择Run Maven Goal
      2. Select Maven Goal对话框中,选择当前工程可用的模块,在Command line区域中输入构建命令。
      3. 单击OK
    • 删除任务:选择需要删除的任务,单击Before launch区域右侧的删除Maven任务
    • 修改任务:选择需要修改的任务,单击Before launch区域右侧的编辑Maven任务,在Select Maven Goal对话框中修改任务信息,单击OK
    • 移动任务:选择需要移动的任务,单击Before launch区域右侧的移动Maven任务1移动Maven任务2,调整任务顺序。

部署多模块工程

多模块工程是各个模块独立开发,模块之间存在调用关系的项目工程。Cloud Toolkit可以用于部署多模块工程中的某个子模块的场景。

如果您需要部署多模块Maven工程的子模块,您需要在Deploy to SAE页面的Before launch区域,将待部署的子模块任务设置为最后执行。具体操作,请参见使用IntelliJ IDEA部署多模块工程中的子模块

多模块工程是常见的项目组织形式,toolkit-maven-plugin插件支持以下两种方式来部署多模块工程。
  • 方式一:在父工程中执行打包及部署命令。

    此方式需要toolkit-maven-plugin为1.0.3及以上版本。

    在父工程中执行toolkit:deploy命令时,增加-Ddeploy_artifacts参数来指定需要部署的子模块Artifact ID。如果希望部署多个子模块,请以半角逗号(,)分隔。

    例如:一个CarShop工程存在以下示例的子模块:

    carshop
       itemcenter-api
       itemcenter
    
       detail

    如果想同时部署itemcenter和detail子模块,您可以在carshop目录下,执行以下命令:

    mvn clean package toolkit:deploy -Ddeploy_artifacts=itemcenter,detail

    默认情况下,此插件会根据itemcenter和detail模块下的.edas_config.yaml文件来分别部署对应的应用。您也可以通过增加-Dedas_config参数来指定配置文件。

  • 方式二:在子模块中执行打包及部署命令。此方式支持toolkit-maven-plugin所有版本。

    首先,在父工程中执行install命令,将子模块依赖安装到本地的Maven仓库。然后,进入到需要部署的子模块目录下执行toolkit:deploy命令即可。

更多信息

SAE部署应用完成后,您可以对应用进行如下操作。

操作

相关文档

更新、扩缩容、启停、删除应用等生命周期管理的操作

管理应用生命周期

自动弹性伸缩、CLB绑定和批量启停等提升应用性能的操作

日志管理、监控管理、应用事件查看和变更记录查看等聚焦应用运行状态的操作