文档

部署私有代码到应用管理

应用管理集成了云效的流水线发布能力,用户可以配置CICD流水线,完成从源代码的编译、测试到部署到应用分组的过程。当前的流水线模板都是从源代码编译开始,要求用户允许云效访问源代码。用户A计划在应用管理平台部署用户B提供的软件。但B公司的数据安全要求不允许将代码托管到云上,但可以提供编译后的软件包,本文提供一种解决方案,实现云下持续集成和云上持续部署,具有一定灵活性。

总体架构

image.png

主要步骤:

  1. 用户A需要创建好一个OSS bucket用来存储部署物,并创建一个最小权限的AK给用户B使用。

  2. 用户B需要在已有的构建工作流中增加一个步骤,将构建出的部署物(比如jar包、war包、压缩包等等)上传到用户A的阿里云OSS bucket。构建出的部署物文件名称要能够体现出部署物版本(比如加上版本号、代码分支信息、commit id等等)

  3. 用户A在应用管理->发布管理里,创建一条发布流水线,将源代码编译的步骤去掉,改成从OSS下载构建好的部署物。

  4. 如果用户A希望手工部署,可以在应用管理->发布管理中手工启动流水线。

  5. 如果用户A、用户B希望CI和CD整体自动化执行,可以在构建工作流加上一步,通过调用云效流水线的web hook自动触发执行部署流水线。

详细方案

构建工作流部分需要根据不同的构建系统进行定制。以Jenkins为例,用户需要首先在Jenkins机器上安装oosutil并配置好oosutil的访问凭证(AK等)。然后在pipeline在构建结束后增加一步,执行oosutil将部署物上传到oss bucket上。本文主要详述应用管理平台上的发布配置。

  1. 创建云效流水线,在发布管理里新建流水线。前提是已经绑定了云效企业和授权云效发布ECS。image.png以Java项目为例,可以选择Java构建部署的模板image.png

  1. 在流水线编辑页面,修改流水线步骤。

    1. 将Java构建任务删除,增加OSS下载任务。从保存部署物的bucket下载指定文件。文件路径可以带变量,从而可以部署指定版本的部署物。构建物上传部分不变。image.pngimage.png

    2. 在ECS应用部署步骤里,部署脚本中解压包后,启动应用。注意图中的脚本仅做演示。image.png

  2. 执行流水线时,会要求提供变量值,这里我们提供版本号。image.pngimage.pngimage.png

  1. 如果想通过线下的工作流触发云效流水线,可以启用云效流水线的Webhook触发,通过webhook即可触发流水线。详情参考文档Webhook 触发流水线image.png

总结

通过这种方式,实现了云下CI和云上CD的解耦,既可以分开运行,也可以结合在一起。通过使用云效部署应用,可以充分利用到应用管理的动态分组和弹性伸缩的能力,比如分组中新增或者删除了ECS实例,不会影响下一次发布。

  • 本页导读 (0)
文档反馈