自动化部署--Jenkins--Maven构建(二)

一、码云配置

  1. 任务全局配置


    全局配置
  2. 源码管理配置


    认证配置

    源码管理配置

二、Maven构建配置

clean package -pl nevo-register -am
Maven构建配置

三、构建触发器配置

  1. build whenever a snapshot dependency is built,当job依赖的快照版本被build时,执行本job。
  2. 触发远程构建 (例如,使用脚本):这里使用于自动化构建,拼接url后写入代码中可以实现在脚本或者工具执行构建。

什么是远程构建呢?
上面提示你了,通过复制这个URL地址,在别的机器上打开这个URL就相当于给这个jenkins服务器发送了一个构建请求。只不过这个请求是在其他人电脑上发出的。这里重点来看看URL的组成,
第一个参数JENKINS_URL,这里我们写IP地址或者机器hostname,
第二个参数TOKEN_NAME就是你在身份验证令牌文本输入框输入的值。这里我们把令牌设置成123456,然后我就在我机器的另外一个浏览器来模拟远程构建,这个时候我的远程构建地址就是这样的:localhost:8080/job/nevo-register/build?token=123456

远程构建

构建测试:
构建地址:http://192.168.77.129:8080/job/nevo-register/build?token=123456
构建列表

构建请求

远程构建

  1. build after other projects are built,当本job依赖的job被build时,执行本job
    Projects to watch输入任务名称的名称:


    构建后触发

    启动第一个Job完成后,就能接着启动第二个Job了。

  2. Build periodically 周期性进行项目构建,这个是到指定的时间必须触发构建任务
    定时构建语法:

* * * * *
(五颗星,中间用空格隔开)
第一颗*表示分钟,取值0~59
第二颗*表示小时,取值0~23
第三颗*表示一个月的第几天,取值1~31
第四颗*表示第几月,取值1~12
第五颗*表示一周中的第几天,取值0~7,其中0和7代表的都是周日
1.每30分钟构建一次:
H/30 * * * *
2.每2个小时构建一次
H H/2 * * *
3.每天早上8点构建一次
0 8 * * *
4.每天的8点,12点,22点,一天构建3次
0 8,12,22 * * *
(多个时间点,中间用逗号隔开)
  1. Build when a change is pushed to GitLab. GitLab webhook URL: http://192.168.77.129:8080/project/nevo-register
    GitLab 项目构建触发规则。(这个是管理GitLab 上代码有变动时构建)

  2. Gitee webhook 触发构建,需要在 Gitee webhook 中填写 URL: http://192.168.77.129:8080/project/nevo-register
    码云项目构建触发规则。(这个是管理码云上代码有变动时构建)
    新建码云仓库WebHook:
    进入源码管理配置中设置的码云仓库中,进入管理 -> WebHooks。

    进入管理

    WebHooks

    添加WebHooks:
    添加WebHooks

    配置

    添加WebHook

    注:使用Hook功能,要求jenkins必须布署在公网。

  3. GitHub hook trigger for GITScm polling
    GitHub项目构建触发规则。(这个是管理GitHub上代码有变动时构建)

  4. Poll SCM 设置定时检查代码仓库是否有变更,有变更则构建
    例:

H/5 * * * *     

表示每隔五分钟去检查一遍代码仓库,如果代码发生变化则执行构建,否则不构建。

四、 构建后配置

步骤流程:

  1. 设定java环境变量
  2. 创建备份
  3. 杀掉原有服务进程
  4. 启动服务
# 定义日期
DATE=$(date +%Y%m%d)
# 配置环境变量
export JAVA_HOME PATH CLASSPATH
# 定义环境变量
JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk
PATH=$JAVA_HOME/bin:$JAVA_HOME/jre/bin:$PATH
CLASSPATH=.:$JAVA_HOME/lib:$JAVA_HOME/jre/lib:$CLASSPATH
# 定义目录
DIR=/root/nevo
# 定义源目录,此地址一定要查看生成的具体实际jar包地址
BASE_DIR=/var/lib/jenkins/workspace/nevo-register/nevo-register/target/
# 执行cd命令并 显示jar文件
JARFILE=`cd $BASE_DIR && ls *.jar`
# 输出jar文件信息
echo $JARFILE
# 判断目录是否存在
if [ ! -d $DIR/backup ];then
   mkdir -p $DIR/backup
fi
cd $DIR
# 判断文件是否存在
if [ ! -f "$JARFILE" ];then
echo "文件不存在"
else
# 移动文件到备份目录
mv $JARFILE backup/$JARFILE-$DATE
fi
# 当前文件名
CURFILE=nevo-register-1.0.0
# 获取ID
tpid=`ps -ef|grep $CURFILE|grep -v grep|grep -v kill|awk '{print $2}'`
echo $tpid
# 如果进程存在,将其杀死
if [ ${tpid} ]; then
    echo 'Stop Process...'
    kill -15 $tpid
fi
# 间隔5秒
sleep 5
# 获取id数据
tpid=`ps -ef|grep $CURFILE|grep -v grep|grep -v kill|awk '{print $2}'`
echo $tpid
# 杀死该进程
if [ ${tpid} ]; then
    echo 'Kill Process!'
    kill -9 $tpid
else
    echo 'Stop Success!'
fi
# 移动文件到指定目录
mv -f /var/lib/jenkins/workspace/nevo-register/nevo-register/target/$JARFILE .

# 运行jar
# nohup java -jar springboot.jar &

nohup java -jar $JARFILE >log.file 2>&1 &

OLD_BUILD_ID=$BUILD_ID  
echo $OLD_BUILD_ID  
BUILD_ID=dontKillMe 
nohup java -jar $JARFILE >log.file 2>&1 &
sleep 3s
# 改回原来的BUILD_ID值  
BUILD_ID=$OLD_BUILD_ID  
echo $BUILD_ID

if [ $? = 0 ];then
        sleep 30
        tail -n 50 log.file
fi

cd backup/
ls -lt|awk 'NR>5{print $NF}'|xargs rm -rf
发布成功

五、查看服务

服务查看

六、常见问题:

  1. 解决jenkins自动杀掉衍生进程
BUILD_ID=dontKillMe 

  1. 普通jar包打包问题
   <build>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <configuration>
                    <source>1.8</source> <!--指明源码用的Jdk版本-->
                    <target>1.8</target> <!--指明打包后的Jdk版本-->
                </configuration>
            </plugin>
        </plugins>
    </build>

并且将父依赖的SpringBoot插件配置去掉。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 199,064评论 5 466
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 83,606评论 2 376
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 146,011评论 0 328
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 53,550评论 1 269
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 62,465评论 5 359
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 47,919评论 1 275
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,428评论 3 390
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,075评论 0 254
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,208评论 1 294
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,185评论 2 317
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,191评论 1 328
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 32,914评论 3 316
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,482评论 3 302
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,585评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,825评论 1 255
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,194评论 2 344
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 41,703评论 2 339

推荐阅读更多精彩内容