Jenkins 工作筆記

由於公司需要,這邊記錄一下自己在學習Jenkins的一些過程,以及遇到的一些坑。

安裝

安裝Jenkins

Jenkins的安裝還是比較簡單的,我用的是CentOs 6,安裝步驟如下:

sudo wget -O /etc/yum.repos.d/jenkins.repo https://pkg.jenkins.io/redhat-stable/jenkins.repo
sudo rpm --import https://pkg.jenkins.io/redhat-stable/jenkins.io.key
yum install jenkins

參考網址:https://pkg.jenkins.io/redhat-stable/

安裝JDK

安裝完後不要着急啓動,Jenkins需要JAVA環境,我這裏用的是:jdk-8u161-linux-x64.tar.gz

tar -zxvf jdk-8u161-linux-x64.tar.gz
mv /upload/jdk1.8.0_161/ /usr/local/java/jdk1.8/

解壓完成後添加一下環境變量vi /etc/profile,在文件的最前面添加:

export JAVA_HOME=/usr/local/java/jdk1.8
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
export PATH=$PATH:$JAVA_HOME/bin

然後刷新一下文件,讓修改生效source /etc/profile,檢查一下:

[root@localhost upload]# java -version
java version "1.8.0_161"
Java(TM) SE Runtime Environment (build 1.8.0_161-b12)
Java HotSpot(TM) 64-Bit Server VM (build 25.161-b12, mixed mode)

修改Jenkins啓動文件

JAVA環境安裝好了,但這裏Jenkins還是啓動不了的,這也是一個坑,嘗試啓動:

[root@localhost upload]# service jenkins start
Starting Jenkins bash: /usr/bin/java: No such file or directory
                                                           [FAILED]

根據提示,知道jenkins沒有找到java這個文件,我們需要幫他找,修改jenkins的啓動文件vi /etc/init.d/jenkins,裏面有這麼一段代碼:

candidates="
/etc/alternatives/java
/usr/lib/jvm/java-1.8.0/bin/java
/usr/lib/jvm/jre-1.8.0/bin/java
/usr/lib/jvm/java-1.7.0/bin/java
/usr/lib/jvm/jre-1.7.0/bin/java
/usr/bin/java
"

加上我們剛剛安裝JDK的位置/usr/local/java/jdk1.8/bin/java,注意這裏需要的事java這個可執行文件的路徑,修改後是這樣:

candidates="
/etc/alternatives/java
/usr/lib/jvm/java-1.8.0/bin/java
/usr/lib/jvm/jre-1.8.0/bin/java
/usr/lib/jvm/java-1.7.0/bin/java
/usr/lib/jvm/jre-1.7.0/bin/java
/usr/bin/java
/usr/local/java/jdk1.8/bin/java
"

再次重啓,成功了,我們可以查看啓動日誌tail -f /var/log/jenkins/jenkins.log
日誌中會打印出第一次解鎖Jenkins的密碼
或者在這裏查看cat /var/lib/jenkins/secrets/initialAdminPassword

開放端口

如果防火牆是永久關閉的,跳過這一步。
Jenkins默認用8080端口啓動,可以在vi /etc/sysconfig/jenkins裏面搜索JENKINS_PORT="8080"看到,然後在vi /etc/sysconfig/iptables裏面添加一行:

-A INPUT -m state --state NEW -m tcp -p tcp --dport 8080 -j ACCEPT

保存退出後,重啓iptables:service iptables restart

初始化Jenkins

訪問Jenkins服務器的8080端口,需要填寫前面提到的解鎖密碼,然後安裝推薦的插件,等待安裝完成。
推薦插件安裝完成後,需要增加一個賬戶,根據需要自己填寫。
下一步的實例配置用默認的即可。
全部配置完成後,進入Jenkins主界面。

搭建Git + Maven + SSH Server 的CI(持續集成)環境

Jenkins相關插件安裝

安裝推薦插件後,Git Plugins已經有了,還需要安裝Maven IntegrationPublish Over SSH,我們通過 系統管理 -> 插件管理 -> 可選插件,搜索前面提到的倆個插件,全部勾選後點擊直接安裝,等待安裝完成後重啓Jenkins:service jenkins restart

Maven 安裝

下載maven:http://maven.apache.org/download.cgi ,我這裏用的是當前的最新版apache-maven-3.6.0-bin.tar.gz
上傳到Jenkins服務器上,解壓:tar -zxvf apache-maven-3.6.0-bin.tar.gz
解壓後移動到:mv apache-maven-3.6.0 /usr/local/maven
增加環境變量vi /etc/profile

export MAVEN_HOME=/usr/local/maven
export PATH=$PATH:$MAVEN_HOME/bin

刷新配置文件後測試是否成功:

[root@localhost maven]# source /etc/profile
[root@localhost maven]# mvn -version
Apache Maven 3.6.0 (97c98ec64a1fdfee7767ce5ffb20918da4f719f3; 2018-10-24T11:41:47-07:00)
Maven home: /usr/local/maven
Java version: 1.8.0_161, vendor: Oracle Corporation, runtime: /usr/local/java/jdk1.8/jre
Default locale: en_US, platform encoding: UTF-8
OS name: "linux", version: "2.6.32-754.2.1.el6.x86_64", arch: "amd64", family: "unix"

Maven安裝結束

Git 安裝

直接使用:yum -y install git,等待安裝完成即可。
測試是否安裝成功:

[root@localhost maven]# git --version
git version 1.7.1

Jenkins全局工具配置

系統管理 -> 全局工具配置 ,對JDK、git、Maven做相關配置:
在這裏插入圖片描述
在這裏插入圖片描述
保存即可。

目標服務器免密配置

Jenkins有時需要對其他服務器發送文件或者是命令,這時就需要免密配置了。
由於Jenkins是使用jenkins用戶執行操作的,所以我們先切換到jenkins用戶:su jenkins
默認情況下可能是切換不了的,我們需要修改vi /etc/passwd,找到jenkins相關的那條:

jenkins:x:496:493:Jenkins Automation Server:/var/lib/jenkins:/bin/false

修改爲:

jenkins:x:496:493:Jenkins Automation Server:/var/lib/jenkins:/bin/bash

修改後再次執行:su jenkins,成功切換至jenkins用戶。
生成密鑰:ssh-keygen -t rsa,全部回車通過,使用默認值。
成功後會在 /var/lib/jenkins/.ssh/ 目錄下生成一對公私鑰文件,查看公鑰:cat /var/lib/jenkins/.ssh/id_rsa.pub,複製公鑰的內容,在目標服務器的/root/.ssh目錄下會有一個authorized_keys文件,沒有就自己創建,然後將公鑰的內容複製到文件中。

設置authorized_keys權限
$ chmod 600 authorized_keys
設置.ssh目錄權限
$ chmod 700 -R .ssh

設置權限後重啓一下sshd服務service sshd restart

重啓成功後來到Jenkins服務器測試一下:ssh root@目標服務器IP,如果無需輸入密碼則配置成功。

增加SSH Server

系統管理 -> 系統配置 -> Publish over SSH
我們在Path to key 這一欄填上Jenkins服務器的私鑰位置/var/lib/jenkins/.ssh/id_rsa,其他的配置像這樣:
在這裏插入圖片描述
Remote Directory:是Jenkins鏈接目標服務器後的工作目錄

創建項目

經過以上的準備,我們終於可以創建項目了,點擊主界面下的新建任務,輸入任務名稱,選擇Maven項目。

源碼

進入項目的詳細配置頁面,首先設置項目源碼的位置:
在這裏插入圖片描述
這裏我使用的是碼雲,如果我們沒有把Jenkins的公鑰放在碼雲上,是不能連接到這個倉庫的,就像圖中一樣,設置好公鑰就不會有圖上的提示了,這裏注意一點,第一次設置完公鑰需手動連接一次git倉庫,比如手動git clone一次項目,因爲在第一次連接會有一個連接提示,可能會導致Jenkins連接失敗。

編譯

在這裏插入圖片描述
Root POM:這裏天pom.xml的位置,從項目的根路徑開始。
Goals and options:這裏填mvn後跟的命令及參數,這裏是對我們的項目打了包。

部署

這是編譯後的操作,首選我們選擇:
在這裏插入圖片描述
也就是說在編譯成功後纔會執行下面的操作。
編譯成功後我們只需將其複製到目標服務器並運行即可。
添加一個:
在這裏插入圖片描述
Name:這裏選擇的就是我們剛剛配置的SSH Server
Source files:要傳輸的文件在哪,相對於項目根路徑
Remove prefix:忽略的前綴,作用是在傳輸過後不攜帶前綴的目錄
Remote directory:傳輸的文件存放在那個目錄下,這裏是相對於SSH Server中配置的Remote directory目錄的
Exec command:傳輸完成後執行的命令

到這裏,一個簡單的Maven + Git + SSH Server的CI環境就搭好了。

構建項目

進入項目詳情,點擊立即構建。
構建過程中可以進入控制檯查看日誌。
等待其構建完成即可。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章