流程:

     1.开发人员上传代码到Git

      2.jenkins通过插件从Git上拉取项目

      3.jenkins用maven打包代码

       4.jenkins将打包好的代码上传至目标服务器

        5.jenkins运行服务器上的命令脚本启动项目

下载安装:

1:下载jenkins:jenkins-2.204.4.zip   解压 ; 根据页面指示获取密码进入jenkins

2:可以选择推荐插件安装(慢的一B,还会下载不下来),选择右边插件(什么插件都不选 选择无 点击确认)

3:注册帐号和密码,成功后会弹出jenkins默认端口访问地址。(因为默认端口是8080,如过需要修改可以设置18080(在jenkins安装目录下找到jenkins.xml修改端口,然后重新启动jenkins就可以了(localhost:8080/restart))

下载插件:

    这里推荐一种最快而团不会出什么问题: 

        1:找到Manage Jenkins下面的  Manage Plugins    选择最右边的Advancde(高级)

        2:将最下面的插件地址更换为清华的加速地址:https://mirrors.tuna.tsinghua.edu.cn/jenkins/updates/update-center.json

              注意:有的时候更换镜像之后下载插件还是走的官方地址

                        原因:配置了清华的镜像之后他还是走的jenkins官方去拉取的,是因为清华镜像的配置文件里面的插件下载地址并                                     不是指向的清华镜像,仍然指向的是jenkins官方的地址,我的解决方案是把jenkins官方的地址通过nginx吞掉                                     直接转发到清华镜像去。
       3:所有的网络请求都会经过本机host文件  host路径:C:\Windows\System32\drivers\etc

        4:进入host文件后 新增:127.0.0.1 updates.jenkins-ci.org    (表示当请求updates.jenkins-ci.org地址的时候,转到本机地                         址)

       5:下载nginx配置转发路径:

             进入nginx.config文件里面的server添加拦截路径配置:

                  location /download/plugins{ #拦截该路径请求
                          proxy_next_upstream http_502 http_504 error timeout invalid_header;
                          proxy_set_header Host mirrors.tuna.tsinghua.edu.cn;
                          proxy_set_header X-Real-IP $remote_addr;
                          proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; 
                          rewrite /download/plugins/(.*) /jenkins/plugins/$1 break;  #重定向/download/plugins(.*)路径下的所有文件该路径
                          proxy_pass https://mirrors.tuna.tsinghua.edu.cn;#代理路径
                   }

       配置好后: 重启nginx   别在网上找命令(基本失效)   直接任务管理器杀死nginx进程   

       相当于:http://updates.jenkins-ci.org/download/plugins/AnchorChain/1.0/AnchorChain.hpi 这个路径

                   请求到:https://mirrors.tuna.tsinghua.edu.cn/jenkins/plugins/AnchorChain/1.0/AnchorChain.hpi 清华加速地址

                    然后就快得一B了。

        然后就可以找到Available找到插件下载了  比如Git  由于插件太多  找了半天才找到

创建项目:

          进入主页 -> New item -> 输入项目名(随便填) - >  选择 Freestyle project点击OK

          进入后找到Source Code Management选择Git 填写码云地址

          点击add添加jinkins填写码云上的账号和密码并保存

          选择刚填写的账号信息保存

          完成后就可以在jinkins安装目录下workspace找到我们拉取的项目了

项目打包:

           进入项目中点击Configure找到下面的Build 选择 Invoke top-level Maven targels并输入 clean package并保存

           点击Build Now进行项目打包(红色表示报错了)  然后就可以在项目中找到打包的jar包了

            注意:如果目录不对可以在  Build下面选择高级配置pom.xml目录路径!第一次打包会比较慢

上传服务器:

             下载插件:Publish Over SSH (下载插件的时候记得启动nginx)

              配置服务器:进入主页 ->  Manage Jenkins -> Configure System下面的Publish over SSH 点击SSH Servers的Add

                       配置名称 服务器地址(111.231.141.141) 用户名(root) 最后一项暂时不填

                       点击Advanced...  点中 Use password authentication, or use a different key复选框

                       Passphrase / Password: 填写服务器密码

                       完成之后点击右下角 Test Configuration测试      Sucess(成功) 并保存

            完成后进如入项目 -> Configure -> 下面的Post-build Actions选择下载的SSH插件

                        Name就是我们刚刚配置的服务器。

                        Source files:  target/*.jar    //传target下面的所有jar包 (SpringCloud的话 需要分开上传并且加路径: 项目名/config-                                                                                                                                                                   server/target/*.jar)

                        Remove prefix:   target/    //移除前缀

                        Remote directory: jars     //远程目录  随便写

                        Exec command: ll      (命令行): 注意:SpringCloud传的时候不能加命令不然会断开导致传不到服务器上

                        多个项目:点击左下角的Add Transfer Set继续添加就可以了           

                        保存  点Build Now构建

                        在服务器root目录下就可以找到jars文件夹了。

jenkins执行SpringBoot脚本启动项目:

    linux下进入jars目录下创建springboot.sh启动脚本(必须和jar包在同一目录下)

   1: vi springboot.sh

   脚本:

------------------------------------------------------------------------------

#!/bin/bash

#export BUILD_ID=dontKillMe这一句很重要,这样指定了,项目启动之后才不会被Jenkins杀掉。
export BUILD_ID=dontKillMe

SpringBoot=$2

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

if [ "$SpringBoot" = "" ];
then
    echo -e "\033[0;31m 未输入应用名 \033[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 --spring.profiles.active=prod > test.log &      #--spring.profiles.active=prod  没有环境就不要
    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 "\033[0;31m Usage: \033[0m  \033[0;34m sh  $0  {start|stop|restart|status}  {SpringBootJarName} \033[0m
\033[0;31m Example: \033[0m
      \033[0;33m sh  $0  start esmart-test.jar \033[0m"
esac

----------------------------------------------------------------      

Esc : wq 保存并退出

2:chmod 775 springboot.sh   //给它一个775的权限(绿色代表可以执行)

3:./springboot.sh start  XXX.jar 启动项目

4.在jinkins配置启动脚本就可以了

Linux下查看和停止所有java进程

  • 在Linux下查看所有java进程命令:ps -ef | grep java

  • 停止所有java进程命令:pkill -9 java

  • 停止特定java进程命令:kill -9 java进程序号

Logo

权威|前沿|技术|干货|国内首个API全生命周期开发者社区

更多推荐