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 * 阿里雲公共倉庫 http://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 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 ~~~

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