构建软件包至OSS并部署

本示例模板是用于从Git拉取代码,构建成软件包并上传至OSS,并批量部署到多台ECS。该模板既支持在用户已有ECS上构建,也支持临时开启一台ECS构建后释放。

前提条件

  • 您已创建ECS实例,且ECS实例已经开通公网,更多信息,请参见创建实例开通公网

    重要

    本文示例模板仅支持在Linux操作系统下构建。

  • 您已开通OSS对象存储,且已创建OSS Bucket,更多信息,请参见开通OSS服务创建存储空间

示例模板流程

image
  1. 由您指定代码源(例如OSS对象存储或Git),OOS将为代码源生成临时链接,用于后续拉取。

  2. 构建软件包(如JAR包)并上传到OSS。

  1. 拉取已构建的软件包,批量在多台ECS上部署。

使用示例

代码源准备

本示例使用了一个Spring Boot的示例项目代码来演示,代码已上传到GiteeGitHub仓库,如果想要使用,请先fork到自己的仓库。代码地址:

创建模板

  1. 登录系统运维管理控制台。

  2. 在左侧导航栏,选择自动化任务 > 自定义任务模板,单击创建模板

  3. 构建部署区域,选择构建软件包至OSS并部署,单击下一步

  4. 流程配置页签下,填写模板参数,然后单击创建模板

    1. 指定您的代码源,为下一步拉取代码做准备,生成一个临时授权链接。

      本示例以Gitee为代码源,填写该代码源的所有者组织仓库以及分支等参数。

      说明
      • 如果您未授权阿里云从您的GitHub/Gitee读取您的代码仓库,请单击前往授权来完成授权操作。

      • 如果您之前已经Fork示例代码,您只需下拉仓库,会自动展示您账号下所有仓库,请选择Fork的示例代码仓库。

      2024-12-16_11-42-41.png

    2. 构建软件包(如JAR包)并上传到OSS。

      1. 选择代码源和构建的ECS实例,再提供构建命令。

        oss.png

        • 代码源:代码源以选择git为例,代码源链接引用了上一个任务的输出authorizedUrl

        • 选择构建Ecs:您需要选择构建的ECS,支持在已有ECS构建新启动临时ECS构建两种方式。

          说明

          选择新启动临时ECS构建方式,系统会以按量付费的方式产生费用。另外,OOS会自动检测ECS上是否已安装Docker,如果没有安装,会自动为您安装Docker社区版。

        • 构建配置:按需提供构建准备命令。

          本文仅提供一个构建部署脚本示例,执行该示例会先安装了Maven,然后打JAR包,JAR包会放在target目录下。您可按需将该示例更换适合自己项目的脚本。

          构建脚本示例(Alibaba Cloud Linux 3)

          ### sample build script
          set -e
          yum install -y maven-3.5.4
          mvn package

          构建脚本示例(Ubuntu)

          ### sample build script
          set -e
          apt install -y maven
          mvn package

          构建脚本示例(CentOS)

          ### sample build script
          set -e
          yum install -y maven
          mvn package
      2. 提供打包路径和构建物名称(即要打包的压缩包名称)。

        以下示例表示指定打包路径为target/,OOS会将软件包文件夹压缩为一个.tgz文件。

        构建物.png

    3. 上传构建物到OSS。

      您可指定想要上传到的OSS bucketBucket里的目录。

      goujianwu --oos.png

      任务输出(可选)区域,添加bucketName(OSS bucket的名称)和objectName(构建物在bucket内的完整路径,目录+构建物名称)参数作为输出内容,以供后续任务使用。后续任务可直接引用这些输出,无需重新填写。

    4. 批量在多台Linux系统的ECS上部署软件包。

      目标ECS.png

      • 要部署到的目标ECS:这里您可以选择多个ECS批量部署。

      • OSS的信息:提供构建物所在OSS的信息。其中,OSS bucket名称和OSS object名称已默认引用上一步的输出,无需重复填写。同时,需要指定软件包下载到的路径,这里默认下载到/home/admin/app/

      • 部署脚本:您可以根据自己实际项目提供部署脚本。

        本模板提供的示例是先把.tgz压缩包解压到指定路径,然后使用java -jar命令运行我们打的JAR包,并指定端口为8080。

    5. 可选)设置任务的并发控制参数,控制批量部署到多台ECS的并发速率。

    6. 单击创建模板

执行模板

  1. 登录系统运维管理控制台。

  2. 在左侧导航栏,选择自动化任务 > 自定义任务模板

  3. 自定义任务模板页面,找到已创建的模板,单击对应操作列下的创建执行

  4. 基本信息阶段,配置相应参数,单击下一步:设置参数

  5. 设置参数阶段,如果没有可配置的参数,直接单击下一步:确定

  6. 单击创建

    在任务执行管理页面,执行状态显示为成功时,表示模板执行任务已完成。

    执行模板结果-zh.png

  7. 登录云服务器ECS控制台

  8. 找到部署的目标ECS实例并远程连接该实例。

    具体操作,请参见使用Workbench工具以SSH协议登录Linux实例

  9. 执行以下命令,确认本地构建部署是否成功。

    curl http://localhost:8080/hello

    看到返回字段,即表明部署成功。image

    说明

    如果结果显示Failed to connect to localhost port 8080:Connection refused,很可能是您的ECS未安装Java导致,请执行yum install java命令后再次验证。

后续使用

后续如果您的代码有更新,您只需把代码推送到相应Git仓库,然后重新执行该CI/CD模板,该流水线会为您拉取最新代码,重新打包并推送至OSS对象存储。然后,最新版本的软件包会被批量的部署到您指定的多台ECS上。当然,如果您需要调整模板,也可以更新模板后再重新执行。