Centos 7 安裝jenkins教程

語言: CN / TW / HK

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 ~~~

image-20220501163544262

配置環境變數編輯/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 ~~~

image-20220501164140635

經檢驗,配置生效。

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 ~~~

驗證結果如下圖

image-20220501165621702

配置阿里雲maven私服映象庫,修改maven配置檔案/usr/local/tools/maven3/conf/settings.xml,將阿里雲私服映象庫新增到節點中。

~~~xml aliyunmaven * 阿里雲公共倉庫 https://maven.aliyun.com/repository/public ~~~

1.3、安裝git

安裝git是為了讓jenkins能夠從git倉庫拉取程式碼,安裝及驗證安裝結果命令如下

~~~shell yum install git git --version ~~~

image-20220501170247561

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 ~~~

image-20220501180850519

在瀏覽器中輸入:http://192.168.2.6:8090即可看到如下介面,將日誌中的初始密碼貼上進去,即可。如果不想看日誌,也可以直接通過如下命令檢視密碼

~~~shell cat /root/.jenkins/secrets/initialAdminPassword ~~~

image-20220501180924964

image-20220425161544915

選擇雙擊【安裝推薦的外掛】

image-20220501181113293

然後進入外掛安裝環節,如下圖

image-20220425152328238

安裝完成後,我們建立一個管理員賬號

image-20220501181852298

例項配置

image-20220501181936981

至此安裝完畢

image-20220501182013482

image-20220501182231752

3、環境配置

安裝完成後我們需要進行基本相關配置,如jdk、maven、git。

3.1、配置編譯環境

選擇Manage Jenkins選單

image-20220501182455086

選擇全域性工具配置

image-20220501182607746

3.1.1、配置JDK

maven配置檔案直接使用預設即可,選擇新增jdk,然後設定JAVA_HOME設定為我們上面安裝的目錄即可,記得取消勾選【Install automatically】。

image-20220501182842914

3.1.2、配置git

如果不知道git的路徑,可以通過如下命令檢視,如下圖我們可以看到git可執行路徑為【/usr/bin/git】,記得取消勾選【Install automatically】

~~~shell whereis git ~~~

image-20220501183337589

image-20220501183219208

3.1.3、maven配置

設定maven安裝目錄,記得取消勾選【Install automatically】

image-20220501183647650

然後點選應用即可。

3.1.4、安裝maven外掛

首先我們回到首頁,選擇新建Iterm,發現此時沒有建立maven專案選項,這是因為我們沒有安裝maven integration外掛。所以我們要想構建maven專案,需要先安裝maven整合外掛。

安裝前

image-20220501184056478

同樣回到首頁選擇【Manage Jenkins】然後選擇【Manage Plugins】

image-20220501184427487

選擇可選外掛【available】,然後找到【Maven Integration】外掛,勾選

image-20220501184547636

勾選,並選擇下載完成後自動重啟jenkins服務

image-20220501184729600

拉到最下面,勾選【安裝完成後重啟Jenkins】

image-20220501184925708

安裝完畢後,單擊【新建Item】按鈕後,我們可以看到多了一個【構建一個maven專案】選項,如下圖

image-20220501185348144

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 ~~~

image-20220501191404906

4.1.2、gitlab配置ssh key

選擇gitlab使用者的配置

image-20220501191928525

選擇SSH Keys選單,如下圖

image-20220501192013582

將4.1.1章節生成的公鑰檔案內容copy到下面的輸入框中,然後設定一個過期時間,正常選擇一個很久的日期即可。當然考慮到安全性,最好經常更新最好。然後點選【Add key】即可。

image-20220501194613133

新增完成

image-20220501194953054

然後我們驗證一下是否生效,在jenkins伺服器下拉取程式碼,選擇專案中的Clone with SSH對應的地址

~~~shell git clone [email protected]:zhangjian_sh/docker-demo.git ~~~

image-20220501195107125

拉取成功如下圖

image-20220501195434854

4.1.3、jenkins憑證配置

選擇【Manage Jenkins】選單中的【Manage Credential】

image-20220501195733398

路徑比較深,參考下圖,然後選擇【新增憑據】,型別選擇【SSH Username with private key】,然後設定id,描述,名稱(此處名稱只是個唯一標識),最後需要將剛才4.1.1章節生成的伺服器私鑰copy出來貼上到下面的私鑰文字框中,如下圖:

image-20220501200131669

將id_rsa私鑰內容copy到Private Key對應的輸入框中

image-20220501200458598

新增成功,如下圖:

image-20220501200618347

4.2、構建專案

回到首頁,新建任務,單擊【新建Item】,輸入專案名稱,然後選擇【構建一個maven專案】

image-20220501200932224

image-20220501201023577

選擇【原始碼管理】,配置程式碼倉庫資訊及選擇獲取憑據資訊,然後單擊【應用】然後單擊【儲存】即可。

image-20220501202025370

開始構建專案,選擇下圖中的Build Now,然後我們在下面的【Build History】就可以看到當前的構建任務了,如下圖:

image-20220501202315670

檢視構建日誌,單擊構建號進入構建資訊明細頁面,如下圖,然後單擊【控制檯輸出】可以看到構建的明細,包括拉取程式碼,編譯打包過程的日誌輸出,如下圖任務構建成功。

image-20220501202657356

image-20220501202513634

至此,jenkins的安裝過程到此結束,以及簡單的maven專案構建,下一篇文章,我們將說一說如何使用jenkins對springboot專案進行構建和部署,敬請期待,謝謝。