开发者学堂课程【Serverless 技术进阶:【音频】Serverless Devs与CI/CD实战】学习笔记,与课程紧密联系,让用户快速学习知识。
课程地址:https://developer.aliyun.com/learning/course/995/detail/15050
【音频】Serverless Devs与CI/CD实战
内容介绍:
一、与CI/CD平台/工具集成
二、最佳实践案例
一、与CI/CD平台/工具集成
CI/CD是一种通过在应用开发阶段引入自动化来频繁向客户交付应用的方法。
CI/CD 的核心概念是持续集成、持续交付和持续部署。作为一个面向开发和运营团队的解决方案,CI/CD主要针对在集成新代码时所引发的问题。
具体而言,CI/CD可让持续自动化和持续监控(从集成和测试阶段,到交付和部署)贯穿于应用的整个生命周期。这些关联的事务通常被统称为“CI/CD管道”,由开发和运维团队以敏捷方式协同支持。
在Serverless架构下,通常会有很多函数构成一个完整的功能或者服务,Serverless架构下,这种比较细粒度的功能开发往往会给后期的项目维护带来了极大的不便,包括不限于函数管理的不便、项目的构建、发布层面的不便等。
此时在Serverless 架构中,CI/CD 就显得尤为重要。更加科学、安全的持续集成和部署过程,不仅仅会让整体的业务流程更加规范,也会在一定程度上,降低人为操作,手工集成部署所产生错误的概率,同时也会大规模降低运维人员的工作负担。
如果想要通过CI/CD平台或者工具,科学且方便的进行Serverless应用的持续集成与交付部署,那么通常情况下是需要借助相对应的开发者工具,例如著名的开源项目Serverless Framework,Serverless Devs等等。整体的流程通常是:下载工具——配置密钥——应用构建——项目部署
1.与Github Action的集成
在Github Action的 Yaml文件中,可以增加Serverless Devs的相关下载、配置以及命令执行相关能力。
例如,在仓库中可以创建该文件.github/workflows/publish.yml,文件内容可参考本课文档(文本第2页),内容包括如何执行某些命令,例如通过deploy进行项目的部署,或者build等命令进行构建等。
关于密钥的配置:密钥信息的获取是通过${{secrets.*}}进行获取的,所以此时,需要将所需要的密钥和对应的Key配置到Github Secrets 中,例如在上面的案例中,需要AccessKeyID, AccessKeySecret等密钥的 Key。
2.与Gitee Go的集成
在开启 Gitee Go的服务之后,在流水线的 Yaml文件中,可以增加ServerlessDevs的相关下载、配置以及命令执行相关能力。
例如,在仓库中可以创建该文件.github/workflows/publish.yml,
文件内容可参考本课文档(文本4-5页),内容包括如何执行某些命令,例如通过deploy进行项目的部署,或者build等命令进行构建等。
关于密钥的配置:密钥信息的获取是通过$*进行获取的,所以此时,需要将所需要的密钥和对应的Key配置到Gitee 的环境变量管理即可,例如在上面的案例中,需要ACCESSKEYID, ACCESSKEYSECRET等密钥的Key。
3.与Jenkins的集成
在准备将Serverless Devs集成到Jenkins之前,需要先基于Jenkins官网安装并运行Jenkins。
本地启动Jenkins后,通过浏览器进入链接http://localhost:8080配置完成基础设置后,需要新增Credentials设置, 此时可以根据需要,增加密钥信息,以阿里云为例,新增两个全局凭据:阿里云 accessKeyId、阿里云accessKeySecret。
此时,可以对自身的Serverless Devs项目进行完善:
①创建文件Jenkinsfile,
主要的内容包括两个部分:
A:environment部分,主要是根据上面步骤配置的密钥信息,进行密钥的处理;
B:stages部分,这里面会有一个部分是sh 'scripts/setup.sh',即运行scripts/setup.sh文件,进行相关内容的准备和配置。
②准备scripts/setup.sh文件,只需要在项目下,创建该文件即可
在该文件中,主要包括了几个部分:
A:下载并安装Serverless Devs开发者工具;
B:配置密钥信息等内容
C:执行某些命令,例如通过deploy进行项目的部署,或者build等命令进行构建等
D:完成密钥配置之后,可以创建一个Jenkins流水线,该流水线的源是目标Github 地址。接下来,就可以开始运行Jenkins 流水线,运行结束后,就可以得到相关的内容结果。
4.与云效的集成
在云效中,可以直接选择Serverless Devs开发者工具,并在自定义命令中,输入以下内容即可。
这里主要包括三个部分:
①通过NPM安装最新版本的Serverless Devs开发者工具(虽然云效中已经拥有了相关版本的Serverless Devs,但是实际上,这个版本可能比较老旧,所以可以通过该命令安装最新版本);
②通过config命令进行密钥等信息的配置;比如s deploy
③执行某些命令,例如通过deploy进行项目的部署,或者build等命令进行构建等;
二、最佳实践案例
第一个案例是Custom Container的CI/CD最佳实践
Serverless Devs开发者工具天然对自动化流程有看比较亲密的支持,所以用Serverless Devs可以非常简单的实现项目持续发布的流程。
第二个案例是基于Gitee Go的函数代码更新与版本发布案例,包括单纯更新函数代码和进行版本发布。
这两个案例完整呈现了实验准备流程、项目测试、案例总结以及一些注意事项,可自行查看本课文档(文本10-26页)。