我的编程空间,编程开发者的网络收藏夹
学习永远不晚

jenkins pipeline持续集成

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

jenkins pipeline持续集成

简介

 Jenkins 2.x的精髓是Pipeline as Code,那为什么要用Pipeline呢?jenkins1.0也能实现自动化构建,但Pipeline能够将以前project中的配置信息以steps的方式放在一个脚本里,将原本独立运行于单个或者多个节点的任务连接起来,实现单个任务难以完成的复杂流程,形成流水式发布,构建步骤视图化。简单来说,Pipeline适用的场景更广泛,能胜任更复杂的发布流程。举个例子,job构建工作在master节点,自动化测试脚本在slave节点,这时候jenkins1.0就无法同时运行两个节点,而Pipeline可以。

基本概念

Stage: 阶段,一个Pipeline可以划分为若干个Stage,每个Stage代表一组操作。注意,Stage是一个逻辑分组的概念,可以跨多个Node。
Node: 节点,一个Node就是一个Jenkins节点,或者是Master,或者是slave,是执行Step的具体运行期环境。
Step: 步骤,Step是最基本的操作单元,小到创建一个目录,大到构建一个Docker镜像,由各类Jenkins Plugin提供。

1.png

 

语法

Pipeline支持两种语法:Declarative Pipeline(在Pipeline 2.5中引入,结构化方式)和Scripted Pipeline,两者都支持建立连续输送的Pipeline。
共同点:
两者都是pipeline代码的持久实现,都能够使用pipeline内置的插件或者插件提供的steps,两者都可以利用共享库扩展。
区别:
两者不同之处在于语法和灵活性。Declarative pipeline对用户来说,语法更严格,有固定的组织结构,更容易生成代码段,使其成为用户更理想的选择。但是Scripted pipeline更加灵活,因为Groovy本身只能对结构和语法进行限制,对于更复杂的pipeline来说,用户可以根据自己的业务进行灵活的实现和扩展。

 

本文主要采取Scripted Pipeline语法

环境介绍

环境参考链接:

https://www.cnblogs.com/xiao987334176/p/12344871.html

 

这里面,主要是通过jenkins将Spring Cloud项目发布到一台服务器。

利用了参数化构建,一个jenkins job同时支持发布和回滚。

 

另外还设置了回滚时,跳过构建,参考链接:

https://www.cnblogs.com/xiao987334176/p/12357007.html

 

pipeline方式

如果要改成pipeline方式,需要新建一个jenkins job,名字为:test_pipeline_eureka-server

基本设置

1.png

 

 

 参数化构建

 1.png

 

 

 pipeline脚本

1.png

 

 

 完整代码如下:

node {
   if (env.Status == 'Deploy'){
       stage('code pull') { 
           checkout([$class: 'GitSCM', branches: [[name: 'test_eureka-server']], 
           doGenerateSubmoduleConfigurations: false,
           extensions: [],
           submoduleCfg: [],
           userRemoteConfigs: [[credentialsId: 'bf8a2a98-bb4f-461e-be46-2b49702d19b0', url: 'ssh://git@gitlab.baidu.com:22/eureka-server.git']]])
       }
       stage('code Build') {
         sh 'mvn -f pom.xml clean package -Pdev -Dmaven.test.skip=true'
       }
       stage('code deploy') {
         sh 'ansible-playbook -v /opt/ansible/test/deploy_standard_template.yml -e "HOSTS=test_java JOB_NAME=${JOB_NAME} BUILD_NUMBER=${BUILD_NUMBER} ENV=test PROJECT_NAME=eureka-server PREFIX=eureka-server PORT=8761"'
       }
   }else{
       stage('code rollback') {
           sh 'ansible-playbook -v /opt/ansible/test/rollback_standard_template.yml -e "HOSTS=test_java ENV=test PROJECT_NAME=eureka-server PORT=8761 BUILD_ID=${BUILD_ID}"'
       }
   }
}

代码解释:

node {} 这里面,是Scripted Pipeline语法的主要构成部分。

if (env.Status == 'Deploy'){}  这里做了判断,判断是否发布?Status 就是上面我们参数化构建制定的变量。必须通过env.变量名来获取。

stage('code pull') {} 表示code pull阶段

checkout() 表示拉取代码

$class: 'GitSCM'  表示使用git方式拉取代码。SCM,分git,svn等等。SCM英文全称是:供应链管理。这里我们指代码仓库管理

branches: [[name: 'test_eureka-server']]  表示指定分支为:test_eureka-server

doGenerateSubmoduleConfigurations: false  不生成子模块设置

extensions 扩展设置

submoduleCfg 子模块设置

userRemoteConfigs 用户远程设置,主要设置gitlab相关配置

credentialsId 凭证id,点击jenkins-->凭证,就可看到。通过这个用户,就有权限从gitlab上面拉取代码了。

 1.png

 

 url gitlab项目地址,可以是ssh方式,也可以是http方式。

stage('code Build') {} 代码构建,这里面,主要是指定pom.xml文件,编译出jar包。

stage('code deploy') {} 代码发布,执行shell命令。

stage('code rollback') {} 代码回滚,执行shell命令。

 

点击页面的构建

1.png

 

 点击构建

1.png

 

 效果如下:

1.png

 

 如果安装了Blue Ocean插件,点击左侧的Blue Ocean

 1.png

 

 效果如下:

 1.png

 

 

如果不考虑回滚, pipeline可以精简一些,比如:

node {
   stage('code pull') { 
       checkout([$class: 'GitSCM', branches: [[name: 'test_eureka-server']], 
       doGenerateSubmoduleConfigurations: false,
       extensions: [],
       submoduleCfg: [],
       userRemoteConfigs: [[credentialsId: 'bf8a2a98-bb4f-461e-be46-2b49702d19b0', url: 'ssh://git@gitlab.baidu.com:22/eureka-server.git']]])
   }
   stage('code Build') {
     sh 'mvn -f pom.xml clean package -Pdev -Dmaven.test.skip=true'
   }
   stage('code deploy') {
     sh 'ansible-playbook -v /opt/ansible/test/deploy_standard_template.yml -e "HOSTS=test_java JOB_NAME=${JOB_NAME} BUILD_NUMBER=${BUILD_NUMBER} ENV=test PROJECT_NAME=eureka-server PREFIX=eureka-server PORT=8761"'
   }
}

 

本文参考链接:

https://www.cnblogs.com/shenh/p/8963688.html

https://blog.csdn.net/diantun00/article/details/81075007

https://www.cnblogs.com/woshimrf/p/gitlab-with-jenkins.html

 


免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

jenkins pipeline持续集成

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

jenkins pipeline持续集成

简介Jenkins 2.x的精髓是Pipeline as Code,那为什么要用Pipeline呢?jenkins1.0也能实现自动化构建,但Pipeline能够将以前project中的配置信息以steps的方式放在一个脚本里,将原本独立运
2023-01-31

GitLab+Jenkins持续集成

GitLab是一个代码仓库,用来管理代码。Jenkins是一个自动化服务器,可以运行各种自动化构建、测试或部署任务。所以这两者结合起来,就可以实现开发者提交代码到GitLab,Jenkins以一定频率自动运行测试、构建和部署的任务,帮组开发
2023-01-31

jenkins+python持续集成

搜索jenkins,进入官网,5分钟以内相信你能找到适合你操作系统的安装步骤。此处为省事,列出centos步骤(注意安装稳定版)sudo wget -O /etc/yum.repos.d/jenkins.repo http://pkg.je
2023-01-31

Linux主机与Jenkins Pipeline集成

将Linux主机与Jenkins Pipeline集成可以让你在Jenkins中自动化构建、测试和部署你的应用程序。以下是一个基本的步骤指南,帮助你完成这个集成:1. 安装Jenkins首先,确保你已经在Linux主机上安装了Jenki
Linux主机与Jenkins Pipeline集成
2024-09-27

jenkins持续集成的原理是什么

Jenkins持续集成的原理是基于以下几个关键步骤:代码检出:Jenkins会从版本控制系统(如Git)中检出最新的代码。构建:Jenkins会根据项目的构建配置,执行构建命令或脚本来编译源代码、生成可执行文件、打包部署文件等。测试:Jen
2023-10-25

Jenkins+maven持续集成的实现方法

这篇文章给大家分享的是有关Jenkins+maven持续集成的实现方法的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。环境系统:centos 7tomcat位置:/usr/local/jbreport/apache
2023-06-14

PHP Jenkins 与 Docker:强大组合,实现持续集成

PHP Jenkins与Docker联手,为PHP开发人员打造强大的持续集成解决方案,简化部署和维护工作,提高项目质量和效率。
PHP Jenkins 与 Docker:强大组合,实现持续集成
2024-03-07

PHP Jenkins 最佳实践:掌握持续集成和交付

PHP Jenkins 最佳实践:提升持续集成和交付效率
PHP Jenkins 最佳实践:掌握持续集成和交付
2024-03-07

PHP Jenkins:与 PHP 携手实现持续集成和交付

持续集成和交付的利器:PHP Jenkins
PHP Jenkins:与 PHP 携手实现持续集成和交付
2024-03-07

使用 Jenkins 创建微服务应用的持续集成

Serverless 应用引擎 SAE(Serverless App Engine)是面向应用的 Serverless PaaS 平台,能够帮助 PaaS 层用户免运维 IaaS、按需使用、按量计费,做到低门槛微服务应用上云。

使用Jenkins搭建iOS/Android持续集成打包平台

背景描述根据项目需求,现要在团队内部搭建一个统一的打包平台,实现对iOS和Android项目的打包。而且为了方便团队内部的测试包分发,希望在打包完成后能生成一个二维码,体验用户(产品、运营、测试等人员)通过手机扫描二维码后能直接安装测试包。
2022-06-06

如何进行基于jenkins+kubernets+docker的持续化集成

这篇文章将为大家详细讲解有关如何进行基于jenkins+kubernets+docker的持续化集成,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。项目实现效果,开发人员在gitlab上传代码
2023-06-19

怎么署基于Windows系统的Jenkins持续集成环境

这篇文章主要讲解了“怎么署基于Windows系统的Jenkins持续集成环境”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“怎么署基于Windows系统的Jenkins持续集成环境”吧!首先,
2023-06-19

在CentOS7上搭建Jenkins+Maven+Git持续集成环境的方法

本文以部署 Spring boot + Maven 项目为例,使用码云作为代码托管仓库,在 CentOS 7 上搭建 Jenkins 持续集成环境。 1. 准备工作1.1 安装 java 环境Jenkins 是基于 Java 开发的持续集成
2022-06-04

编程热搜

  • Python 学习之路 - Python
    一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
    Python 学习之路 - Python
  • chatgpt的中文全称是什么
    chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
    chatgpt的中文全称是什么
  • C/C++中extern函数使用详解
  • C/C++可变参数的使用
    可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
    C/C++可变参数的使用
  • css样式文件该放在哪里
  • php中数组下标必须是连续的吗
  • Python 3 教程
    Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
    Python 3 教程
  • Python pip包管理
    一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
    Python pip包管理
  • ubuntu如何重新编译内核
  • 改善Java代码之慎用java动态编译

目录