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 Site
為https://updates.jenkins.io/update-center.json
,在國內比較慢甚至無法訪問,所以,配置成清華的更新源比較好,把Update Site
更改為https://mirrors.tuna.tsinghua.edu.cn/jenkins/updates/update-center.json
,Update 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可以看到原有檔案已經顯示出來了,目錄遷移成功。