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 http://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項目進行構建和部署,敬請期待,謝謝。