当前位置: 首页 > news >正文

刚刚地震最新消息今天2022360优化大师最新版的功能

刚刚地震最新消息今天2022,360优化大师最新版的功能,怎么在网站后台删除图片,太白县住房和城乡建设局网站上一篇博客在Google Kubernetes集群创建分布式Jenkins(一)-CSDN博客我介绍了如何在GCP的K8S集群上部署一个分布式的Jenkins,并实现了一个简单的Pipeline的运行。 在实际的开发中,我们通常都会按照以下的CICD流程来设置Pipeline 在我司的实际实践中&…

上一篇博客在Google Kubernetes集群创建分布式Jenkins(一)-CSDN博客我介绍了如何在GCP的K8S集群上部署一个分布式的Jenkins,并实现了一个简单的Pipeline的运行。

在实际的开发中,我们通常都会按照以下的CICD流程来设置Pipeline

在我司的实际实践中,通常包括如下的步骤:

  1. 往Git仓库提交开发分支的代码,创建Pull request来进行code review
  2. Git仓库配置hook,当收到PR时触发jenkins任务,拉取代码到Jenkins进行编译和UT检查
  3. Jenkins把UT检查结果回写到PR的comments,如果UT检查通过,自动Approve+1
  4. 当其他人对PR的code review完成,Approve+2,自动合并代码到主分支。
  5. 合并到主分支触发Jenkins的打包任务,Jenkins拉取主分支代码运行打包任务
  6. 打包任务完成后,把打包的镜像推送到registry
  7. 更新部署的manifest,更新镜像的标签
  8. 把应用部署到GKE

这里我将按照以上任务来设置相应的pipeline

Jenkins安装插件

要完成以上的任务,我们需要安装以下的一些插件

Generic webhook trigger plugin

Github plugin

Credential binding plugin

Git仓库设置webhook

我选择GitHub作为示例,在github上建立一个简单的Java Springboot项目,实现一个rest接口,完成一个简单的计算任务,代码仓库在https://github.com/gzroy/webdemo.git。在这个repo的页面上,点击Settings->webhooks,然后选择添加webhook,在Payload URL里面输入jenkins URL,例如我的Jenkins URL是http://123.123.123.123/jenkins/generic-webhook-trigger/invoke?token=abc,ContentType选择application/json,然后点击“Let me select individual events”,选择触发hook的事件。这里我选择Pull request。

设置CICD项目

因为我打算以后其他项目都统一用这个CICD的流程,所以新建一个CICD的项目,把所需要的Jenkins pipeline的代码都放到这个项目中。以后其他项目只需要引用这个项目的相关文件即可完成CICD的任务。代码仓库在https://github.com/gzroy/cicd.git

创建PR自动触发测试的Pipeline

我们要实现的功能是,当开发者新建一个分支,修改完代码,commit提交并创建PR之后,应该要自动触发CI的pipeline来进行UT测试,并把测试结果写到PR的comments里面,这样其他reviewer可以查看这个测试的结果。

在CICD项目里面,我新建了一个ut_pipeline.groovy文件,内容如下:

pipeline {agent{kubernetes{yaml '''apiVersion: v1kind: Podspec:containers:- name: mavenimage: maven:3.8.3-openjdk-17tty: trueimagePullPolicy: "IfNotPresent"command:- cat'''}}triggers {GenericTrigger(genericVariables: [[key: 'action', value: '$.action', expressionType: 'JSONPath'],[key: 'clone_url', value: '$.pull_request.base.repo.clone_url', expressionType: 'JSONPath'],[key: 'ref', value: '$.pull_request.head.ref', expressionType: 'JSONPath'],[key: 'sha', value: '$.pull_request.head.sha', expressionType: 'JSONPath'],[key: 'number', value: '$.number', expressionType: 'JSONPath'],[key: 'comments_url', value: '$.pull_request.comments_url', expressionType: 'JSONPath']],token: 'abc')}environment {CREDENTIAL = credentials("${CREDENTIAL_ID}")}stages{stage("git checkout") {when {expression {return action=="opened" || action=="synchronize"}}steps {script {git(url: clone_url,credentialsId: CREDENTIAL_ID,branch: ref)}}}stage("test"){when {expression {return action=="opened" || action=="synchronize"}}steps{container('maven') {script{sh 'mvn test '}}}post {failure {sh """(curl -L -X POST \-H \"Accept: application/vnd.github+json\" \-H \"Authorization: Bearer ${env.CREDENTIAL_PSW}\" \-H \"X-GitHub-Api-Version: 2022-11-28\" \${comments_url} \-d \'{\"body\": \"UT test failure for commit ${sha}\"}\')"""}success {sh """(curl -L -X POST \-H \"Accept: application/vnd.github+json\" \-H \"Authorization: Bearer ${env.CREDENTIAL_PSW}\" \-H \"X-GitHub-Api-Version: 2022-11-28\" \${comments_url} \-d \'{\"body\": \"UT test success for commit ${sha}\"}\')"""}}}}
}

解释一下这个程序。在Agent模块里面定义了一个运行Jenkins Agent的Pod,其中container除了默认的agent container之外,还包括一个maven container,在test这个stage里面,将运行这个maven container的mvn test命令来执行UT测试。

在triggers模块中,定义了GenericTrigger从webhook的回调API中获取body的数据,把其中需要的数据赋值到变量,给后续的stage使用。

在environment模块中,定义了一个名为CREDENTIAL的全局变量,通过credentials helper函数来获取Jenkins保存的凭证,这里的CREDENTIAL_ID是在Jenkins System里面定义的全局变量。注意这里必须要加上双引号,使得Groovy可以预先用Jenkins变量的值来替代这个变量,如果用单引号则不行。

在Stages模块中,定义了两个Stage,这两个操作都是当PR新建或已有PR上发生新的commit时才执行。第一个Stage执行从Github仓库checkout的操作。第二个Stage是执行maven测试,在Post里面定义了测试成功或失败,需要给PR加上相应的comment。这里都使用了Github API来进行操作,我们需要预先把Github用户的access token保存到Jenkins的credentials中。

PR review approve自动触发打包的pipeline

创建一个package_pipeline.groovy的文件,当收到Webhook回调时,判断如果是approve的事件,那么将自动执行合并代码分支到主分支的操作,然后拉取主分支的代码进行package,并进行Docker构建,然后把镜像推送到相应的registry。

待补充

部署镜像的pipeline

采用Gitops的方式来部署。

待补充

设置Pipeline

回到Jenkins的控制台,新建一个webdemo_ut的Job,选择Pipeline类型,然后在Github项目里面填入https://github.com/gzroy/webdemo.git,在构建触发器里面选择Generic Webhook Trigger,Token也要填上,这个Token需要和Github配置webhook的token一致。定义Pipeline里面选择Pipeline script from SCM,填入CICD项目的地址和Script文件的路径,Branch to build里面输入*/*,然后保存即可。

之后我们在https://github.com/gzroy/webdemo.git这个项目上可以执行新建分支,然后改动代码,提交之后创建一个PR,可以看到Jenkins将自动触发一个任务,进行测试后把结果回写到PR的comments中。

新建一个webdemo_package的job,配置和上面类似,只是pipeline script选择package_pipeline.groovy文件。当我们Approve PR review之后,可以看到Jenkins将自动触发package任务,生成镜像并推送到registry。

总结

以上就是设置一个自动触发Jenkins任务的CICD流程。

http://www.yidumall.com/news/42568.html

相关文章:

  • 一流本科专业建设点网站投资网站建设方案
  • 苏州网站建设网站建设艾滋病多长时间能查出来
  • 哪里有响应式网站企业什么是关键词
  • 房产网 最新楼盘价格泉州关键词优化软件
  • 淘宝做海淘产品 网站折扣变化快网络推广策划方案怎么写
  • 黄骅港潮汐广州营销seo
  • 网站后台如何修改新闻发布时间关键词指数查询工具
  • 欧美网站特点站长工具爱情岛
  • python做网站多么seo是什么的
  • 用凡科做网站有自己的域名营销网站
  • 网站支持ipv6怎么做seo培训多少钱
  • 养老网站建设的意义免费发布软文广告推广平台
  • 女孩说做网站测试网络营销主要是什么
  • 济南公司网站开发北京seo关键词
  • 做设计必须收藏的网站站长工具外链查询
  • wordpress首行缩进2字符怎么设置seo的概念
  • 网站建设 ppt腾讯企业qq官网
  • 做自己的网站花多钱希爱力吃一颗能干多久
  • 五月天做网站太原关键词优化服务
  • 连云港做鸭网站防城港网站seo
  • 南通网站建设规划seo是什么意思怎么解决
  • 化妆品网站源码asp百度手机助手app
  • pc wap 装修公司网站源码痘痘该如何去除效果好
  • 建设银行河南省分行网站原画培训班一般学费多少
  • wordpress网站怎么优化关键词优化策略有哪些
  • 定制网站建设报价单宁波seo搜索优化费用
  • 线上商城模板seo站内优化站外优化
  • 网站建设结构图成人本科报考官网
  • 如何查网站是哪个公司做的百度网站站长工具
  • ps怎么做网站logo网页生成