jenkins-自动化打包部署

这篇具有很好参考价值的文章主要介绍了jenkins-自动化打包部署。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

环境:

        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 并进行配置

jekenis,linux,Linux tools,jenkins,自动化,运维

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

jekenis,linux,Linux tools,jenkins,自动化,运维

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

jekenis,linux,Linux tools,jenkins,自动化,运维

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

jekenis,linux,Linux tools,jenkins,自动化,运维

开始登录:

jekenis,linux,Linux tools,jenkins,自动化,运维

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

Maven Release Plug-in

Publish Over SSH

Multijob

jekenis,linux,Linux tools,jenkins,自动化,运维

jekenis,linux,Linux tools,jenkins,自动化,运维

jekenis,linux,Linux tools,jenkins,自动化,运维

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

配置jdk

jekenis,linux,Linux tools,jenkins,自动化,运维

配置maven

jekenis,linux,Linux tools,jenkins,自动化,运维

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

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

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

jekenis,linux,Linux tools,jenkins,自动化,运维

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

jekenis,linux,Linux tools,jenkins,自动化,运维

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

jekenis,linux,Linux tools,jenkins,自动化,运维

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

jekenis,linux,Linux tools,jenkins,自动化,运维

jekenis,linux,Linux tools,jenkins,自动化,运维

jekenis,linux,Linux tools,jenkins,自动化,运维

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

jekenis,linux,Linux tools,jenkins,自动化,运维

jekenis,linux,Linux tools,jenkins,自动化,运维

jekenis,linux,Linux tools,jenkins,自动化,运维

jekenis,linux,Linux tools,jenkins,自动化,运维


下面说下简单的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)])
				}
			}
		
		}		
        
    }
}

jekenis,linux,Linux tools,jenkins,自动化,运维文章来源地址https://www.toymoban.com/news/detail-649226.html

到了这里,关于jenkins-自动化打包部署的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 前端项目打包和自动化部署(jenkins+gitee+nginx)

    1. 传统的开发模式 在传统的开发模式中,开发的整个过程是按部就班就行: 但是这种模式存在很大的弊端: 工作的不协调:开发人员在开发阶段,测试和运维人员其实是处于等待的状态。等到测试阶段,开发人员等待测试反馈bug,也会处于等待状态。 线上bug的隐患:项目准

    2024年02月01日
    浏览(47)
  • Jenkins+Maven+Gitlab+Tomcat 自动化构建打包,部署

    1、安装服务 Jenkins工具、环境、插件配置 全局变量配置 Manage JenkinstoolsJDK 安装 安装插件 Deploy to container 安装此插件,才能将打好的包部署到tomcat上     配置国内mvn源 创建maven项目 1  2   3    4    5    6    7    8     9 10  

    2024年02月05日
    浏览(58)
  • Linux下Jenkins自动化部署SpringBoot应用

    官方网址: https://www.jenkins.io/ 2.1 centos下命令行安装 访问官方,点击文档: 点击 Installing Jenkins: 点击 Linux: 选择 Red Hat/Alma/Rocky,就可以看到相关的安装命令: 其它版本的安装请参考: https://pkg.jenkins.io/redhat-stable/ 2.2 错误处理 2.2.1 错误1 如果报错: 请使用下面的命令:

    2024年02月06日
    浏览(41)
  • Jenkins自动化构建部署前端项目(Linux+gitee)

    本文讲述了Jenkins自动化构建部署前端项目,内容包括Linux系统安装Jenkins、如何配置构建项目并发布到目标服务器。 因公司系统项目众多,前端项目打包麻烦,项目代码管理混乱,因此需要gitee+Jenkins做自动化构建,优化项目打包流程及代码管理。 本次教程可实现最简单的自动

    2024年02月03日
    浏览(57)
  • 【Linux】云服务器自动化部署VuePress博客(Jenkins)

    博主此前是将博客部署在 Github Pages (基于 Github Action)和 Vercel 上的,但是这两种部署方式对于国内用户很不友好,访问速度堪忧。因此将博客迁移到自己的云服务器上,并且基于 Jenkins (一款开源持续集成工具)实现本地推送代码后,自动化集成部署 环境 云服务器:Cent

    2024年02月13日
    浏览(50)
  • Jenkins自动化打包脚本

    jenkins可以设置定时任务打包,也已手动点按钮打包,还可以通过执行http请求打包,今天我们就通过shell脚本,通过curl命令进行jenkins打包。 2.1 在jenkins上构建项目 设置触发器

    2024年02月13日
    浏览(43)
  • Android使用Jenkins自动化打包

    了解Jenkins工具 Jenkins在Windows系统下的环境搭建 Jenkins 的Android 构建环境配置 创建FreeProject Item,配置Android Gradle工程构建环境 Jenkins格言: Build great things at any scale 。 Jenkins是一款开源CICD软件,提供超过1000个插件用于支持各种自动化任务,包括构建、测试和部署软件。 Jenkins 支

    2024年02月10日
    浏览(45)
  • Unity 基于Jenkins自动化打包流程

    什么是Jenkins?         Jenkins是一款开源 CICD 软件,用于自动化各种任务,包括构建、测试和部署软件。Jenkins 支持各种运行方式,可通过系统包、Docker 或者通过一个独立的 Java 程序。 Jenkins的下载与安卓 直接搜索jenkins进入官网下在LTS(稳定版本)下载地址:https://www.jen

    2024年02月08日
    浏览(42)
  • .NET Core部署到linux(CentOS)最全解决方案,入魔篇(使用Docker+Jenkins实现持续集成、自动化部署)

    通过前面三篇: .NET Core部署到linux(CentOS)最全解决方案,常规篇 .NET Core部署到linux(CentOS)最全解决方案,进阶篇(Supervisor+Nginx) .NET Core部署到linux(CentOS)最全解决方案,高阶篇(Docker+Nginx 或 Jexus) 通过前面三篇文章的介绍,我们已经对.net core多方案部署到linux下有了非常全面的认识

    2024年02月02日
    浏览(45)
  • uniapp:HbuildeX项目实现jenkins自动化打包上传

    前序: 基于HBuilderX创建的项目。 配置uniapp 指令式打包APP、微信小程序、H5。 ubuntu系统上的jenkins部署基础指令,发送给windows服务器上,windows服务器使用HBuilderX软件的cli.exe执行相关cli命令打包,然后jenkins再调用接口下载打包后的文件。 可实现多线程同时打包。 大致流程:

    2024年02月16日
    浏览(62)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包