专栏首页Tencent Serverless 官方专栏云函数场景下的DevOps实践--CODING企业版

云函数场景下的DevOps实践--CODING企业版

云函数提供Serverless本地开发工具,支持本地调试、代码打包、函数发布等功能。CODING 企业版是专为企业打造的软件开发协作平台,提供敏捷开发、代码托管、持续集成等服务。当前CODING企业版平台默认支持代码仓库托管、CI/CD自动化pipline。

本文将介绍如何基于CODING的代码托管、CI /CD pipline功能,结合Serverless本地开发工具的功能,提供云函数的DevOps 能力,完成DevOps 检出、构建、测试、部署等持续集成的自动化流程。

代码托管

>>>>

初始化本地函数

云函数scf init 命令可以进行项目初始化操作。基于Git仓库模板项目可以快速创建出一个简单的模板项目,进行进一步的开发。

>>>>

本地调试和本地调用

云函数通过 native invoke 子命令完成本地触发运行。当前支持nodejs和python语言开发的云函数在本地进行调试和调用。

>>>>

将本地生成的函数推送到CODING代码仓库

CODING企业版提供用户代码托管的平台支持Git代码仓库,其控制台支持代码浏览、分支管理、发布和标签管理等功能。

  • 创建项目以及代码仓库

CODING中一个项目对应一个 Git代码仓库,创建 Git 仓库前需要先创建项目,项目地址即是Git 仓库的地址。项目地址分为 HTTPS 和 SSH 两种方式。创建项目时可以指定代码模板来创建。

  • 管理项目代码仓库

CODING创建的Git仓库项目可以在本地使用Git工具做相关分支、标签等管理。可以在CODING控制台做版本对比和合并的相关操作。

  • 提交初始化项目到CODING对应的代码仓

使用scf cli init命令行初始化的项目,包括项目的模板配置文件template.yaml,以及初始化的云函数的代码,这里只需将云函数的代码推送到CODING创建的仓库中,提交代码之前,需要将项目的模板配置文件template.yaml复制到函数中。

Serverless本地开发工具的本地调试、打包部署等命令依赖模板配置文件template.yaml。将该配置文件放在函数目录内上传到CODING的代码仓库,即可在持续集成的线上环境使用Serverless本地开发工具。

配置代码仓库CI/CD pipline

CODING 持续集成基于Jenkins 提供服务和能力,并做了大量优化工作。配置持续集成所用的脚本为Jenkinsfile。Jenkinsfile 定义了持续集成中的工作流水线(pipeline),实现对步骤的流式化封装和管理。流水线可以顺序执行,也可以并行执行,利用该pipeline可以自动化完成该项目的DevOps持续集成、持续部署的流程。

每一次的目标代码变动,都会触发CODING 持续集成按照 Jenkinsfile 里的流水线自动化执行一次。

>>>>

创建持续集成的任务

在持续集成菜单配置持续集成的触发机制,默认配置代码更新时自动执行。也可以配置推送新标签,推送新分支等触发机制。

>>>>

创建持续集成的pipline

  • 定义持续集成的流程

在CODING控制台配置持续集成的详细过程,也是在编排流水线(pipeline)。默认使用的时的是“图形化编辑器”,提供了可视化、易上手的编排工具。左边展示的是流水线,按照简易模板分成了“开始”、“检出”、“构建”、“测试”以及“部署”共 5 个阶段。流水线上每一个阶段具体的执行命令都可以自定义,选中某个阶段,可以对选中的阶段进行更详细的步骤配置。本实践自定义jenkins file的方式定义持续集成的流程。

  • 定义持续集成的pipline

定义持续集成的Jenkins pipline,依赖Serverless本地开发工具提供的本地代码运行、打包以及发布的能力。使用Serverless本地开发工具需要用户提供腾讯云认证的相关信息,将认证的相关信息通过pipline环境变量的方式提供。

  • Jenkins pipline配置文件

该自定义Jenkins pipline配置文件定义了检出、构建(安装依赖)、测试、部署这些DevOps持续集成流程,最终部署流程将代码压缩包部署到腾讯云函数服务。

1、检出

Checkout该Git仓库项目的代码。这里用户也可以自定义添加代码检查或者安全检查等流程。

2、构建

这里主要针对云函数场景,对nodejs或者python项目安装对应项目的安装依赖。其中,Nodejs项目可以使用npm安装包依赖;Python项目可以使用pip安装相关依赖包。针对go语言等编译性的语言,这里还可以完成编译等工作。

3、测试

项目中可以运行各个项目自己开发的单元测试或者集成测试任务。本实践主要针对云函数本地测试调用函数。

4、部署

云函数完成开发以及持续集成之后,需要将函数代码压缩包部署到云函数服务才能运行。本实践主要是使用 Serverless本地开发工具deploy命令将函数创建到云函数服务。后续Serverless本地开发工具添加了云函数版本发布的命令,这里可以集成云函数新版本的发布。

配置文件:

1.  pipeline {  
2.    agent any  
3.    stages {  
4.      stage('检出') {  
5.        steps {  
6.          sh 'ci-init'  
7.          checkout([$class: 'GitSCM', branches: [[name: env.GIT_BUILD_REF]], userRemoteConfigs: [[url: env.GIT_REPO_URL]]])  
8.        }  
9.      }  
10.    stage('构建') {  
11.      agent {  
12.        docker {  
13.          image 'nikolaik/python-nodejs:latest'  
14.          args '-v /root:/root'  
15.        }  
16.  
17.      }  
18.      steps {  
19.        echo '安装依赖'  
20.        dir(path: '/root/workspace') {  
21.          sh 'npm install'  
22.        }  
23.  
24.      }  
25.    }  
26.    stage('测试') {  
27.      agent {  
28.        docker {  
29.          image 'nikolaik/python-nodejs:latest'  
30.          args '-v /root:/root'  
31.        }  
32.  
33.      }  
34.      steps {  
35.        sh 'pip install scf'  
36.        sh 'scf --version'  
37.        dir(path: '/root/workspace') {  
38.          sh "scf configure set --region=${env.region} --appid=${env.appid} --secret-id ${env.secretid} --secret-key ${env.secretkey}"  
39.          sh 'scf native invoke --no-event'  
40.        }  
41.  
42.      }  
43.    }  
44.    stage('部署') {  
45.      agent {  
46.        docker {  
47.          image 'nikolaik/python-nodejs:latest'  
48.          args '-v /root:/root'  
49.        }  
50.  
51.      }  
52.      steps {  
53.        sh 'pip install scf'  
54.        sh 'scf --version'  
55.        dir(path: '/root/workspace') {  
56.          sh "scf configure set --region=${env.region} --appid=${env.appid} --secret-id ${env.secretid} --secret-key ${env.secretkey}"  
57.          sh 'scf package --template-file ./template.yaml'  
58.          sh 'scf deploy -f --template-file ./deploy.yaml'  
59.        }  
60.  
61.      }  
62.    }  
63.  }  
64.}
  • 持续集成运行状态

1、检出:显示了该项目代码检出的结果。

2、构建:本项目是Nodejs项目,此任务主要是使用npm工具安装项目依赖,本次构建安装依赖成功。

3、测试:项目测试是通过Serverless本地开发工具调用函数来测试函数是否能够成功的运行。

4、部署:本次构建部署是调用Serverless本地开发工具的deploy命令将函数部署到云函数中,后续部署可以考虑集成函数版本发布的能力。

总结

当前实践利用了CODING平台默认支持代码仓库托管、CI/CD自动化pipline的功能来实现云函数的DevOps流程。后续可以考虑结合CODING企业版制品库,构建函数压缩包到制品库,利用制品库的版本管理能力发布到云函数对应的版本。

文章参考

云函数:https://cloud.tencent.com/product/scf

CODING企业版:https://coding.net/

Serverless本地开发工具:

https://cloud.tencent.com/document/product/583/33447

Jenkins 语法:

https://jenkins.io/zh/doc/book/pipeline/syntax/

本文分享自微信公众号 - ServerlessCloudNative(ServerlessGo),作者:刘莹

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2019-07-17

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • CODING 再携手腾讯云 Serverless,让开发者跑步上云

    近年来,腾讯云持续在云原生领域打磨和完善产品矩阵,致力于为开发者上云提供更好的产品和服务。继前段时间 CODING CI 助力腾讯云 Serverless 全新...

    CODING
  • ​CODING 2.0 服务升级:一站式服务体系助力企业研发上云

    近日,CODING 在 KubeCon 2019 上海站上正式推出了 DevOps 的一站式解决方案: CODING 2.0,除了进行 产品 及 产品理念 的升...

    CODING
  • 云函数场景下的DevOps实践--蓝盾

    本文将展示使用云函数+ 蓝盾,开发部署一个"给用户发送提醒短信"的微服务。以这个非常简单的应用,探索一下ServerLess结合DevOps所能产生的合力,畅想...

    腾讯云serverless团队
  • CODING 携手优普丰,道器合璧打造敏捷最佳实践

    随着全球进入到信息化时代,越来越多的企业迫切地寻求新的商业模式,要求迭代、探索、不断加速创新以响应快速变化的市场。如今一系列新兴概念如敏捷开发、极限编程、微服务...

    CODING
  • 腾讯云 CIF 工程效能峰会顺利开幕,CODING 发布系列新产品

    2021 年 10 月 19 日,由腾讯云 CODING 主办的腾讯云 CIF 工程效能峰会在线上隆重开幕。本次峰会通过六大议题,带来了前沿的技术剖析与论点分享...

    CODING
  • 在腾讯云容器服务 TKE 中实践 DevOps

    jokey,腾讯云容器产品工程师,热衷于云原生领域。目前主要负责腾讯云TKE 的售中、售后的技术支持,根据客户需求输出合理技术方案与最佳实践。 概述 DevO...

    腾讯云原生
  • ​CODING 推出独立制品仓库 WePack,助力企业渐进式 DevOps 转型

    在刚刚开启的 QCon 全球软件开发大会上,CODING 宣布推出全新产品——企业级制品管理平台 WePack。WePack 是 CODING 基于腾讯多年制品...

    CODING
  • 腾讯云推出一站式 DevOps 解决方案 —— CODING DevOps

    在产业互联网的大背景下,如何将人工智能、大数据等前沿技术与实体产业相结合,推动传统企业转型升级,已经成为每一个企业不得不思考的问题。落后的软件研发能力已经拖慢了...

    CODING
  • ​「DevOps 转型与实践」沙龙回顾第二讲

    本期分享内容为 《平台化 DevOps—云计算与云原生模式下 DevOps 的建设实践》。目前,DevOps 越来越成为大家当前建设的热点,伴随着基础设施的转型...

    CODING
  • 「DevOps 转型与实践」沙龙回顾第二讲

    本期分享内容为《平台化 DevOps—云计算与云原生模式下 DevOps 的建设实践》。目前,DevOps 越来越成为大家当前建设的热点,伴随着基础设施的转型和...

    CODING
  • 张海龙:云时代企业研发人员需求与人才培养

    2020 年 1 月 7 日至 14 日,由工信部主办、传智播客院校邦承办的 “2020 年全国高校 IT 骨干教师寒假研修班” 在广州火热开班,CODING ...

    CODING
  • ​CODING DevOps 产品认证学习计划正式启动!

    为了帮助广大软件研发团队管理者、个人开发者等 IT 行业从业者掌握 DevOps 及敏捷开发的基本知识和概念,CODING 与腾讯云大学现携手推出 CODING...

    CODING
  • 腾讯云推出一站式 DevOps 解决方案 —— CODING DevOps

    ---- 在产业互联网的大背景下,如何将人工智能、大数据等前沿技术与实体产业相结合,推动传统企业转型升级,已经成为每一个企业不得不思考的问题。落后的软件研发能力...

    腾讯云serverless团队
  • 腾讯云 Serverless 再携手 CODING,让开发者跑步上云

    近年来,腾讯云持续在云原生领域打磨和完善产品矩阵,致力于为开发者上云提供更好的产品和服务。继前段时间 CODING CI 助力腾讯云 Serverless 全...

    腾讯云serverless团队
  • 赋能“数字金融”,CODING 再下数城

    在互联网飞速发展的时代浪潮下,众多传统行业纷纷走上了数字化转型之路,金融行业也不例外,金融科技、金融数字化成为风口之下的热门词汇,金融行业应用数字技术创新业务模...

    CODING
  • ​CODING 2.0 企业级持续交付解决方案

    今日,CODING 受合作伙伴腾讯云邀请参加 KubeCon、CloudNativeCon 和 Open Source Summit 在上海举办的 KubeCo...

    CODING
  • Techo 畅游指南:学习 DevOps,往这里走

    一年一度的 Techo Pack 即将在北京开幕~ 本次 Techo Pack 中有哪些与 DevOps 相关的演讲及活动呢?小编就给大家一一列出——

    CODING
  • Techo 畅游指南:学习 DevOps,往这里走

    一年一度的 Techo Pack 即将在北京开幕~ 本次 Techo Pack 中有哪些与 DevOps 相关的演讲及活动呢? 小编就给大家一一列出。Tips:...

    Bazinga
  • CODING DevOps 系列课程重磅来袭!

    在云时代的大背景下,市场环境瞬息万变,企业发展迅速,各项业务全面展开,产品线越来越多,团队也不断壮大。如何组建一支高效的研发团队,减少系统间的摩擦和浪费,让研发...

    CODING

扫码关注云+社区

领取腾讯云代金券