jenkisn的简单使用介绍

新建jenkins项目

登入jenkins后选择最上角的新建

输出项目名后选择下面的项目风格。当你无法确定的时候选择自由风格即可。

配置jenkisn项目

项目配置一共有6步操作

General,源码管理,构建触发器,构建环境,构建,构建后操作

一、General综合

这步主要是定义项目名,项目的权限管理,构建项目数的保存天数或个数以及局部参数定义。

A、项目权限管理

勾选“启动项目安全”,添加需要授权的用户名。然后给用户设置项目访问权限。这个权限设置的级别是低于“系统管理”中的权限设置。

B、构建项目数

这块是用户保存项目构建的保存时间。当构建最大个数为10 的时候,构建历史中将会保存10个历史版本,方便后面的回滚操作。

C、参数定义

勾选参数化构建,定义你需要的参数,方面后的脚本需要。(本文中使用的源码库是git)

Git分支参数:Branch,回滚参数:Rollback,项目参数:ProjectName等等,可以根据需要自己定义参数。此参数自在此项目中有效。

D、JDK版本选择

此项目是java项目,需要用到maven编译。Jdk的版本一定要选择正确。Jenkins服务器可以安装多个版本的jdk。在“系统管理”-“Global Tool Configuration”中选择jdk安装

设置JDK的安装目录。

在此处要选择开始使用的jdk版本,版本不同可能导致很多奇怪的问题。

三、源码管理

这里采用的源码是git

此处选择项目的git代码路径及登入账号密码,也可以使用ssh免密方式。分支选项使用上面定义的参数“Branch”。

其他无需配置

四、构建环境

因为构建触发器没有使用到,这里不做介绍。

勾选“Delete workspace before build starts”,每次构建删除jenkins数据目录下本项目上次的构建workspace。

五、构建

为了让回滚更加方便快捷,此处不单独使用maven编译选项,而是把maven编译命令放在execute shell中执行。

首先判断RollBack这个参数是否传值。默认是为空。如果RollBack不为空则跳过编译步骤直接下一步。RoolBack参数在构建项目的时候传值的

在Execute shell脚本中定义了一个参数buildName,这个参数是为了更改构建历史中buildID的名称是设定的

只显示buildID,反馈的信息很少。适当的时候我们需要添加点额外的信息。

脚本中我们把buildName放到一个文件中,在这个配置中我们从这个文件中获取数据更新buildID

执行完脚本,java代码就编译好了,之后就是传输工作。我们采用的数据传输是SSH

SSH Server需要在“系统管理”-“系统配置”下配置

Name:定义名称,最好按照一定格式命名。如果SSH Server比较多的时候不至于混乱

Hostname:主机IP

Username:运行容器的用户名

Remote Directory:目标服务器的数据存储路径

选择好SSH Server后配置“Transfers”,这个根据你的实际情况自己配置,传输完成后执行“Exec command”,里面的脚本是存放在目标服务器上,根据自己的需求定义。在deploy.sh脚本中设置获取“RollBack”参数作为回滚操作。

下面是deploy.sh脚本

#!/bin/bash
# ProjectName="cloudfactory"
# TomcatName="tomcat_cloudfactory_8080"
# BasePath="/data/websrv"
#                    $1             $2           $3         $4           $5
# sh deploy.sh ${ProjectName} ${TomcatName} ${BUILD_ID} ${BasePath} ${rollbackNo}
 
ProjectPath="$4/builds/$1"
TomcatPath="$4/$2"
LogFile="upgrade.log"
TomLog="tomcat.log"
 
if [ "$5" != "" ] && [[ "$5" =~ ^[[:digit:]]*$ ]]; then
    if [ ! -d $ProjectPath/$5 ]; then
        echo "rollback to $5 failed"
        exit 1
    else
        echo "本次构建发布 执行了回滚操作 回滚编号为:$5"
        echo "rollback to $5 edition"
        ln -snf $ProjectPath/$5/$1 $TomcatPath/webapps/ROOT
    fi
else
    if [ -L $ProjectPath/successful ]; then
        LastSuccess=$(tail -1 $ProjectPath/$LogFile)
        rm -rf $ProjectPath/successful && ln -snf $ProjectPath/$3/$1 $ProjectPath/successful
    else
        ln -snf $ProjectPath/$3/$1 $ProjectPath/successful
    fi
 
    echo $3 >> $ProjectPath/$LogFile
 
    [ -d $TomcatPath/webapps/ROOT -o -L $TomcatPath/webapps/ROOT ] && rm -rf $TomcatPath/webapps/ROOT
 
    if [ -d $TomcatPath ]; then
        [ -L $TomcatPath/webapps/ROOT ] || ln -snf $ProjectPath/successful $TomcatPath/webapps/ROOT
    else
        echo "ERROR" $1 $(date) >> $ProjectPath/$TomLog && exit 1
    fi
fi
 
cd $ProjectPath
ls -dt * | grep ‘^[0-9]\{1,\}$‘ | awk ‘{if(NR>10){print $0}}‘ | xargs rm -rf

运行完deploy.sh脚本后运行容器重启脚本,这个根据自己实际情况编写

Restart.sh脚本

#!/bin/bash
 
BASE_DIR=$(pwd)
rm -rf $BASE_DIR/work/*
rm -rf $BASE_DIR/temp/*
 
STATE=$(ps -ef | grep $BASE_DIR | grep -v grep | wc -l)
if [ $STATE != 0 ]; then
    ps -ef | grep $BASE_DIR | grep -v grep | awk ‘{print $2}‘ | xargs kill -9
    echo "$BASE_DIR kill success!"
else
    echo "$BASE_DIR pid not exsit!"
fi
 
mv $BASE_DIR/logs/catalina.out $BASE_DIR/logs/catalina.last
sh $BASE_DIR/bin/startup.sh
 
STATE=$(ps -ef | grep $BASE_DIR | grep -v grep | wc -l)
if [ $STATE != 0 ]; then
    echo "$BASE_DIR startup success!"
else
    echo "$BASE_DIR startup failed, please check you config!"
fi
 
echo "[INFO] ------------------------------------------------------------------------"
echo "Show $BASE_DIR process status!"
ps -ef | grep -v grep | grep --color=auto $BASE_DIR
echo "[INFO] ------------------------------------------------------------------------"
时间: 2024-08-29 08:29:52

jenkisn的简单使用介绍的相关文章

简单的介绍下WPF中的MVVM框架

最近在研究学习Swift,苹果希望它迅速取代复杂的Objective-C开发,引发了一大堆热潮去学它,放眼望去各个培训机构都已打着Swift开发0基础快速上手的招牌了.不过我觉得,等同于无C++基础上手学习C#一样,即使将来OC被淘汰,那也是N年之后的事情,如果真的要做IOS开发,趁现在Swift才刚开始,花那么几个月去了解一下OC绝对是一件有帮助的事情. 扯远了,我前几天刚接触到一个叫做mvvm的框架,发现很有意思,带着学习的态度来写点东西,不足之处一起研究.还有一个很重要的原因,我发现不少同

vue学习笔记——简单的介绍以及安装(一)

学习编程需要的是 API+不断地练习^_^ Vue官网:https://cn.vuejs.org/ 菜鸟教程:http://www.runoob.com/vue2/vue-tutorial.html 1.简单的介绍 Vue.js(读音 /vju?/, 类似于 view) 是一套构建用户界面的渐进式框架. Vue 只关注视图层, 采用自底向上增量开发的设计. Vue 的目标是通过尽可能简单的 API 实现响应的数据绑定和组合的视图组件. Vue 学习起来非常简单,本教程基于 Vue 2.1.8 版

【转】简单了介绍js中的一些概念(词法结构) 和 数据类型(部分)。

1 , javascript字符集: javascript采用的是Unicode字符集编码. 为什么要采用这个编码呢? 原因很简单,16位的Unicode编码可以表示地球人的任何书面语言.这是语言 国际化的一个重要特征.(大家也许见过用中文写脚本,比如:function 我的函数() {} ); Javascript中每个字符都是用2个字节表示的.(因为是16位编码) 2 ,大小写敏感: js是一种区分大小写的语言. 注意下:以前我也犯过的错误. HTML是不区分大小写的.经常看见有人这么写, 

A*算法最简单的介绍

A*搜寻算法,俗称A星算法,作为启发式搜索算法中的一种,这是一种在图形平面上,有多个节点的路径,求出最低通过成本的算法.常用于游戏中的NPC的移动计算,或线上游戏的BOT的移动计算上.该算法像Dijkstra算法一样,可以找到一条最短路径:也像BFS一样,进行启发式的搜索. A*算法最为核心的部分,就在于它的一个估值函数的设计上:        f(n)=g(n)+h(n) 其中f(n)是每个可能试探点的估值,它有两部分组成:    一部分,为g(n),它表示从起始搜索点到当前点的代价(通常用某

Python 模块简单的介绍

Python模块的学习: 1.os模块: 下面只对os模块中几个比较常用的方法做一些简单的示例: os.system():这个方法在shell中体现的比较多,在dos命令行中也可以执行,下面就以在dos命令行中为例,说下system方法的作用(通过这个示例,大家对system方法的实用就一目了然了): 1 >>> import os 2 >>> print(os.system('ls')) 3 'ls' 不是内部或外部命令,也不是可运行的程序 4 或批处理文件. 5 1

Mybatis缓存(1)--------系统缓存及简单配置介绍

前言 Mybatis的缓存主要有两种: 系统缓存,也就是我们一级缓存与二级缓存: 自定义的缓存,比如Redis.Enhance等,需要额外的单独配置与实现,具体日后主要学习介绍. 在这里主要记录系统缓存的一些简单概念, 并没有涉及原理.其中会涉及Mybatis的相关配置以及生命周期等. 主要参考资料:<深入浅出Mybatis基础原理与实战>,http://www.mybatis.org/mybatis-3/zh/index.html 1.Mybatis简单配置介绍 本文介绍的是基于XML的配置

MKV怎么转AVI格式?转换的简单方法介绍

MKV怎么转AVI格式?有很多时候都需要将视频文件进行不同程度的转换,那么下面小编就给大家简单的介绍一下将MKV转AVI格式的方法,希望可以帮助到大家. 步骤一:我们可以直接进入到迅捷PDF在线转换器网站中,通过在浏览器上的搜索然后进入到在线中进行:步骤二:进入到首页中,找到音视频转换中的MKV转AVI格式,然后点击进入即可:步骤三:进入之后进行视频文件的选择,将mkw格式的视频点击选择到界面中,然后点击视频文件进行选择,将视频文件选择到界面中:步骤四:选择好之后就可以进行视频文件转换,点击开始

EVE-NG简单入门介绍

此篇文章简单的介绍下模拟器EVE-NG的使用,具体包括Dynamips设备导入与运行,IOL设备的导入与运行,QEMU设备的导入与运行,客户端软件的安装,物理网络与虚拟网络的结合等. 一.导入镜像 Dynamips是由法国人Chris Fillot于2005年发布的用于模拟Cisco设备的模拟器,它可以运行标准的IOS镜像,虽然此模拟器比较陈旧,但仍然有很多网工愿意使用.EVE-NG支持Cisco IOS 1710.3725与7206,这些镜像可从思科官网或互联网上下载到.推荐使用WinSCP向

ios开发入门篇(二):Objective-C的简单语法介绍

一:面向对象的思想 objective-c与C语言的编程思想不同,C语言是面向过程的编程,而objective-c则是面向对象的编程,所谓面向对象,我个人的理解,就是抽象.将具有一定共同点的实物抽象成一个个类,对其进行封装,继承,对实物本身进行操作. 二:Objective-C的历史 objective-c是以SmallTalk为基础,建立在C语言之上,并兼容c与c++的一门编程语言.20世纪80年代早期由 Brad J.Cox设计,2007年苹果公司发布了objective-c 2.0,并在i