生產環境部署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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM