前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >云函数场景下的DevOps实践--CODING企业版

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

作者头像
腾讯云serverless团队
发布2019-07-19 16:13:33
1.6K0
发布2019-07-19 16:13:33
举报

云函数提供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本地开发工具添加了云函数版本发布的命令,这里可以集成云函数新版本的发布。

配置文件:

代码语言:javascript
复制
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/

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2019-07-17,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 ServerlessCloudNative 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 云函数提供Serverless本地开发工具,支持本地调试、代码打包、函数发布等功能。CODING 企业版是专为企业打造的软件开发协作平台,提供敏捷开发、代码托管、持续集成等服务。当前CODING企业版平台默认支持代码仓库托管、CI/CD自动化pipline。
  • 本文将介绍如何基于CODING的代码托管、CI /CD pipline功能,结合Serverless本地开发工具的功能,提供云函数的DevOps 能力,完成DevOps 检出、构建、测试、部署等持续集成的自动化流程。
    • 初始化本地函数
      • 本地调试和本地调用
        • 将本地生成的函数推送到CODING代码仓库
          • 创建持续集成的任务
            • 创建持续集成的pipline
            相关产品与服务
            持续集成
            CODING 持续集成(CODING Continuous Integration,CODING-CI)全面兼容 Jenkins 的持续集成服务,支持 Java、Python、NodeJS 等所有主流语言,并且支持 Docker 镜像的构建。图形化编排,高配集群多 Job 并行构建全面提速您的构建任务。支持主流的 Git 代码仓库,包括 CODING 代码托管、GitHub、GitLab 等。
            领券
            问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档