持续集成工具之jenkins部署篇(下篇)

2022-03-10 13:27:57 浏览数 (1)

一、前言

上篇主要介绍jenkins部署环节时的基础环境配置,本篇介绍如何利用jenkins把项目发布到远程服务器中

二、项目部署发布

1、新建任务

输入任务名称,选择构建maven项目,点击确定

2、参数化构建过程(可选)

注:参数化构建过程可以提供maven构建时所需要的键值对参数,比如下图

3、源码管理

根据项目选择版本控制,本文是以svn为案例,因此选择Subversion

填入svn远程服务器地址:http://localhost/svn/Muse-Workflow@HEAD,@Head意思是取svn服务器上最新版本,选择已经配置好的svn凭证(即:访问svn服务器的用户名和密码)

4、构建环境

选择Send files or execute commands over SSH after the build runs

5、构建环境(参数介绍)

a、Sourec files 这个是配置需要执行的jar,war或者其他压缩包 b、Remove prefix 这个是移除前缀目录的,本项目的压缩包在根目录下面的target下面,所以要移除target这个目录 c、Remote directory 这个目录是要传送压缩包包到目标服务器的目录。 d、Exec command 这个是要执行的远程脚本目录,部署,达到自动化部署的目的,如果不写脚本,那就jenkins只能帮你把压缩包包传到目标服务器而已。 e、构建环境中勾选“Add timestamps to the Console Output”,代码构建的过程中会将日志打印出来

6、Build

输入maven打包命令

代码语言:javascript复制
clean package  -P dev -Dlogstash.host=${logstashHost} -Dfile_server_addr=${fileServerAddr} -Dfastdfs.tracker_servers=${fastdfsTrackerServers} -Dmaven.test.skip=true点击保存

三、运行构建

选择 Build with Parameters

查看控制台输出

从日志可以看出构建并发布成功

四、总结

以上就是通过jenkins发布项目到远程服务器的例子,如果公司自己内部的开发的公共jar包,要记得及时更新到公司内部maven私服,以免项目发布失败。至于如何通过nexus建立maven仓库私服,改天分享个教程

五、附录部分脚本参数

1、本例中解压zip并执行发布命令脚本

代码语言:javascript复制
cd /root/oaCore/${project_name}/${BUILD_TIMESTAMP}
ls -a | sort -r | head -n 1 | xargs unzip
cd $(ls -a | sort -r | head -n 1 | xargs -I {} basename {} .zip)
sh install.sh
sleep 3
service ${project_name} start

2、springboot项目通用执行脚本

代码语言:javascript复制
#!/bin/bash

SpringBoot=$2

if [ "$1" = "" ];
then
    echo -e "33[0;31m 未输入操作名 33[0m  33[0;34m {start|stop|restart|status} 33[0m"
    exit 1
fi

if [ "$SpringBoot" = "" ];
then
    echo -e "33[0;31m 未输入应用名 33[0m"
    exit 1
fi

function start()
{
    count=`ps -ef |grep java|grep $SpringBoot|grep -v grep|wc -l`
    if [ $count != 0 ];then
        echo "$SpringBoot is running..."
    else
        echo "Start $SpringBoot success..."
        nohup java -jar $SpringBoot > /dev/null 2>&1 &
    fi
}

function stop()
{
    echo "Stop $SpringBoot"
    boot_id=`ps -ef |grep java|grep $SpringBoot|grep -v grep|awk '{print $2}'`
    count=`ps -ef |grep java|grep $SpringBoot|grep -v grep|wc -l`

    if [ $count != 0 ];then
        kill $boot_id
        count=`ps -ef |grep java|grep $SpringBoot|grep -v grep|wc -l`

        boot_id=`ps -ef |grep java|grep $SpringBoot|grep -v grep|awk '{print $2}'`
        kill -9 $boot_id
    fi
}

function restart()
{
    stop
    sleep 2
    start
}

function status()
{
    count=`ps -ef |grep java|grep $SpringBoot|grep -v grep|wc -l`
    if [ $count != 0 ];then
        echo "$SpringBoot is running..."
    else
        echo "$SpringBoot is not running..."
    fi
}

case $1 in
    start)
    start;;
    stop)
    stop;;
    restart)
    restart;;
    status)
    status;;
    *)

    echo -e "33[0;31m Usage: 33[0m  33[0;34m sh  $0  {start|stop|restart|status}  {SpringBootJarName} 33[0m
33[0;31m Example: 33[0m
      33[0;33m sh  $0  start esmart-test.jar 33[0m"
esac

0 人点赞