Centos 7 安裝jenkins教程
Centos 7 下jenkins安裝教程
1、環境準備
在安裝jenkins前我們需要準備一臺安裝centos7的虛擬機器,並能夠訪問網路,可以參考教程VMware安裝Centos7及網路配置,然後需要安裝jdk,maven,git,以及docker等基礎元件。
1.1、安裝jdk8
jdk8下載地址連結,此處提供的是百度雲盤的下載地址,請自行下載,然後進行安裝操作。我的安裝目錄為/usr/local/java,將下載好的安裝包上傳到安裝目錄【/usr/local/java】下,執行解壓操作即可,命令如下
~~~shell tar -xvzf jdk-8u281-linux-x64.tar.gz ~~~
配置環境變數編輯/etc/profile.d/java8.sh檔案,將下面內容copy到java8.sh檔案中,然後退出並儲存
~~~shell vi /etc/profile.d/java8.sh ~~~
配置內容
~~~shell export JAVA_HOME=/usr/local/java/jdk1.8.0_281 export JAVA_BIN=/usr/local/java/jdk1.8.0_281/bin export PATH=$PATH:$JAVA_HOME/bin export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar export JAVA_HOME JAVA_BIN PATH CLASSPATH ~~~
使配置生效
~~~shell source /etc/profile ~~~
檢視配置是否生效
~~~shell java -version ~~~
經檢驗,配置生效。
1.2、安裝maven
首先下載maven安裝檔案,此處我選擇的版本是3.6.3,下載地址,下載後上傳到伺服器目錄【/usr/local/tools】下,同樣執行解壓操作。命令如下:
~~~shell tar -xvzf apache-maven-3.6.3-bin.tar.gz ~~~
修改目錄名稱為maven3
~~~shell mv apache-maven-3.6.3 maven3 ~~~
配置環境變數,編輯/ect/profile檔案,將下面的配置copy到檔案最下方,儲存退出即可
~~~shell vi /etc/profile ~~~
配置內容
~~~shell MAVEN_HOME=/usr/local/tools/maven3 export MAVEN_HOME export PATH=${PATH}:${MAVEN_HOME}/bin ~~~
使配置生效,並驗證安裝是否成功
~~~shell source /etc/profile mvn -version ~~~
驗證結果如下圖
配置阿里雲maven私服映象庫,修改maven配置檔案/usr/local/tools/maven3/conf/settings.xml,將阿里雲私服映象庫新增到
~~~xml
1.3、安裝git
安裝git是為了讓jenkins能夠從git倉庫拉取程式碼,安裝及驗證安裝結果命令如下
~~~shell yum install git git --version ~~~
1.4、docker安裝
如果你的專案暫時未用到docker,請忽略此步操作,如果需要docker安裝請參考此教程docker基礎教程。
2、安裝jenkins
此處我們使用離線安裝包方式安裝。
2.1、下載jenkins
我們在伺服器上建立/appserver/app目錄,然後進入該目錄並執行如下命令進行jenkins可執行包下載
~~~shell mkdir -p /appserver/app cd /appserver/app yum install wget wget https://get.jenkins.io/war-stable/2.332.2/jenkins.war ~~~
啟動jenkins,我們建立一個jenkins啟動指令碼,start-jenkins.sh (啟動命令可以接引數start|restart|stop)分別標識啟動,重啟,停止服務
~~~shell vi start-jenkins.sh ~~~
指令碼內容如下:
~~~shell
!/bin/sh
該指令碼為Linux下啟動java程式的通用指令碼。即可以作為開機自啟動service指令碼被呼叫
也可以作為啟動java程式的獨立指令碼來使用。
Author: tudaxia.com, Date: 2011/6/7
警告!!!:該指令碼stop部分使用系統kill命令來強制終止指定的java程式程序。
在殺死程序前,未作任何條件檢查。在某些情況下,如程式正在進行檔案或資料庫寫操作,
可能會造成資料丟失或資料不完整。如果必須要考慮到這類情況,則需要改寫此指令碼,
增加在執行kill命令前的一系列檢查。
#############################
以下這些註釋設定可以被chkconfig命令讀取
chkconfig: - 99 50
description: Java程式啟動指令碼
processname: test
config: 如果需要的話,可以配置
#############################
#############################
環境變數及程式執行引數
需要根據實際環境以及Java程式名稱來修改這些引數
#############################
JDK所在路徑
JAVA_HOME="/usr/local/java/jdk1.8.0_281"
執行程式啟動所使用的系統使用者,考慮到安全,推薦不使用root帳號
RUNNING_USER=bmsp
Java程式所在的目錄(classes的上一級目錄)
APP_HOME=/appserver/app
需要啟動的Java主程式(main方法類)
APP_MAINCLASS=jenkins.war
拼湊完整的classpath引數,包括指定lib目錄下所有的jar
CLASSPATH=$APP_HOME/classes
for i in "$APP_HOME"/lib/*.jar; do
CLASSPATH="$CLASSPATH":"$i"
done
java虛擬機器啟動引數
JAVA_OPTS="-ms1024m -mx1024m -Xmn256m -Djava.awt.headless=true -XX:MaxMetaspaceSize=512m -Djava.security.egd=file:/dev/../dev/urandom"
#############################
(函式)判斷程式是否已啟動
說明:
使用JDK自帶的JPS命令及grep命令組合,準確查詢pid
jps 加 l 引數,表示顯示java的完整包路徑
使用awk,分割出pid ($1部分),及Java程式名稱($2部分)
#############################
初始化psid變數(全域性)
psid=0
checkpid() {
javaps=jps -l | grep $APP_MAINCLASS
if [ -n "$javaps" ]; then
psid=echo $javaps | awk '{print $1}'
else
psid=0
fi
}
#############################
(函式)啟動程式
說明:
1. 首先呼叫checkpid函式,重新整理$psid全域性變數
2. 如果程式已經啟動($psid不等於0),則提示程式已啟動
3. 如果程式沒有被啟動,則執行啟動命令列
4. 啟動命令執行後,再次呼叫checkpid函式
5. 如果步驟4的結果能夠確認程式的pid,則列印[OK],否則列印[Failed]
注意:echo -n 表示列印字元後,不換行
注意: "nohup 某命令 >/dev/null 2>&1 &" 的用法
#############################
start() {
checkpid
if [ $psid -ne 0 ]; then
echo "================================"
echo "warn: $APP_MAINCLASS already started! (pid=$psid)"
echo "================================"
else
echo -n "Starting $APP_MAINCLASS ..."
nohup java $JAVA_OPTS -jar $APP_MAINCLASS --httpPort=8090 &
#su - $RUNNING_USER -c "$JAVA_CMD"
checkpid
if [ $psid -ne 0 ]; then
echo "(pid=$psid) [OK]"
else
echo "[Failed]"
fi
fi
}
#############################
(函式)停止程式
說明:
1. 首先呼叫checkpid函式,重新整理$psid全域性變數
2. 如果程式已經啟動($psid不等於0),則開始執行停止,否則,提示程式未執行
3. 使用kill -9 pid命令進行強制殺死程序
4. 執行kill命令列緊接其後,馬上檢視上一句命令的返回值: $?
5. 如果步驟4的結果$?等於0,則列印[OK],否則列印[Failed]
6. 為了防止java程式被啟動多次,這裡增加反覆檢查程序,反覆殺死的處理(遞迴呼叫stop)。
注意:echo -n 表示列印字元後,不換行
注意: 在shell程式設計中,"$?" 表示上一句命令或者一個函式的返回值
#############################
stop() {
checkpid
if [ $psid -ne 0 ]; then
echo -n "Stopping $APP_MAINCLASS ...(pid=$psid) "
# su - $RUNNING_USER -c "kill -9 $psid"
kill -9 $psid
if [ $? -eq 0 ]; then
echo "[OK]"
else
echo "[Failed]"
fi
checkpid
if [ $psid -ne 0 ]; then
stop
fi
else
echo "================================"
echo "warn: $APP_MAINCLASS is not running"
echo "================================"
fi
}
#############################
(函式)檢查程式執行狀態
說明:
1. 首先呼叫checkpid函式,重新整理$psid全域性變數
2. 如果程式已經啟動($psid不等於0),則提示正在執行並表示出pid
3. 否則,提示程式未執行
#############################
status() {
checkpid
if [ $psid -ne 0 ]; then
echo "$APP_MAINCLASS is running! (pid=$psid)"
else
echo "$APP_MAINCLASS is not running"
fi
}
#############################
(函式)列印系統環境引數
#############################
info() {
echo "System Information:"
echo "****"
echo head -n 1 /etc/issue
echo uname -a
echo
echo java -version
echo
echo "APP_HOME=$APP_HOME"
echo "APP_MAINCLASS=$APP_MAINCLASS"
echo "****"
}
#############################
讀取指令碼的第一個引數($1),進行判斷
引數取值範圍:{start|stop|restart|status|info}
如引數不在指定範圍之內,則列印幫助資訊
#############################
case "$1" in
'start')
start
;;
'stop')
stop
;;
'restart')
stop
start
;;
'status')
status
;;
'info')
info
;;
*)
echo "Usage: $0 {start|stop|restart|status|info}"
exit 1
esac
exit 0
~~~
給啟動指令碼執行許可權,並啟動jenkins
~~~shell chmod +x start-jenkins.sh ./start-jenkins start ~~~
檢視啟動日誌,看到初始化管理員密碼資料即表示啟動成功,copy對應的密碼,通過ip+port方式進行訪問,上面指令碼中指定的埠為8090,我們在啟動日誌中也能夠看到啟動的埠為8090。
~~~shell tail -f nohup.out ~~~
在瀏覽器中輸入:http://192.168.2.6:8090即可看到如下介面,將日誌中的初始密碼貼上進去,即可。如果不想看日誌,也可以直接通過如下命令檢視密碼
~~~shell cat /root/.jenkins/secrets/initialAdminPassword ~~~
選擇雙擊【安裝推薦的外掛】
然後進入外掛安裝環節,如下圖
安裝完成後,我們建立一個管理員賬號
例項配置
至此安裝完畢
3、環境配置
安裝完成後我們需要進行基本相關配置,如jdk、maven、git。
3.1、配置編譯環境
選擇Manage Jenkins選單
選擇全域性工具配置
3.1.1、配置JDK
maven配置檔案直接使用預設即可,選擇新增jdk,然後設定JAVA_HOME設定為我們上面安裝的目錄即可,記得取消勾選【Install automatically】。
3.1.2、配置git
如果不知道git的路徑,可以通過如下命令檢視,如下圖我們可以看到git可執行路徑為【/usr/bin/git】,記得取消勾選【Install automatically】
~~~shell whereis git ~~~
3.1.3、maven配置
設定maven安裝目錄,記得取消勾選【Install automatically】
然後點選應用即可。
3.1.4、安裝maven外掛
首先我們回到首頁,選擇新建Iterm,發現此時沒有建立maven專案選項,這是因為我們沒有安裝maven integration外掛。所以我們要想構建maven專案,需要先安裝maven整合外掛。
安裝前
同樣回到首頁選擇【Manage Jenkins】然後選擇【Manage Plugins】
選擇可選外掛【available】,然後找到【Maven Integration】外掛,勾選
勾選,並選擇下載完成後自動重啟jenkins服務
拉到最下面,勾選【安裝完成後重啟Jenkins】
安裝完畢後,單擊【新建Item】按鈕後,我們可以看到多了一個【構建一個maven專案】選項,如下圖
4、構建maven專案
配置完畢後我們來構建一個測試專案,專案程式碼為【[email protected]:zhangjian_sh/docker-demo.git】,由於專案程式碼在gitlab倉庫中,且為私有專案,故而我們需要先配置憑證資訊,我們通過ssh keys進行配置。
4.1、gitlab ssh key配置
4.1.1、ssh 祕鑰生成
首先在jenkins伺服器上生成ssh祕鑰資訊,生成後的rsa公鑰及私鑰檔案目錄為【/root/.ssh/】圖所示,命令如下:
| 檔案 | 說明 | 備註 | | --------------------- | -------- | ---- | | /root/.ssh/id_rsa | 私鑰檔案 | | | /root/.ssh/id_rsa.pub | 公鑰檔案 | |
~~~shell ssh-keygen -t rsa ~~~
4.1.2、gitlab配置ssh key
選擇gitlab使用者的配置
選擇SSH Keys選單,如下圖
將4.1.1章節生成的公鑰檔案內容copy到下面的輸入框中,然後設定一個過期時間,正常選擇一個很久的日期即可。當然考慮到安全性,最好經常更新最好。然後點選【Add key】即可。
新增完成
然後我們驗證一下是否生效,在jenkins伺服器下拉取程式碼,選擇專案中的Clone with SSH對應的地址
~~~shell git clone [email protected]:zhangjian_sh/docker-demo.git ~~~
拉取成功如下圖
4.1.3、jenkins憑證配置
選擇【Manage Jenkins】選單中的【Manage Credential】
路徑比較深,參考下圖,然後選擇【新增憑據】,型別選擇【SSH Username with private key】,然後設定id,描述,名稱(此處名稱只是個唯一標識),最後需要將剛才4.1.1章節生成的伺服器私鑰copy出來貼上到下面的私鑰文字框中,如下圖:
將id_rsa私鑰內容copy到Private Key對應的輸入框中
新增成功,如下圖:
4.2、構建專案
回到首頁,新建任務,單擊【新建Item】,輸入專案名稱,然後選擇【構建一個maven專案】
選擇【原始碼管理】,配置程式碼倉庫資訊及選擇獲取憑據資訊,然後單擊【應用】然後單擊【儲存】即可。
開始構建專案,選擇下圖中的Build Now,然後我們在下面的【Build History】就可以看到當前的構建任務了,如下圖:
檢視構建日誌,單擊構建號進入構建資訊明細頁面,如下圖,然後單擊【控制檯輸出】可以看到構建的明細,包括拉取程式碼,編譯打包過程的日誌輸出,如下圖任務構建成功。
至此,jenkins的安裝過程到此結束,以及簡單的maven專案構建,下一篇文章,我們將說一說如何使用jenkins對springboot專案進行構建和部署,敬請期待,謝謝。