生产环境部署jenkins

Posted luoposhanchenpingan

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了生产环境部署jenkins相关的知识,希望对你有一定的参考价值。

前提:

  生产环境不能访问外网

 

安装:

1.下载jenkins的war包,将包拷贝到生产服务器/app/jenkins目录下

http://mirrors.jenkins-ci.org/war/

 

2.使用JDK的java命令启动jenkins

安装JDK,或者自己使用特定的JDK包启动jenkins

#我这里是拷贝的其他生产服务器上的JDK过来使用
/app/zulu8.33.0.1/bin/java -jar /app/jenkins/jenkins.war --httpPort=8060

 

3.浏览器是访问8060端口,复制启动时显示的密钥,进行安装

因为生产环境没有连接外网,不能下载一些插件,就直接跳过插件安装

然后登陆成功后,我们进行下一步操作

 

4.将jenkins服务停止(ctrl+c),并将jenkins默认的家目录.jenkins的内容拷贝到我们指定的目录

这样做的好处,我也不是太明白,默认的家目录,一般是启动程序后创建的,可能是觉得让自己的目录把握更爽?

# 创建jenkins的家目录,不过之后的启动脚本,要自行设置其目录为jenkins家目录
mkdir /app/jenkins/data

# 将默认家目录的所有文件和目录移动到我们创建的家目录下
mv /app/.jenkins/* /app/jenkins/data/

# 将家目录下的war包,我们单独拿到jenkins目录下,大概是想让之后启动时指定webroot更方便8
mv /app/jenkins/data/war /app/jenkins/

# 创建日志目录,用于之后启动脚本将信息写入到其中
mkdir /app/jenkins/logs

 

5.写启动脚本,vi /app/jenkins/jenkins_start.sh

#!/bin/bash
#-------------------------------
# jenkins start scripts
# Author:caixukun
# Last Modified:2019-7-4 15:40
#------------------------------

export JENKINS_HOME=/app/jenkins/data
pid=`ps -ef | grep jenkins.war | grep -v grep | awk print $2`
if [ -z $pid ];then
    echo "jenkins starting.."
    /app/zulu8.33.0.1/bin/java -jar /app/jenkins/jenkins.war --webroot=/app/jenkins/war --httpPort=8060 > /app/jenkins/logs/jenkins.log 2>&1 &
    sleep 3
    pid_recheck=`ps -ef | grep jenkins.war | grep -v grep | awk print $2`

    if [ -z $pid_recheck ];then
      echo "started jenkins fail!  log:/app/jenkins/logs/jenkins.log"
    else
      echo "started jenkins success! log:/app/jenkins/logs/jenkins.log"
    fi

else
    echo "restarting jenkins..."
    kill -9 $pid
    sleep 3
    /app/zulu8.33.0.1/bin/java -jar /app/jenkins/jenkins.war --webroot=/app/jenkins/war --httpPort=8060 > /app/jenkins/logs/jenkins.log 2>&1 &
    
    sleep 3
    pid_recheck=`ps -ef | grep jenkins.war | grep -v grep | awk print $2`
    if [ -z $pid_recheck ];then
      echo "restarted jenkins fail!  log:/app/jenkins/logs/jenkins.log"    
    else
      echo "restarted jenkins success! log:/app/jenkins/logs/jenkins.log"
    fi
fi

另一种启动脚本,可自我选择。

这个是另一个服务器,所以启动jenkins的方式有所不同。如果要使用,自行修改启动方式为上面脚本中的启动方式和一些目录路径即可

#!/bin/bash
pid=`ps -ef | grep jenkins.war | grep -v grep| awk print $2| wc -l`
if [ "$1" = "start" ];then
    if [ $pid -gt 0 ];then
        echo jenkins is running...
    else
        java -Djava.awt.headless=true -Dhudson.model.DirectoryBrowserSupport.CSP= -DJENKINS_HOME=/appuser/jenkins -jar /appuser/jenkins/jenkins.war  --logfile=/appuser/jenkins/logs/jenkins.log --webroot=/appuser/jenkins/war  --daemon --httpPort=8080 --debug=5 --handlerCountMax=100 --handlerCountMaxIdle=20 >/dev/null 2>&1 
    fi
elif [ "$1" = "stop" ];then
        exec ps -ef | grep jenkins | grep -v grep | awk print $2| xargs kill -9
        echo jenkins is stop..
else
        echo "Please input like this:"./start.sh start" or "./start.sh stop""
fi

 

7.拷贝插件

因为不能连接外网,就只能将其他服务器jenkins现成的plugins文件拷贝过来

ps:记得压缩包再拷贝,虽然文件不大,但是很多,不压缩的话拷贝就会很慢

# 删除原来有的插件目录
rm -rf /app/jenkins/plugins

# 拷贝操作就自行解决


# 还有就是如果觉得删除很不保险,可以先将其备份后再删除
cd /app/jenkins/data && tar -zvcf plugins.bak.tar.gz plugins
rm -rf plugins

 

8.启动脚本

cd /app/jenkins && sh jenkins_start.sh

# 最后/app/jenkins目录下的文件和目录展示
ls /app/jenkins
data  jenkins_start.sh  jenkins.war  logs  war

以上是关于生产环境部署jenkins的主要内容,如果未能解决你的问题,请参考以下文章

生产环境部署jenkins

使用 jenkins 进行持续部署

Jenkins使用FTP进行一键部署及回滚(Windows)

jenkins实战之jenkins安装部署

Jenkins企业应用

如何使用 Jenkins 部署多个 SpringBoot 环境?