构建软件包至OSS并部署

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

前提条件

步骤总览

下图展示了该示例模板的两个步骤:

  • 第一步:由您指定代码源,比如OSS对象存储或者Git,OOS将为代码源生成临时链接,用于后续拉取。

  • 第二步:构建软件包(如JAR包)并上传到OSS

  • 第三步:拉取上一步构建的软件包,批量在多台ECS上部署。

image

使用示例

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

gitee:gitee示例代码(中国内地建议使用gitee)

github:github示例代码

以下演示是在Alibaba Cloud Linux 3.2104操作系统下,不同环境可能会相关的构建部署命令不同,请按需调整。

创建模板

  1. 系统运维管理控制台自动化任务 > 自定义任务模板,单击创建模板。

  2. 选择构建软件包,上传到OSS(git代码源)示例模板,单击下一步image

  3. 单击全部收起,可以看到该模板的步骤。image

  4. 单击全部展开,开始填写模板。

    1. 第一个步骤是指定您的代码源。为下一步骤拉取代码。生成一个临时链接。

      1. 本示例以gitee为代码源,在填写所有者、组织、仓库前,请先完成授权。image

      2. 授权后选择您想要拉取的代码仓库(如果您之前已经fork示例代码,您只需下拉仓库,会自动展示您账号下所有仓库,请选择fork的示例代码仓库),后续执行模板时,OOS会生成该仓库的临时链接,并作为任务输出authorizedUrl,给后续任务使用。image

    2. 第二个步骤是构建软件包(如JAR包)并上传到OSS。

      1. 首先您需要指定代码源,本示例是Git,代码源链接引用了上一个任务的输出authorizedUrl。image

        说明

        OOS会自动帮您拉取代码到一个特定文件夹,如下图,后续所有命令都以该文件夹为工作路径。image

      2. 接下来您需要选择构建的ECS,您可以选择在已有ECS构建,或者临时开启一台ECS,构建完成后自动释放。

        说明

        注意,临时ECS会以按量付费的方式产生费用。

        image

      3. 另外,您需要提供构建信息。首先是构建命令脚本,该示例的构建脚本里,先安装了Maven,然后打JAR包,JAR包会放在target目录下(本文是在Alibaba Cloud Linux 3.2104操作系统下以Java应用程序为例,构建脚本您可按需换成适合自己项目的,这里仅是提供一个示例)。image您还需要提供打包路径和构建物名称,比如当前示例,我们指定打包路径为target/,OOS会将该文件夹压缩为一个.tgz文件,文件名就是您指定的构建物名称。

      4. 最后,您可指定想要上传到的OSS bucket和bucket里的目录。image该任务会将bucketName(OSS bucket的名称)和objectName(构建物在bucket内的完整路径,目录+构建物名称)作为输出,给后续任务使用。后续任务可直接引用这些输出,不用重新填写。

    3. 第三个步骤是批量在多台ECS上部署。

      1. 首先,选择要部署到的ECS,这里您可以选择多个ECS批量部署。image

      2. 您还需提供构建物所在OSS的信息,Bucket和Object名称我们可以引用上一步的输出,无需重复填写。您还需要指定下载到的路径,这里默认下载到/home/admin/app/image

      3. 最后,您可以给出部署脚本。对于当前示例,先把.tgz压缩包解压到指定路径,然后使用java -jar命令运行我们打的JAR包,并指定端口为8080。image您还可以选择任务的并发控制参数,控制批量部署到多台ECS的并发速率。

      4. 填写完毕,单击创建模板,完成创建。

执行模板

  1. 自定义任务模板页面找到刚才创建的模板,单击创建执行,即可执行该模板。无需配置参数,单击下一步:确定imageimage

  2. 等待执行成功后,请去往ECS控制台,找到您选择的ECS实例,远程连接进入ECS。image

  3. 执行以下命令。

    curl http://localhost:8080/hello

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

后续使用

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