部署本地私有代码到阿里云应用管理

简介: 对于用户不愿意托管到云上的私有代码,本文提出一种方案,结合云下持续集成和云上持续部署,支持将线下构建出的部署物持续部署到应用分组环境里。

应用管理是面向开发和运维人员的应用管理平台,以应用视角集成资源管理、运维、发布、监控、安全等功能为一体。在应用管理您可以按照云上最佳实践,充分发挥云平台的优势,提高效率、稳定性、安全性。

需求背景

应用管理集成了云效的流水线发布能力,用户可以配置CICD流水线,完成从源代码的编译、测试到部署到应用分组的过程。当前的流水线模板都是从源代码编译开始,要求用户允许云效访问源代码。



用户A计划在应用管理平台部署用户B提供的软件。但B公司的数据安全要求不允许将代码托管到云上,但可以提供编译后的软件包。对于这种场景,如果实现持续部署呢?本文提出一种解决方案,结合云下持续集成和云上持续部署,具有一定灵活性。

总体架构

线下CI线上CD.drawio.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。

SCR-20231218-ntog.png



以Java项目为例,可以选择Java构建部署的模板

SCR-20231218-ntqt.png



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

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

image.png

image.png





在ECS应用部署步骤里,部署脚本中解压包后,启动应用。图中的脚本仅做演示,应替换成自己的应用启停脚本。

image.png



  1. 执行流水线。会要求提供变量值,这里我们提供了部署物版本号。

image.png

image.png







可以看到成功执行了。

image.png





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

image.png




总结

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

相关实践学习
2分钟自动化部署人生模拟器
本场景将带你借助云效流水线Flow实现人生模拟器小游戏的自动化部署
SVN版本控制系统
SVN是现在软件开发之中的主流软件版本控制工具,在工作之中利用SVN可以有效的解决多人开发的代码管理问题,本课程将为读者讲解SVN服务器的配置以及基于MyEclipse的SVN客户端插件的配置与使用,并且在讲解之中着重讲解了冲突的产生于解决。
相关文章
|
1月前
|
缓存 前端开发 JavaScript
|
2月前
|
敏捷开发 测试技术 持续交付
阿里云云效产品使用合集之资源池中的集群一直加载中,是什么导致
云效作为一款全面覆盖研发全生命周期管理的云端效能平台,致力于帮助企业实现高效协同、敏捷研发和持续交付。本合集收集整理了用户在使用云效过程中遇到的常见问题,问题涉及项目创建与管理、需求规划与迭代、代码托管与版本控制、自动化测试、持续集成与发布等方面。
|
2月前
|
缓存 资源调度 Kubernetes
阿里云云效产品使用合集之如何将两个独立的代码仓库构建并部署到同一个容器内
云效作为一款全面覆盖研发全生命周期管理的云端效能平台,致力于帮助企业实现高效协同、敏捷研发和持续交付。本合集收集整理了用户在使用云效过程中遇到的常见问题,问题涉及项目创建与管理、需求规划与迭代、代码托管与版本控制、自动化测试、持续集成与发布等方面。
|
3月前
|
缓存 Kubernetes Serverless
阿里云云效操作报错合集之AppStack资源池添加外部k8s集群时报错,该如何解决
本合集将整理呈现用户在使用过程中遇到的报错及其对应的解决办法,包括但不限于账户权限设置错误、项目配置不正确、代码提交冲突、构建任务执行失败、测试环境异常、需求流转阻塞等问题。阿里云云效是一站式企业级研发协同和DevOps平台,为企业提供从需求规划、开发、测试、发布到运维、运营的全流程端到端服务和工具支撑,致力于提升企业的研发效能和创新能力。
|
3月前
|
Linux 持续交付 开发工具
阿里云云效产品使用合集之如何在不同的步骤之间共享和使用变量
云效作为一款全面覆盖研发全生命周期管理的云端效能平台,致力于帮助企业实现高效协同、敏捷研发和持续交付。本合集收集整理了用户在使用云效过程中遇到的常见问题,问题涉及项目创建与管理、需求规划与迭代、代码托管与版本控制、自动化测试、持续集成与发布等方面。
|
5月前
|
弹性计算 运维 Devops
云效产品使用报错问题之私有构建集群总是申请环境失败如何解决
本合集将整理呈现用户在使用过程中遇到的报错及其对应的解决办法,包括但不限于账户权限设置错误、项目配置不正确、代码提交冲突、构建任务执行失败、测试环境异常、需求流转阻塞等问题。阿里云云效是一站式企业级研发协同和DevOps平台,为企业提供从需求规划、开发、测试、发布到运维、运营的全流程端到端服务和工具支撑,致力于提升企业的研发效能和创新能力。
云效产品使用报错问题之私有构建集群总是申请环境失败如何解决
|
5月前
|
敏捷开发 Java 测试技术
云效产品使用常见问题之自定义环境构建从云下私有镜像库拉取镜像如何解决
云效作为一款全面覆盖研发全生命周期管理的云端效能平台,致力于帮助企业实现高效协同、敏捷研发和持续交付。本合集收集整理了用户在使用云效过程中遇到的常见问题,问题涉及项目创建与管理、需求规划与迭代、代码托管与版本控制、自动化测试、持续集成与发布等方面。
|
5月前
|
Docker 容器
项目基础服务部署
项目基础服务部署
191 1
|
5月前
|
敏捷开发 存储 小程序
云效产品使用常见问题之私有构建机打完后自动把镜像删除如何解决
云效作为一款全面覆盖研发全生命周期管理的云端效能平台,致力于帮助企业实现高效协同、敏捷研发和持续交付。本合集收集整理了用户在使用云效过程中遇到的常见问题,问题涉及项目创建与管理、需求规划与迭代、代码托管与版本控制、自动化测试、持续集成与发布等方面。
|
存储 Java 数据安全/隐私保护
有没有私有部署的进销存系统?
随着企业对数据安全和隐私保护的关注度不断提高,越来越多的企业开始考虑使用私有部署的进销存系统。下面我们介绍一下这种系统的优缺点。
235 0
有没有私有部署的进销存系统?