1. 程式人生 > 實用技巧 >Centos7安裝Jenkins和目錄遷移

Centos7安裝Jenkins和目錄遷移

Centos7安裝Jenkins和目錄遷移

內容:

  • 安裝Jenkins和相關的配置
  • 嘗試目錄遷移,模擬磁碟空間不足

1. 安裝Jenkins和配置

  • 安裝

  根據Jenkins的官方安裝指引,安裝步驟如下:

shell> wget -O /etc/yum.repos.d/jenkins.repo https://pkg.jenkins.io/redhat-stable/jenkins.repo #下載Jenkins的更新源,儲存到/etc/yum.repos.d/jenkins.repo
shell> rpm --import https://pkg.jenkins.io/redhat-stable/jenkins.io.key #匯入Jenkins軟體的公鑰
shell> yum upgrade		#更新源
shell> yum install jenkins java-1.8.0-openjdk-devel	#使用源安裝Jenkins和java-8-jdk

上面這個是官方的教程,我操作的時候,執行yum install jenkins時下載比較慢,所以我就在找rpm包,想使用迅雷下載rpm包然後上傳到Centos主機去。附上官方的rpm包下載連結:https://pkg.jenkins.io/redhat-stable

  至此,Jenkins軟體已經安裝好了,下面可以啟動Jenkins了:

shell> systemctl start jenkins.service	#啟動Jenkins,如果要Jenkins開機自啟,執行systemctl enable jenkins.service
shell> ps -ef | grep java				#檢視Jenkins服務是否已經啟動

  可以看到它其實是運行了一個Java程序,運行了一個Java Web專案/usr/lib/jenkins/jenkins.war,Jenkisn家目錄/var/lib/jenkins,日誌檔案/var/log/jenkins/jenkins.log,專案解包目錄/var/cache/jenkins/war,http訪問埠8080。現在我們可以在瀏覽器進行訪問了,我這裡輸入:http://172.16.11.141:8080

  如果無法開啟頁面,請檢視一下自己的防火牆設定是否已經開放了8080埠,如下新增開放8080埠:

shell> firewall-cmd --zone=public --add-port=8080/tcp --permanent	#永久新增8080埠
shell> firewall-cmd --reload	#重新載入,一定要過載才會生效
shell> firewall-cmd --list-port	#檢視開放的埠

  開啟瀏覽器,進行訪問,可以看到在/var/lib/jenkins/secrets/initialAdminPassword下儲存了初始密碼,複製貼上到瀏覽器文字框即可:

  然後它會聯網載入外掛,我這裡應該是無法連線網路,選擇Skip Plugin Installations等下再重新配置更新的源,再安裝所需的外掛

  然後,到了設定使用者名稱、密碼和訪問的url,根據自己所需設定即可。至此,Jenkins的安裝已經完成。

  • 配置

  Jenkins預設的更新Update Sitehttps://updates.jenkins.io/update-center.json,在國內比較慢甚至無法訪問,所以,配置成清華的更新源比較好,把Update Site更改為https://mirrors.tuna.tsinghua.edu.cn/jenkins/updates/update-center.jsonUpdate Site的路徑為:Jenkins-> Manage Jenkins->Manage Plugins->Advanced

  修改了源還不行,還需要修改Jenkins目錄下的update/default.json檔案,它有一個測試網路連通的Google頁面,在國內無法訪問,會導致連不上網路,執行命令:

shell> cd /var/lib/jenkins	#進入Jenkins的家目錄
shell> sed -i 's/http:\/\/www.google.com/https:\/\/www.baidu.com/g' updates/default.json	#我這裡直接用sed替換了,可以看看這個default.json檔案的內容
sed -i 's/http:\/\/updates.jenkins-ci.org\/download/https:\/\/mirrors.tuna.tsinghua.edu.cn\/jenkins/g' updates/default.json	#替換為清華的源
shell> systemctl restart jenkins.service	#重啟Jenkins服務

  最後,我在Available項搜尋git並安裝了git外掛,並建立了一個item拉取了一個git倉庫程式碼。

2. 嘗試目錄遷移,模擬磁碟空間不足

  在上面我已經新建了一個item並拉取了git倉庫程式碼,現在模擬磁碟空間不足,進行目錄遷移,並且保留構建的檔案資料。我這裡把Jenkins遷移到/var/lib/jenkins-home目錄下,執行命令:

shell> mkdir /var/lib/jenkins-home		#建立jenkins-home目錄
shell> chown jenkins:jenkins /var/lib/jenkins-home	#更改目錄許可權和使用者組
shell> rsync -azvP /var/lib/jenkins/* /var/lib/jenkins-home	#使用rsync同步複製同步檔案,沒有rsync的可以使用yum install rsync安裝
shell> mv /var/lib/jenkins /var/lib/jenkins.bak	#模擬Jenkins目錄已經遷移了,不存在了。
shell> vim /etc/sysconfig/jenkins	#編輯Jenkins的配置檔案,修改JENKINS_HOME變數

/etc/sysconfig/jenkins檔案:

## Path:        Development/Jenkins
## Description: Jenkins Automation Server
## Type:        string
## Default:     "/var/lib/jenkins"
## ServiceRestart: jenkins
#
# Directory where Jenkins store its configuration and working
# files (checkouts, build reports, artifacts, ...).
#
JENKINS_HOME="/var/lib/jenkins-home"

  編輯後儲存,然後重啟Jenkins服務:

shell> systemctl restart jenkins.service	#重啟Jenkins服務

  重啟後重新登入,在Web頁面進入Jenkins的配置管理,可以看到JENKINS_HOME已經生效:

  但是,你會發現之前構建的拉取的程式碼檔案沒有得到正確配置,它讀取的路徑還是原有的/var/lib/jenkins/***

  檢視JENKINS_HOME/jobs目錄,會發現每個item對應於一個資料夾,資料夾下有builds資料夾、配置.xml檔案和下一次構建的數字number儲存檔案,builds目錄下儲存了我們這個item每次構建的資訊,1,2,3資料夾對應於第1,2,3此構建,下面檢視neteasemusicplayer這個item的第一次構建的檔案資訊:

shell> cd /var/lib/jenkins-home	#進入遷移後的Jenkins目錄
shell> vim jobs/neteasemusicplayer/builds/1/build.xml	#檢視構建的配置資訊

  可以發現workspace的路徑還是原有的目錄路徑,我們為了讓遷移後的Jenkins能夠讀取遷移後的路徑,還需要修改每一次構建的build.xml檔案,裡面儲存了Jenkins讀取的目錄資訊:

shell> find jobs/ -name build.xml | xargs sed -i "s/\/var\/lib\/jenkins/\/var\/lib\/jenkins-home/g"	#查詢jobs目錄下的名稱為build.xml的檔案,使用sed替換查詢的檔案裡面的/var/lib/jenkins為/var/lib/jenkins-home

  最後,還要在Jenkins的Web介面的Manage Jenkins->Reload Configuration from Disk進行過載配置檔案。

  過載配置檔案後重新登入,進入item的workplace可以看到原有檔案已經顯示出來了,目錄遷移成功。