自动化部署--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插件配置去掉。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容