Jenkins 多分支流水线(SVN)
实际应用过程中,一般多分支流水线的方式用得比较多一些,
master 对应 生成环境
develop 对应 测试环境,
将不同分支的代码构建到不同的环境中
添加 Jenkinsfile 文件
Jenkinsfile 内容见:Jenkins Pipeline 流水线 - 完整构建 Pipeline Script 脚本
DevOps/trunk 专门用来放运维脚本

提交 Jenkins 到 SVN
注意代码要放到 trunk,branches 等 分支中
创建多分支流任务




运行

多个 stage 使用不同代理,会在每一步都进行SVN 的切换

完整 pipeline 脚本
pipeline {
agent { label 'JenkinsAgent' }
parameters {
string defaultValue: '4.2', description: '编译版本号', name: 'BUILD_NUMBER'
}
tools {
maven 'Maven36' //添加 Maven 工具
}
stages {
stage('CheckOut SVN Code') {
steps {
checkout([$class: 'SubversionSCM', additionalCredentials: [], excludedCommitMessages: '', excludedRegions: '', excludedRevprop: '', excludedUsers: '', filterChangelog: false, ignoreDirPropChanges: false, includedRegions: '', locations: [[cancelProcessOnExternalsFail: true, credentialsId: 'c3b4ef0e-b414-4376-8a21-2e08e1c84dfb', depthOption: 'infinity', ignoreExternalsOption: true, local: '.', remote: 'SVN地址']], quietOperation: true, workspaceUpdater: [$class: 'UpdateUpdater']]) //该脚本由流水线语法自动生成
echo 'CheckOut SVN Success'
}
}
// Jenkinsfile 的 地址和代码不在同一个仓库下时,需要用这种嵌套的方式,否则,代码刚拉下来,执行第二个 stage 时就被删除了。
stage('Maven Build') {
steps {
bat 'mvn clean package -Dmaven.test.skip=true'
echo 'Maven Build Success'
}
}
//Docker 在 3.88服务器
stage('Docker Build 、Push Repository') {
steps {
#sourceFiles windows下注意 用 \\ 否则可能上传时导致文件找不到。
sshPublisher(publishers: [sshPublisherDesc(configName: 'DockerPublishSSH', transfers: [sshTransfer(cleanRemote: false, excludes: '', execCommand: '', execTimeout: 120000, flatten: false, makeEmptyDirs: false, noDefaultExcludes: false, patternSeparator: '[, ]+', remoteDirectory: 'PipelineDemo', remoteDirectorySDF: false, removePrefix: '', sourceFiles: 'target/demojenkins.jar'), sshTransfer(cleanRemote: false, excludes: '', execCommand: '''
cd /opt/jenkins/PipelineDemo
docker build -t registry.cn-shanghai.aliyuncs.com/vipsoft/vipsoft:${BUILD_NUMBER} .
docker login -u hi帐号ID@aliyun.com -p 密码 registry.cn-shanghai.aliyuncs.com
docker push registry.cn-shanghai.aliyuncs.com/vipsoft/vipsoft:${BUILD_NUMBER}''', execTimeout: 120000, flatten: false, makeEmptyDirs: false, noDefaultExcludes: false, patternSeparator: '[, ]+', remoteDirectory: 'PipelineDemo', remoteDirectorySDF: false, removePrefix: '', sourceFiles: 'Dockerfile')], usePromotionTimestamp: false, useWorkspaceInPromotion: false, verbose: true)])
echo 'Docker SUCCESS'
}
}
//K8S 在 3.181服务器
stage('K8S Deployment') {
steps {
script {
def remote = [:]
remote.name = 'K8S Server'
remote.host = '172.16.3.181'
remote.allowAnyHosts = true
withCredentials([usernamePassword(credentialsId: 'K8SMaster', passwordVariable: 'password', usernameVariable: 'username')]) {
remote.user = "${username}" // 变量要使用“”双引号
remote.password = "${password}" //把凭证中的用户名、密码拿出来给 remote参数
}
sshCommand remote: remote, command: "kubectl set image deployment/javademo1 vipsoft=registry.cn-shanghai.aliyuncs.com/vipsoft/vipsoft:${BUILD_NUMBER}"
echo 'K8S Deployment SUCCESS'
}
}
}
}
}


Jenkins 多分支流水线(SVN)的更多相关文章
- Jenkins打造多分支流水线指南
overview: 多分支工作流程带来了以下几个关键能力: 在代码仓库中,每个新分支都有自己单独的工作流水线(job). 每个工作流水线都记录了对应分支的构建和变更历史. 可以自定义设置流水线随着分支 ...
- CI/CD之Gitlab集成Jenkins多分支pipeline实现质量检测和自动发布
本次实施主要实现: 代码提交gitlab,自动触发Jenkins构建 gitlab发起Merge Request, 需要Jenkins检查通过才可以merge,实现代码review和质量管控 gitl ...
- Jenkins + Pipeline 构建流水线发布
Jenkins + Pipeline 构建流水线发布 利用Jenkins的Pipeline配置发布流水线 参考: https://jenkins.io/doc/pipeline/tour/depl ...
- Jenkins多分支构建
目录 一.创建多分支pipeline 二.根据分支部署 gitlab触发与多分支 Generic Webhook多分支 一.创建多分支pipeline 在实际中,需要多分支同时进行开发.如果每个分支都 ...
- 如何在 Jenkins CI/CD 流水线中保护密钥?
CI/CD 流水线是 DevOps 团队软件交付过程的基本组成部分.该流水线利用自动化和持续监控来实现软件的无缝交付.通过持续自动化,确保 CI/CD 流水线每一步的安全性非常重要.在流水线的各个阶段 ...
- DEVOPS技术实践_09:Jenkins多分支管道
简介 多分支的管道是在jenkins2.x中新增的功能 . 多分支管道允许你针对分布式的控制器的每个分支创建一个管道. 下图是对它的一个描述.使用jenkinsfile去创建多分支的管道,jenkin ...
- 9.Jenkins进阶之流水线pipeline基础使用实践(2)
目录一览: 0x01 基础实践 0x02 进阶实践 (1) Sonarqube 代码质量检测之 Pipeline Script from SCM (2) Gitlab 自动触发构建之 Pipeline ...
- 8.Jenkins进阶之流水线pipeline基础使用实践(1)
目录一览: 0x01 基础实践 (1) Maven 构建之 Pipeline Script (2) Maven 构建之 Pipeline Script from SCM (3) Jenkins pi ...
- 7.Jenkins进阶之流水线pipeline语法入门学习(2)
目录一览: (2) Declarative Pipeline Syntax 2.1) Sections - 章节 2.2) Directives - 指令 2.3) Sequential Stages ...
- 6.Jenkins进阶之流水线pipeline语法入门学习(1)
目录一览: 0x00 前言简述 Pipeline 介绍 Pipeline 基础知识 Pipeline 扩展共享库 BlueOcean 介绍 0x01 Pipeline Syntax (0) Groov ...
随机推荐
- CSS 溢出overflow属性的使用
作者:WangMin 格言:努力做好自己喜欢的每一件事 在CSS中,如果给一个盒子设置了固定的宽度与高度,但内容过多就会溢出盒子本身的宽度或高度.此时,就可以使用 overflow 属性来控制内容溢出 ...
- .Net8 Blazor 尝鲜
全栈 Web UI 随着 .NET 8 的发布,Blazor 已成为全堆栈 Web UI 框架,可用于开发在组件或页面级别呈现内容的应用,其中包含: 用于生成静态 HTML 的静态服务器呈现. 使用 ...
- 数据分析师如何做好PPT
作为一名数据分析师,制作出色的PPT是非常重要的技能之一.一个好的PPT可以让你的数据洞察更加生动有趣,并有效传达给观众.以下是一些详细的步骤和技巧,帮助你成为一名擅长制作PPT的数据分析师: 确定目 ...
- 使用javafx,结合讯飞ai,搞了个ai聊天系统
第一步:先在讯飞ai那边获取接入的api 点进去,然后出现这个页面: 没有的话,就点击免费试用,有了的话,就点击服务管理: 用v2.0的和用3的都行,不过我推荐用2.0版本 文档位置:星火认知大模型W ...
- Vue3+Vue-Router+TypeScript+Vite+Element-Plus+Axios+Pinia快速搭建开发框架
1.环境准备 (1) 首先你得需要安装node和npm 2.环境初始化 (1) 先随意找个文件夹,初始化vite # 安装pnpm npm i -g pnpm # 初始化vite pnpm creat ...
- 自定义线程池将异常"吃了"
今天在做项目时,写了一个使用自定义线程池执行远程调用 // 删除购物车信息 corePoolExecutor.submit(() -> { try { cartFeignClient.delet ...
- python tkinter使用(四)
python tkinter使用(四) 本篇文章主要讲下tkinter 的文本框相关. tkinter中用Entry来实现输入框,类似于android中的edittext. 具体的用法如下: 1:空白 ...
- 【UniApp】-uni-app-项目计算功能(苹果计算器)
前言 本文主要介绍苹果计算器项目中计算功能的实现 在前面的文章中已经实现了输入,动态计算字体大小,以及计算器的布局 本文主要介绍计算功能的实现 正文 实现/清空/改变正负/除以100 inputTex ...
- ngnix学习-反向代理
代理:可以理解为中间商,用来帮助事物A和事物B建立连接的桥梁. 什么是反向代理呢,其实就是反过来,反客为主大家都知道吧. 说明: 这里稍微罗嗦一下.做一个说明. 正常情况下,你是需要干什么,才去干什么 ...
- Android移动、缩放和旋转手势实现
Android的部分图片编辑应用中需要对图片进行移动.缩放和旋转,这些变化都依赖于触摸手势实现,而本文主要阐述移动.缩放和旋转手势的简单实现. 一.移动 首先需要从触摸事件(MotionEvent)中 ...