Serverless CI/CD实践案例

本文涉及的产品
Serverless 应用引擎免费试用套餐包,4320000 CU,有效期3个月
函数计算FC,每月15万CU 3个月
简介: CI/CD 是一种通过在应用开发阶段引入自动化来频繁向客户交付应用的方法。CI/CD 的核心概念是持续集成、持续交付和持续部署。作为一个面向开发和运营团队的解决方案,CI/CD 主要针对在集成新代码时所引发的问题。具体而言,CI/CD 可让持续自动化和持续监控贯穿于应用的整个生命周期(从集成和测试阶段,到交付和部署)。这些关联的事务通常被统称为“CI/CD 管道”,由开发和运维团队以敏捷方式协同支持。

前言

CI/CD 是一种通过在应用开发阶段引入自动化来频繁向客户交付应用的方法。CI/CD 的核心概念是持续集成、持续交付和持续部署。作为一个面向开发和运营团队的解决方案,CI/CD 主要针对在集成新代码时所引发的问题。具体而言,CI/CD 可让持续自动化和持续监控贯穿于应用的整个生命周期(从集成和测试阶段,到交付和部署)。这些关联的事务通常被统称为“CI/CD 管道”,由开发和运维团队以敏捷方式协同支持。


Serverless架构在很多时候,会有很多函数组成完整的服务,这也给函数在后期的维护带来了极大的不便,此时CI/CD就显得尤为重要。更加科学、安全的持续集成和部署过程,不仅仅会让我们整体的业务流程更加规范,也会在一定程度上,降低人为操作,手工集成部署所产生错误的概率,同时也会大规模降低运维人员的工作负担。所以在Serverless架构下,CI/CD的流程就显得非常重要。本文将会以Serverless Devs开发者工具为例,通过Github Action实现函数计算相关服务的CI/CD功能。

CI/CD实践

如果需要通过CI/CD,将Serverless项目持续集成和部署到对应的云厂商上,需要我们有一个合适的工具来做这个事情。此时我们可以根据云厂商,选择不同的开发者工具,当然我们也可以选择一些常见的开源Serverless开发者工具来做这个事情,例如Serverless Devs,Serverless Framework等。本文将会以Serverless Devs为例,将Github上的仓库,通过Github Action部署函数到阿里云函数计算平台。

首先我们需要了解Github Action,GitHub Actions 是 GitHub 2018年10月推出的持续集成服务,通过Github Action和Serverless Devs组合,不仅可以实现持续集成服务,在很多时候也可以实现部署操作。

通过Github Action为例,我们可以通过Yaml格式,进行相对应的流程部署:

  • Checkout
  • 初始化 Serverless Devs
  • 配置阿里云密钥信息
  • 进行一些CI操作(可选)
  • 进行一些CD操作(部署到线上)

例如,我们的Yaml可以是:

name: serverless CI/CD


on:

 push:

   branches: [master]


jobs:

 serverless-cicd-job:

   name: Serverless cicd

   runs-on: ubuntu-latest

   steps:

   - name: Checkout

     uses: actions/checkout@v2

   - name: Initializing Serverless-Devs

     uses: Serverless-Devs/serverless-devs-initialization-action@main

     with:

       provider: alibaba

       AccessKeyID: ${{ secrets.ALIYUN_ACCESS_KEY_ID }}

       AccessKeySecret: ${{ secrets.ALIYUN_ACCESS_KEY_SECRET }}

       AccountID: ${{ secrets.ALIYUN_ACCOUNT_ID }}

   - name: Config

     run: sudo --preserve-env s config add -p alibaba --AccessKeyID ${{ secrets.ALIYUN_ACCESS_KEY_ID }} --AccessKeySecret ${{ secrets.ALIYUN_ACCESS_KEY_SECRET }} --AccountID ${{ secrets.ALIYUN_ACCOUNT_ID }}

   - name: Deploying

     run: sudo --preserve-env s deploy

这个流程中,主要是当有代码push到master分支后进行:

  1. Checkout操作
  2. 通过Serverless-Devs/serverless-devs-initialization-action@main初始化Serverless Devs
  3. 通过s config add指令进行密钥配置
  4. 通过s deploy进行项目部署(CD)

我们可以创建仓库:

然后配置密钥信息,可以将我们的密钥信息配置到Settings中的Secrets下:

主要需要配置我们Yaml中的几个变量:

secrets.ALIYUN_ACCESS_KEY_ID:阿里云密钥ACCESS_KEY_ID

secrets.ALIYUN_ACCESS_KEY_SECRET:阿里云密钥ACCESS_KEY_SECRET

secrets.ALIYUN_ACCOUNT_ID:阿里云用户ID

配置过程如下:

配置结果如下:

配置完成之后,我们可以在本地修改一下代码内容,修改之后,可以提交到线上:

部署到线上之后,我们可以看到Serverless CI/CD流程已经被触发:

稍等片刻,我们可以看到已经完成了整个流程,并且可以在日志中查看到部署结果:

可以看到我们的函数已经被更新到了线上。至此,我们完成了Serverless CI/CD的案例。

总结

如果想非常简单,快速,方便的完成Serverless应用的CI/CD的建设,一个完善的开发者工具是必不可少的,Serverless Devs是一款多云的开发者工具,可以通过该工具非常简单的、快速的、方便的部署AWS、阿里云、腾讯云等多个云厂商的函数计算等相关服务,同时Serverless Devs也是一个开源项目,用户可以随时随地的贡献组件,应用以满足更多场景的诉求。

通过Serverless Devs与Github Action的结合,我们可以用极低的成本,完成Serverless项目的CI/CD建设,不仅仅可以部署函数计算,还可以部署对象存储,API网关等多种云服务。希望读者通过对本章内容的阅读,可以对Serverless CI/CD有一个初步的认识,并且可以快速的在自己的项目中,应用起来,进入到“更安全、更科学的”应用集成、部署的实战中

相关实践学习
【文生图】一键部署Stable Diffusion基于函数计算
本实验教你如何在函数计算FC上从零开始部署Stable Diffusion来进行AI绘画创作,开启AIGC盲盒。函数计算提供一定的免费额度供用户使用。本实验答疑钉钉群:29290019867
建立 Serverless 思维
本课程包括: Serverless 应用引擎的概念, 为开发者带来的实际价值, 以及让您了解常见的 Serverless 架构模式
目录
相关文章
|
2月前
|
运维 Kubernetes 前端开发
拥抱Knative, 合思加速Serverless化演进实践
合思信息基于阿里云容器服务Knative, 实现Serverless化演进的最佳实践。
拥抱Knative, 合思加速Serverless化演进实践
|
3月前
|
弹性计算 关系型数据库 Serverless
函数计算驱动多媒体文件处理:高效、稳定与成本优化实践
本次测评的解决方案《告别资源瓶颈,函数计算驱动多媒体文件处理》展示了如何利用阿里云函数计算高效处理多媒体文件。文档结构清晰、内容详实,适合新客户参考。方案提供了一键部署与手动部署两种方式,前者简便快捷,后者灵活性高但步骤较多。通过部署,用户可体验到基于函数计算的文件处理服务,显著提升处理效率和系统稳定性。此外,测评还对比了应用内处理文件与函数计算处理文件的不同,突出了函数计算在资源管理和成本控制方面的优势。
22716 19
|
3月前
|
运维 Kubernetes Serverless
Serverless Argo Workflows荣获信通院标杆实践案例,引领大规模离线任务处理新方法
阿里云容器服务Serverless Argo Workflows大规模离线计算工作流平台荣获2024信通院Serveless实践标杆案例。本文介绍其应用场景、平台特性以及领域实践。
|
4月前
|
分布式计算 Java Serverless
EMR Serverless Spark 实践教程 | 通过 spark-submit 命令行工具提交 Spark 任务
本文以 ECS 连接 EMR Serverless Spark 为例,介绍如何通过 EMR Serverless spark-submit 命令行工具进行 Spark 任务开发。
400 7
EMR Serverless Spark 实践教程 | 通过 spark-submit 命令行工具提交 Spark 任务
|
3月前
|
存储 前端开发 Serverless
Serverless 魔法之旅:如何用 Funcraft、OSS 和 ROS 打造超级CI/CD流水线!
【8月更文挑战第8天】在现代软件开发中,CI/CD对于提升效率与代码质量至关重要。本文介绍如何运用阿里云的Serverless服务——Funcraft、OSS及ROS构建完整的CI/CD流程。首先配置Funcraft实现代码自动化构建与部署;接着利用OSS管理静态文件,确保网站内容正确加载;最后借助ROS自动化资源创建与管理,实现代码自动部署。通过整合这些服务,不仅加速了开发进程,还保证了代码质量和部署一致性,充分发挥Serverless架构的优势。
61 5
|
3月前
|
前端开发 大数据 数据库
🔥大数据洪流下的决战:JSF 表格组件如何做到毫秒级响应?揭秘背后的性能魔法!💪
【8月更文挑战第31天】在 Web 应用中,表格组件常用于展示和操作数据,但在大数据量下性能会成瓶颈。本文介绍在 JavaServer Faces(JSF)中优化表格组件的方法,包括数据处理、分页及懒加载等技术。通过后端分页或懒加载按需加载数据,减少不必要的数据加载和优化数据库查询,并利用缓存机制减少数据库访问次数,从而提高表格组件的响应速度和整体性能。掌握这些最佳实践对开发高性能 JSF 应用至关重要。
68 0
|
3月前
|
分布式计算 Serverless 数据处理
EMR Serverless Spark 实践教程 | 通过 Apache Airflow 使用 Livy Operator 提交任务
Apache Airflow 是一个强大的工作流程自动化和调度工具,它允许开发者编排、计划和监控数据管道的执行。EMR Serverless Spark 为处理大规模数据处理任务提供了一个无服务器计算环境。本文为您介绍如何通过 Apache Airflow 的 Livy Operator 实现自动化地向 EMR Serverless Spark 提交任务,以实现任务调度和执行的自动化,帮助您更有效地管理数据处理任务。
203 0
|
4月前
|
分布式计算 Hadoop Serverless
数据处理的艺术:EMR Serverless Spark实践及应用体验
阿里云EMR Serverless Spark是基于Spark的全托管大数据处理平台,融合云原生弹性与自动化,提供任务全生命周期管理,让数据工程师专注数据分析。它内置高性能Fusion Engine,性能比开源Spark提升200%,并有成本优化的Celeborn服务。支持计算存储分离、OSS-HDFS兼容、DLF元数据管理,实现一站式的开发体验和Serverless资源管理。适用于数据报表、科学项目等场景,简化开发与运维流程。用户可通过阿里云控制台快速配置和体验EMR Serverless Spark服务。
|
运维 Cloud Native 关系型数据库
活动回顾|阿里云 Serverless 技术实战与创新成都站回放&PPT下载
7月29日“阿里云 Serverless 技术实战与创新”成都站圆满落幕。可免费下载成都站|阿里云 Serverless 沙龙演讲 PPT。
|
人工智能 弹性计算 运维
阿里云宣布 Serverless 应用引擎 SAE2.0 将公测上线,多款产品全新升级
阿里云宣布 Serverless 应用引擎 SAE2.0 将公测上线,多款产品全新升级
70430 53

热门文章

最新文章

相关产品

  • 函数计算