jenkins-自动化打包部署

2023-10-27

环境:

        centos 7.2或者更新

        rmp包:官方下载地址 Redhat Jenkins Packages

        java-1.8.0

安装:

[root@jenkins ~]# yum install wget  java-1.8.0 -y

[root@jenkins ~]# cd /var/opt/
[root@jenkins opt]# wget https://pkg.jenkins.io/redhat-stable/jenkins-2.176.2-1.1.noarch.rpm
[root@jenkins opt]# yum install ./jenkins-2.176.2-1.1.noarch.rpm -y

配置:jenkins 配置文件 /etc/sysconfig/jenkins  ,可以根据需求自行修改

[root@jenkins opt]# grep '^[^#]' /etc/sysconfig/jenkins 
JENKINS_HOME="/data/jenkins"        #jenkins的数据目录
JENKINS_JAVA_CMD=""
JENKINS_USER="jenkins"
JENKINS_JAVA_OPTIONS="-Djava.awt.headless=true"
JENKINS_PORT="8080"                #jenkins 通过web访问的端口
JENKINS_LISTEN_ADDRESS=""
JENKINS_HTTPS_PORT=""
JENKINS_HTTPS_KEYSTORE=""
JENKINS_HTTPS_KEYSTORE_PASSWORD=""
JENKINS_HTTPS_LISTEN_ADDRESS=""
JENKINS_DEBUG_LEVEL="5"
JENKINS_ENABLE_ACCESS_LOG="no"
JENKINS_HANDLER_MAX="100"
JENKINS_HANDLER_IDLE="20"
JENKINS_ARGS=""
mkdir /data/jenkins -pv
chown jenkins.jenkins /data/jenkins

访问web 并进行配置

稍等一会,就可以正常登录了

根据需要安装自定义插件,本次选择是推荐安装

等待安装,估计需要5分钟左右,如果中间有失败,重试就行,安装完成之后,会自动跳入如下页面,然后自己创建用户,或者直接使用admin 账户

开始登录:

登录之后,安装一些插件,点击系统管理,进入 插件管理,选择可选插件,然后过滤下载

Maven Release Plug-in

Publish Over SSH

Multijob

安装之后,点击系统管理,进入 全局工具配置

配置jdk

配置maven

配置远程服务器信息 Publish over SSH

    系统管理  系统设置,然后搜索 Publish over SSH

    填写远程机器的登录信息,填写之后 一定要测试一下,是否认证成功

如果有需要用到的全局变量,也可以在系统设置里面配置,如下

准备工作差不多了,现在需要创建一个maven 任务,测试一下

这个定时删除旧的构建,还可以节省磁盘空间

构建触发器,根据需要选择,默认为第一个选择


下面说下简单的pipline 流水线

pipeline {
    agent any 
	environment {
        ios="ios"
		android="android"
    }
    stages {
        
		
		stage("清理之前打包的热更资源文件") {
			steps {
				script { 
						sh label: 'removetars', returnStdout: true, script: 'rm -rf target aliPjo RainVersion'
					}
			}
		}
		
		
		
		stage('请选择版本[正式版|开发板]'){
			steps {
				script {
					def result="product\ndebug"
					def userInput = input(id: 'userInput', message: '请选择版本[正式版|开发版]', 
					parameters: [[$class: 'ChoiceParameterDefinition', defaultValue: 'strDef', 
						description:'product:正式版\ndebug:开发版', name:'打包热更资源分支', choices: "${result}"] 
					]) 
		 
					if ( userInput =="debug" ) {
								ios="iosdebug"
								android="androiddebug"
					}else {
								ios="ios"
								android="android"
					}
					
				 
				}
			
			
			}
		
		
		}
		
		
		
        stage('请输入要更新的 IOS 客户端版本') { 
			steps { 
        
				script { 
						
					  def  result = sh(returnStdout: true, script: "sh /data/jenkins/get.cliet.version.sh $ios").trim()
					  def userInput = input(id: 'userInput', message: '请输入要更新的 IOS 客户端版本', 
					  parameters: [[$class: 'ChoiceParameterDefinition', defaultValue: 'strDef', 
					   description:'...', name:'客户端版本', choices: "${result}"] 
					  ]) 


					checkout([$class: 'SubversionSCM', additionalCredentials: [], 
						excludedCommitMessages: '', 
						excludedRegions: '', 
						excludedRevprop: '', 
						excludedUsers: '', 
						filterChangelog: false, 
						ignoreDirPropChanges: false, 
						includedRegions: '', 
						locations: [[cancelProcessOnExternalsFail: true, 
							credentialsId: 'e433b9f7-72aa-41c3-add0-cecss3ba7398', 
							depthOption: 'infinity', 
							ignoreExternalsOption: true, 
							local: "./aliPjo/$ios/${userInput}", 
							remote: "svn://svn.kp.aliyu.com/hotclient/aliPjo/$ios/${userInput}"]], 
						quietOperation: true, 
						workspaceUpdater: [$class: 'UpdateUpdater']])

					
					checkout([$class: 'SubversionSCM', additionalCredentials: [], 
						excludedCommitMessages: '', 
						excludedRegions: '', 
						excludedRevprop: '', 
						excludedUsers: '', 
						filterChangelog: false, 
						ignoreDirPropChanges: false, 
						includedRegions: '', 
						locations: [[cancelProcessOnExternalsFail: true, 
							credentialsId: 'e433b9f7-72aa-41c3-add0-cecss3ba7398', 
							depthOption: 'files', 
							ignoreExternalsOption: true, 
							local: "./RainVersion/$ios/", 
							remote: "svn://svn.kp.aliyu.com/hotclient/aliPjo/$ios/"]], 
						quietOperation: true, 
						workspaceUpdater: [$class: 'UpdateUpdater']])
						
				}
			} 

		} 
		
		
		stage('请输入要更新的 Android 客户端版本') { 
			steps { 
        
				script { 
	 
					  def  result = sh(returnStdout: true, script: "sh /data/jenkins/get.cliet.version.sh $android").trim()
					  def userInput = input(id: 'userInput', message: '请输入要更新的 Android 客户端版本', 
					  parameters: [[$class: 'ChoiceParameterDefinition', defaultValue: 'strDef', 
					   description:'...', name:'客户端版本', choices: "${result}"] 
					  ]) 

					  println(userInput); //Use this value to branch to different logic if needed 
				 
				
					checkout([$class: 'SubversionSCM', additionalCredentials: [], 
						excludedCommitMessages: '', 
						excludedRegions: '', 
						excludedRevprop: '', 
						excludedUsers: '', 
						filterChangelog: false, 
						ignoreDirPropChanges: false, 
						includedRegions: '', 
						locations: [[cancelProcessOnExternalsFail: true, 
							credentialsId: 'e433b9f7-72aa-41c3-add0-cecss3ba7398', 
							depthOption: 'infinity', 
							ignoreExternalsOption: true, 
							local: "./aliPjo/$android/${userInput}", 
							remote: "svn://svn.kp.aliyu.com/hotclient/aliPjo/$android/${userInput}"]], 
						quietOperation: true, 
						workspaceUpdater: [$class: 'UpdateUpdater']])
					
					
					checkout([$class: 'SubversionSCM', additionalCredentials: [], 
						excludedCommitMessages: '', 
						excludedRegions: '', 
						excludedRevprop: '', 
						excludedUsers: '', 
						filterChangelog: false, 
						ignoreDirPropChanges: false, 
						includedRegions: '', 
						locations: [[cancelProcessOnExternalsFail: true, 
							credentialsId: 'e433b9f7-72aa-41c3-add0-cecss3ba7398', 
							depthOption: 'files', 
							ignoreExternalsOption: true, 
							local: "./RainVersion/$android/", 
							remote: "svn://svn.kp.aliyu.com/hotclient/aliPjo/$android/"]], 
						quietOperation: true, 
						workspaceUpdater: [$class: 'UpdateUpdater']])

				}
			} 

		}


		stage("打包热更资源文件") {
			steps {
				script { 
						sh label: 'tarhotclient', returnStatus: true, script: "[ ! -f RainVersion/$android/RainVersion.json ] && exit 1"
						sh label: 'tarhotclient', returnStatus: true, script: "[ ! -f RainVersion/$ios/RainVersion.json ] && exit 1"
						sh label: 'tarhotclient', returnStatus: true, script: "\\cp RainVersion/$android/RainVersion.json aliPjo/$android/ "
						sh label: 'tarhotclient', returnStatus: true, script: "\\cp RainVersion/$ios/RainVersion.json aliPjo/$ios/ "
						sh label: 'tarhotclient', returnStdout: true, script: "[ ! -d target ] && mkdir -pv target"
						sh label: 'tarhotclient', returnStdout: true, script: "tar  --exclude='*.svn' -zcvf target/hotclient.tar.gz aliPjo"
					}
			}
		}
		
		stage("传输文件到管理机并更新"){
			steps{
				script{
					sshPublisher(publishers: [sshPublisherDesc(configName: 'DevOps', 
						transfers: [sshTransfer(cleanRemote: false, excludes: '', 
							execCommand: 'sh /data/dev.scripts/update_hotclient.sh', 
							execTimeout: 120000, 
							flatten: false, 
							makeEmptyDirs: false, 
							noDefaultExcludes: false, 
							patternSeparator: '[, ]+', 
							remoteDirectory: '/data/updateapps/', 
							remoteDirectorySDF: false, 
							removePrefix: 'target/', 
							sourceFiles: 'target/hotclient.tar.gz')], 
						usePromotionTimestamp: false, 
						useWorkspaceInPromotion: false, 
						verbose: false)])
				}
			}
		
		}		
        
    }
}

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

jenkins-自动化打包部署 的相关文章

  • 詹金斯管道如果其他不工作

    我正在创建一个示例詹金斯管道 这是代码 pipeline agent any stages stage test steps sh echo hello stage test1 steps sh echo TEST stage test3
  • 从 Python 访问 802.11 无线管理帧

    我想从 Linux 上的 Python 嗅探 802 11 管理 探测请求 帧 这可以从 Scapy 中实现 如下所示 coding utf 8 from scapy all import def proc p if p haslayer
  • Linux“屏幕”的 Windows 等效项还是其他替代方案?

    我正在寻找一种在 Windows 环境中控制程序的方法 我希望它与 Linux 软件有点相似 screen 我搜索的原因是我需要使用标识符启动一个程序 在 Windows 上 这样我以后就能够关闭该特定程序 而无需关闭其他任何程序 即使实际
  • 查看 Linux 上的多核或多 CPU 利用率

    我有一个在 Linux 上运行的程序 我需要确定它如何利用所有 CPU 内核 有没有什么程序可以查看这些信息 跑过 top 命令并按下 1 查看各个核心
  • 如何在 Linux 中重新添加 unicode 字节顺序标记?

    我有一个相当大的 SQL 文件 它以 FFFE 的字节顺序标记开头 我使用 unicode 感知的 linux 分割工具将此文件分割成 100 000 行块 但是当将这些传递回窗口时 它确实not与第一个部分以外的任何部分一样 只是它具有
  • 在 debian wheezy amd64 上安装 ia32-libs

    我正在使用 Debian 7 喘息 amd64 uname a Linux tzwm debian 3 2 0 4 amd64 1 SMP Debian 3 2 51 1 x86 64 GNU Linux 我想安装ia32 libs在我的
  • 如何在jenkins中使用文件参数

    我正在詹金斯中执行参数化构建来计数 有 1 个文件参数的文件中的行数 它的文件位置是pqr 脚本文件的名称是linecount sh保存在远程服务器上 当我尝试使用命令执行它时sh linecount sh文件名 它在詹金斯中完美运行 但是
  • 如何在perl中使用O_ASYNC和fcntl?

    我想使用 O ASYNC 选项 当管道可以读取时 SIGIO 的处理程序将运行 但以下代码不起作用 任何人都可以帮助我吗 bin env perl use Fcntl SIG IO sub print catch SIGIO n my fl
  • Bash - 比较 2 个文件列表及其 md5 校验和

    我有 2 个列表 其中包含带有 md5sum 检查的文件 即使文件相同 列表也具有不同的路径 我想检查每个文件的 md5 和 我们正在讨论数千个文件 这就是为什么我需要脚本来仅显示差异 第一个列表是普通列表 第二个列表是文件的当前状态 我想
  • 套接字发送调用被阻塞很长时间

    我每 10 秒在套接字上发送 2 个字节的应用程序数据 阻塞 但发送调用在下面的最后一个实例中被阻塞超过 40 秒 2012 06 13 12 02 46 653417 信息 发送前 2012 06 13 12 02 46 653457 信
  • Ctrl-p 和 Ctrl-n 在 Docker 下表现异常

    For the life of me I can t seem to figure out why ctrl p and ctrl n don t work like they re supposed to under the Docker
  • aarch64 Linux 硬浮点或软浮点

    linux系统有arm64 有arm架构armv8 a 如何知道 Debian 运行的是硬浮动还是软浮动 符合 AAPCS64 GNU GCC for armv8仅提供硬浮动aarch64工具链 这与 armv7 a 的 GCC 不同 后者
  • 亚马逊 Linux - 安装 openjdk-debuginfo?

    我试图使用jstack在 ec2 实例上amazon linux 所以我安装了openjdk devel包裹 sudo yum install java 1 7 0 openjdk devel x86 64 但是 jstack 引发了异常j
  • 查找并删除超过 x 天的文件或文件夹

    我想删除超过 7 天的文件和文件夹 所以我尝试了 17 07 14 email protected cdn cgi l email protection find tmp mindepth 1 maxdepth 1 ctime 7 exec
  • 由于 abi::cxx11 符号导致的链接问题?

    我们最近收到一份报告 因为GCC 5 1 libstdc 和双 ABI http gcc gnu org onlinedocs libstdc manual using dual abi html 它似乎Clang 不知道 GCC 内联名称
  • Jenkins 和 Gitlab 不获取代码

    当我设置自己的项目时 我遇到了问题 我开始配置我的 Jenkins 作业 我这样做了 在 Jenkins 上为 gitlab 用户帐户创建凭证 在 gitlab 上创建访问令牌并在 Jenkins 中使用此令牌来启用它 and this i
  • 如何在多分支管道中为特定分支设置下一个版本号

    我正在尝试以编程方式为我们的发布分支设置下一个版本号 但我遇到了一个问题 以下是我尝试过的两种方法 def job Jenkins instance getItem master job nextBuildNumber env BUILD
  • 如何仅在特定错误退出值(0 除外)上将 Jenkins 构建标记为成功?

    当我运行Execute shell构建步骤来执行脚本并且该脚本返回0 Jenkins将构建标记为SUCCESS 否则它将其标记为FAILURE这是预期的默认行为0表示没有错误 任何其他值表示有错误 有没有办法将构建标记为SUCCESS仅当返
  • 如果输入被重定向则执行操作

    我想知道如果我的输入被重定向 我应该如何在 C 程序中执行操作 例如 假设我有已编译的程序 prog 并且我将输入 input txt 重定向到它 我这样做 prog lt input txt 我如何在代码中检测到这一点 一般来说 您无法判
  • Java时区混乱

    我正在运行 Tomcat 应用程序 并且需要显示一些时间值 不幸的是 时间快到了 还有一个小时的休息时间 我调查了一下 发现我的默认时区被设置为 sun util calendar ZoneInfo id GMT 08 00 offset

随机推荐

  • VueX报错:Uncaught TypeError: Object(...) is not a function at resetStoreState (vuex.esm-browser.js?

    当我们使用Vuex并运行项目时 发现浏览器报如下错误 这是因为Vuex 版本过高所导致的 我们去package json中查看我们当前的Vuex版本为 vuex 4 0 2 只需重新安装低版本的Vuex就可以解决问题 我们在终端输入 npm
  • Frechet Distance距离算法详解

    Frechet Distance 它是计算两曲线距离的算法 用来判断两曲线的相似度 计算结果越小说明相似度越高 基于python实现该算法 需要下载numpy包 向量库 import math import numpy as np 这个方法
  • jquery获得当前元素父级元素_如何使用jQuery获取父元素

    jQuery获取父元素我们有三种方式可以实现 parent parents closest 下面我们将介绍jQuery获取父元素的这三种方式以及一个具体的示例 web前端学习 打造全网web前端全栈资料库 总目录 看完学的更快 掌握的更加牢
  • 蛋白+小分子配体md(详细保姆教程)

    继续搬一点近期飞书文档模拟的到博客里 参考博客 Gromac中文教程 https jerkwin github io GMX GMXtut 5 E6 A6 82 E8 BF B0 https www jianshu com p b10fe4
  • 基于Python的爬虫设计与数据分析 计算机毕业设计源码37836

    目 录 摘要 1 绪论 1 1课题背景 1 2研究目的及意义 1 3爬虫技术 1 4django框架介绍 2 1 5论文结构与章节安排 3 2 基于Python的爬虫设计与数据分析分析 4 2 1 可行性分析 4 2 2 系统流程分析 4
  • 用户积分营销的三种方式

    私域流量时代下 商家们都纷纷搭建私域流量池来实现引流 增长 但是如果商家只是单纯地通过搭建私域流量池来实现用户进行转化 出来的效果是非常缓慢的 同时对于用户留存以及用户粘性的提升帮助不是太大 因此 我们需要设计一种新的玩法去进行私域流量池运
  • 设置DialogFragment背景透明

    设置DialogFragment背景透明的方法如下 1 在onCreateView 方法中设置弹窗内部的背景透明 Override public View onCreateView LayoutInflater inflater Nulla
  • postman下载文件乱码

    环境 postman v8 0 7 遇到的问题 postman下载文件时乱码 解决方案 不要用send 用边上小箭头里的send and Download
  • JS 鼠标粒子效果

  • UE虚幻引擎教程_生成云平台指定路径下的exe文件

    市面上大量优秀的游戏都是基于UE制作的 UE虚幻引擎制作的作品可以在windows mac linux以及ps4 x boxone ios android甚至是html5等平台上运行 本文介绍了UE虚幻引擎如何生成云平台指定路径下的EXE
  • 创建操作符(初稿)

    just 将一个或多个对象转换成发射这个或这些对象的一个Observable from 将一个Iterable 一个Future或者一个数组转换成一个Observable create 使用一个函数从头创建一个Observable defe
  • vim 插入模式小技巧

    1 vim插入模式快捷键 ctrl h 删除上一个字符 ctrl w 删除上一个单词 ctrl u 删除当前行 这三个快捷键也适用与终端中 2 终端中的快捷键 ctrl a 快速移动到行首 ctrl e 快速移动到行末 ctrl b 向前移
  • 面试题-网络

    以下所有整理内容都是我从第一次面试开始 将所有遇到的问题整合后的结果 所有的内容都是我在面试中真实遇到的问题 有BAT这样的大厂 也有很多小厂 在面试超过20家之后 遇到的绝大多数问题都开始重复 这份资料给我的面试带来了非常多的便利 现在我
  • 大数据单机学习环境搭建(12)Azkaban的简单使用

    专题 大数据单机学习环境搭建和使用 1 登录和密码修改 2 新建工程 2 1新建工程 2 2创建zip文件 2 3添加文件到项目 3 任务执行 3 1立即执行 3 2 设置定时任务 4 依赖任务建立 大数据单机学习环境搭建 12 Azkab
  • OpenCV Mat数据类型指针ptr的使用

    常用形式 mat ptr
  • leetcode-340 Longest Substring with at most k-distinct characters(至多包含 K 个不同字符的最长子串)

    题目描述 给定一个字符串 s 找出 至多 包含 k 个不同字符的最长子串 T 示例 1 输入 s eceba k 2 输出 3 解释 则 T 为 ece 所以长度为 3 示例 2 输入 s aa k 1 输出 2 解释 则 T 为 aa 所
  • 【项目实战】SpringBoot多环境(dev、test、prod)配置

    一 三套环境介绍 1 1 开发环境 dev 开发环境是程序猿们专门用于开发的服务器 配置可以比较随意 为了开发调试方便 一般打开全部错误报告 1 2 测试环境 test 一般是克隆一份生产环境的配置 一个程序在测试环境工作不正常 那么肯定不
  • 用scrapy爬虫无数据

    TOC 用scrapy爬虫不到数据 求大神解决 运行后终端显示 D BaiduNetdiskDownload jobui gt C Users admin AppData Local Programs Python Python36 32
  • 【转载】【stm32】一键下载电路

    原创Nerute 2018 11 18 01 11 10 2361 首先感谢正点原子的开源资料 下面贴上正点原子一键下载电路的原理图 很显然 核心是一块CH340芯片 什么是CH 请看手册 再来就是引脚说明 了解一键之前 我们还得知道 st
  • jenkins-自动化打包部署

    环境 centos 7 2或者更新 rmp包 官方下载地址 Redhat Jenkins Packages java 1 8 0 安装 root jenkins yum install wget java 1 8 0 y root jenk