2022-01-12 10:39:57
本文主要分成三个部分:
构建部署系统的原理,以及语音构建部署的发展
云开发平台构建部署实现的方式
云开发平台的构建部署演示
一、构建部署系统
构建系统
一般普通的公司都会有自己的构建系统。如果作为一个小开发者的话,那么我们构建的时候可能就是在本地构建一下打包,然后变成了一个压缩包或者一个构建物,最后就直接把它上传到网站就实现了。对于一个公司来说这样是不够的,肯定需要有自己的一个构建系统才可以。
构建系统的原理跟本机是一样的,都需要一台构建机器把代码拉回来,然后执行一些你预设好的build脚本,最后把这个压缩包打包、存储起来。或者这个过程也可以不存储,直接发布到系统上也是可以的。
从这个过程我们可以看到这里就存在一个构建机器的问题,构建器的这种集群成本,对于一个公司构建来说,它本身也是一个比较高的成本,需要一个构建集群来完成这件事情。
部署系统
基本上原理也跟构建差不太多,对于这种传统的多机器进行部署的时候,我们会拿这个机器命令行权限的宿主机把压缩包拉回来,发布到各个机器上去,再执行一个脚本,让它一部分一部分的进行重启,最终也可以实现这件事情。可以看到这个宿主机也是需要大家来做的,如果公司自己做的话,还要考虑权限、各个方面的设计和成本的问题,毕竟发布系统的成本也是比较高的。
随着用户和公司渐渐融化,云也开始在各个云场上推出了自己的在线构建和部署。基础原理其实是差不太多,都是云厂商维护自己的构建集群,各个用户可以定义自己的构建过程的一个流程,最后把东西发布到各自云的资源上去。
我们可以看到AWS做了一个叫做CodePipeline+CodeBuild+CodeDeploy,这个看起来就比较复杂,它其实是实现了一个部署,一个构建系统,一个部署系统。
那么这个CodePipeline是干什么的?它其实是一个自定义任务系统,就是类似于你可以定义第一步、第二步,第三步,第四步干什么。它中间你可以加代码扫描、安全检查、人工卡点等功能,最终构建部署的时候调用这两个系统。其实它是拆分开来的,而其他厂商是合在一起的。
阿里云的叫做云效Flow。从上图云效Flow的界面我们可以看到第一步是代码源,你可以添加一个代码源。代码存在那里,它支持阿里云自建的代码仓库、支持开源的代码仓库、也支持自建的一些仓库;中间其实就可以不断的添加任务。每一个任务其实就是一个步骤,这个步骤你可以构建,也可以部署,也可以是其他的。构建其实执行的是一个构建命令,这个构建集群就是刚才讲的那个分配机器的那个集群,最终它可以实现文件上传到OSS上去,也可以直接触发下一步的部署。
二、云开发平台构建部署实现的方式
我们使用了云效的构建,但并没有使用云效的部署,原因是因为云开发平台是一个代码及服务的平台,就是你只提供代码,具体还是要云资源,那这个云资源是需要创建的,那我们知道Severless都是动态创建的。对于Flow来说,它没有创建这个能力,所以最终我们选用了ROS这种方式来做这个云资源的创建和最终的部署。
最终构建出来的打包物可以分成两种类型:
压缩包类型:存储在OSS对象存储、文件存储的服务里。
镜像类型:存储在阿里云的容器镜像服务存储里。
我们具体来看一下构建包类型的区别。压缩包类型有支持语言、支持计算服务、构建脚本、构建物仓库的区别,那我们可以知道这个sae就是微服务了,然后就是那个docker了k八s了,那可以看得到他们肯定只支持这个这个image的这种这种方式。那么对于函数计算来说呢,它既支持这个压缩包类型,也支持镜像类型,那镜像类型它其实实现的原理跟a和s差不多的,最最后帮你启动一个容器,然后来来进行这个调用。那么可以构构建的脚本,构建的工具呢,我们可以看到这种容器镜像呢,这肯定就是k的标准的这个fill,那你可以自定义各种各样的命令在docker file里面,那么构建这种压缩包类型的呢,我们其实定义了一个shell的这种标准,你可以我们默认会执行这个最终把构建物上传到两个不同的方向上去,那么这个容器镜像型的就不多介绍了,因为docker打包这个肯定大家学过肯定都是知道的。6‘40
压缩包类型
因为除了这个最普通的我们定的标准build.sh会执行,那最终构建物你需要在这个根目录下就有一个code.zip,我们才认为你build成功了。如果你需要自定义脚本的话,就需要在根目录下放一个build.sh,最终打包出来code.zip我们就接受。后两种其实是为了兼容以前的一些应用的存在,那么比如说java,那么只要根目录存在的文件,我们就会默认执行的这个命令,那么就不会执行的点了,然后呢它的构建物其实是这个铭文的那个标准铭文的在下面进行的这个炸包的一个打包那其实如果你想自定一些步骤,你可以直接用min的这个过程来去执行自定义的一些方案,那像这个made那其实是js,阿里云这边提供了一个框架,全全全方位的一个框架,那么它有它自己的标准,它的build的,有自己的工具,那么所以我们为了让他也做了一个也做了一些特殊特殊的定制,
上传到构建物仓库,可以看到压缩包类型就是OSS,IMAGE类型就是阿里云的容器镜像服务。它上传的Oss Bucket、最终的文件路径和镜像类型的路径都罗列在上图了。
部署我们用的是ROS。在部署的时候,我们在流水线构建完成之后,把构建物上传到Oss或者容器镜像服务之后,就会创建ROS把部署所需要的云资源生产出来,最后再把这个压缩包拉回来进行启动。
我们可以从上图中看到资源站的id,我们经过跟云开平台的app id进行了一个映射,方便大家进行查找。
三、云开发平台的构建部署演示
最后阿里云开发平台为了让用户更好的体验该平台特此准备了10元无门槛代金券:
https://workbench.aliyun.com/activities/coupon