Jenkins+Pipeline+Gitee本地自动化部署(Windows平台)——看完不会用你打我

目前DevOps和CI/CD正在大行其道,各家公司都有自己的产品,主要分为两类:微软的TFS、开源的Jenkins,目前来看Jenkins由于其开源性、丰富的组件更受欢迎。我去年就想学习一下Jenkins,不过由于各种原因直到最近才把本地自动化部署完整的弄出来,难度其实并不高,今天把文章发出来一是为了做个记录,二是希望能让新入门的朋友有一个参考。本文略过了Jenkins的安装过程,请大家安装完毕后再参考本文实现自动化部署。

一、安装插件

1、操作路径:Manage Jenkins/Manage Plugins/可选插件/输入插件名称
2、Pipeline: Declarative:使用声明式编写流水线脚本所需的插件
3、Gitee:连接Gitee所需的插件
4、PowerShell:调用PowerShell脚本所需的插件
5、Timestamper:日志内容会包含时间信息所需的插件
注意:安装完插件后一定要在services.msc中重启Jenkins服务

二、创建流水线任务

1、新建Item/创建一个新任务-->选择流水线

三、添加Gitee配置

1、操作路径:Manage Jenkins/Configure System/Gitee配置
2、设置链接名:Gitee_DapperCore
3、设置Gitee域名URL:https://gitee.com/
4、在Gitee中添加Gitee API V5 的私人令牌:在Gitee登录状态下打开https://gitee.com/profile/personal_access_tokens

5、在Jenkins中添加Gitee API令牌

6、选择证书令牌

7、测试链接

四、管理凭据

1、我们上一步选择证书令牌时,需要先创建凭据然后才能选择证书令牌,Jenkins中有两处地方可以管理凭据
2、管理凭据1处:Manage Jenkins/Manage Credentials

 3、管理凭据2处:点击A文件夹/凭据

五、使用流水线语法帮助工具

1、流水线脚本使用Groovy语法,为了降低用户的学习成本,Jenkins提供了帮助工具把常用脚本转换为Groovy语法
2、任务内部有"流水线语法"菜单

3、利用帮助工具把指定脚本转换为流水线语法

六、配置流水线任务

1、打开配置界面

2、配置General

3、配置流水线

4、保存配置并测试构建(到此为止Jenkins手动发布配置完毕,文章末尾有流水线脚本代码)

七、自动化部署

Jenkins是CI/CD的利器仅实现手动发布肯定不是我们的最终目标,大多数情况我们会希望当Gitee代码库有了新提交就自动编译、部署,下面就详细讲解如何实现这一效果。

1、配置流水线任务的构建触发器

2、修改 "需要在 Gitee webhook 中填写的URL"
有时 "需要在 Gitee webhook 中填写 URL" 的值是 "http://localhost:8080/xxx" ,对于这种情况我们要修改Jenkins URL。

3、把 "需要在 Gitee webhook 中填写的URL" 转换为外网地址
如果 "需要在 Gitee webhook 中填写的URL" 本来就是外网地址则无需转换,否则才将其转换为外网地址。
具体转换步骤请参考:https://blog.csdn.net/liqing0013/article/details/80731757
4、在Gitee中添加Web Hook

5、选择 "允许触发构建的分支"
如果想任何分支提交都触发构建,就选择 "允许所有分支触发构建" ;
如果想仅当master分支提交时才触发构建,就选择 "根据分支名过滤",包括输入框填写 "master" ;

6、选择 "允许触发构建的分支" 不同项所造成的影响(到此为止Jenkins自动发布配置完毕)

注意:如果是直接在Gitee代码库中修改代码然后提交来触发Jenkins自动构建,如果重复修改一个文件,则提交一次之后最好刷新一下Gitee页面再进行下一次修改和提交,否则有可能出现触发失败的情况。

八、流水线测试脚本

#!groovy

String workspace = "D:/opt/Jenkins/workspace";
String sourceCodePath = "";
pipeline{
	agent {
		node{label "master" //指定运行节点的标签或者名称
			 customWorkspace "${workspace}" //指定运行工作目录(可选)
		}
	}
	options {
		timestamps() //日志内容会包含时间信息,需要安装Timestamper插件
		skipDefaultCheckout() //删除隐式checkout scm语句
		disableConcurrentBuilds() //禁止并行
		timeout(time:1,unit:'HOURS') //流水线超时时间设置为1h
	}
	stages {
		//下载代码
		stage("GetCode"){ //阶段名称
			steps{ //步骤
				timeout(time:5, unit:"MINUTES"){ //步骤超时时间
					script{ //填写运行代码
						println('获取代码');
					}
				}
			} 
		}
		//代码扫描
		stage("ScanCode"){ //阶段名称
			steps{ //步骤
				timeout(time:20, unit:"MINUTES"){ //步骤超时时间
					script{ //填写运行代码
						println('扫描代码');
					}
				} 
			}
		}
		//构建
		stage("Build"){ //阶段名称
			steps{ //步骤
				timeout(time:10, unit:"MINUTES"){ //步骤超时时间
					script{ //填写运行代码
						println('应用打包');
					}
				}
			} 
		}
		//代码发布
		stage("Release"){ //阶段名称
			steps{ //步骤
				timeout(time:20, unit:"MINUTES"){ //步骤超时时间
					script{ //填写运行代码
						println('发布代码');
					}
				} 
			}
		}
	}
	post{
		always{ //总是执行的脚本片段
			script {
				println('always');
			} 
		}
		success{ //成功后执行
			script { 
				currentBuild.description += "\n 构建成功"; //currentBuild是一个全局变量
			} 
		}
		failure{ //失败后执行
			script { 
				currentBuild.description += "\n 构建失败";
			} 
		}
		aborted{ //取消后执行
			script { 
				currentBuild.description += "\n 构建取消";
			} 
		}
	}
}

 如果觉得文章写的不错,请点赞、评论支持一下,如果有其他问题同样欢迎在评论区留言。

  • 3
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

changuncle

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值