最近,我自己要親手搭建一套完整的企業級 CI/CD 環境,這個環節里面涉及了很多內容,沒有辦法把這么多的內容都放在一篇文章里,所以 Jenkins 的安裝和Java 的 JDK 安裝我就是分了兩篇文章來寫的。而且這套環境中也包含 Docker 容器,涉及的東西不少,有些東西,自己也是第一次遇到,所以就會遇到很多坑。說起來,安裝Jenkins服務器環境,我也是大費周章。本來開始打算通過 Docker 安裝的,但是我在拉取 Jenkins 鏡像的時候,總是太慢,半天的時間都拉取不下來,可能有人會說,你換成國內的鏡像啊,我換了,剛開始很快,越到后面越慢,我也做了很多嘗試,但是,都沒解決,只能使用 Yum 安裝了。
一、Jenkins 簡介
Jenkins是一個開源軟件項目,是基於Java開發的一種持續集成工具,用於監控持續重復的工作,旨在提供一個開放易用的軟件平台,使軟件的持續集成變成可能。
Jenkins 功能包括:
二、Jenkins 安裝
廢話不多說,現在我們就開始安裝 Jenkins 服務器的環境。
1、檢查環境是否安裝了 Java 的 JDK,因為 Jenkins 是用Java 語言寫的,要想安裝 Jenkins 之前,必須安裝 JDK。
命令:# java -version
上圖說明 Jenkins 的運行環境已經安裝成功。
2、yum 安裝 Jenkins。
這里推薦使用yum方式安裝Jenkins,最簡單方便。yum的repos中默認是沒有Jenkins的,需要先將Jenkins存儲庫添加到yum repos。
(1)、在執行wget命令之前,必須確保該命令已經安裝,如果沒有安裝,請安裝。
命令:# yum install -y wget
(2)、執行 :# wget -O /etc/yum.repos.d/jenkins.repo https://pkg.jenkins.io/redhat/jenkins.repo
(3)、執行:# rpm --import https://pkg.jenkins.io/redhat/jenkins.io.key
(4)、安裝 Jenkins。
命令:# yum install jenkins
隨后就可以看到系統開始自動下載安裝。出現提示是否下載的時候輸入y並按回車。耐心等待安裝完成。
(5)、修改配置。
現在Jenkins已經安裝好了,不過啟動之前最好稍微修改一下配置。默認情況是Jenkins是使用Jenkins用戶啟動的,但這個用戶目前系統並沒有賦予權限,這里我們將啟動用戶修改為root;另外Jenkins默認端口是8080,這個跟tomcat的默認端口沖突,我們也修改一下默認端口。Jenkins 配置文件的目錄:/etc/sysconfig/jenkins
。
命令:vi/vim /etc/sysconfig/jenkins
在執行 vim 命令的時候,先要確認該命令是否安裝,如果沒有安裝,那就安裝吧。
命令:# yum install -y vim
中間省略了很多步驟輸出。
開始修改 Jenkins 的配置文件:# vim jenkins
【1】、修改 Jenkins 用戶名,改為:“root”。
【2】、修改 Jenkins 的默認端口號:8080,我修改為:8084。
【3】、修改完畢,保存退出。
命令:# wq
修改完配置后,保存退出。好了,現在配置文件也修改好了,可以啟動Jenkins了。
(6)、啟動 Jenkins 服務。
命令:# service jenkins start
出現OK表示Jenkins啟動成功。
(7)、在瀏覽器輸入ip:8084進入Jenkins登錄頁面。
我的IP地址是:192.168.127.146,Jenkins 網頁地址:http://192.168.127.146:8084。
這就是我們看到的正常頁面。
如果通過地址訪問出現超時的情況,而且,Windows 可以 ping 通虛擬機的服務器,虛擬機服務器也 Ping 通 Windows 服務器,這種情況多是 Linux 服務器防火牆的問題。
由於linux開啟了防火牆,導致windows無法訪問linux服務器程序。
有兩種解決辦法:
第一:執行以下命令就可以,重啟也是有效的。
命令:#firewall-cmd --zone=public --add-port=8084/tcp --permanent
#firewall-cmd --reload
第二:執行以下命令也可以解決,但是,重啟后無效,需要再次輸入該命令。
命令:# iptables -P INPUT ACCEPT(設置默認允許規則)
# iptables -F
(這兩條命令順序不能錯。可以通過/sbin/iptables -F 清除所有規則來暫時停止防火牆: (警告:這只適合在沒有配置防火牆的環境中,如果已經配置過默認規則為deny的環境,此步驟將使系統的所有網絡訪問中斷),如果想清空的話,先執行 /sbin/iptables -P INPUT ACCEPT;然后執行 /sbin/iptables -F;這樣就可以安全使用了,但是,重啟就不起作用。)
第三:也可以執行一下命令。
命令:#iptables -A OUTPUT -p tcp --sport 8084 -j ACCEPT
(8)、查看密碼:/var/lib/jenkins/secrets/initialAdminPassword
命令:# cat /var/lib/jenkins/secrets/initialAdminPassword
(9)、Jenkins首次登錄,解鎖Jenkins。
進入登錄頁面后,Jenkins提示我們需要輸入超級管理員密碼進行解鎖。根據提示,我們可以在/var/lib/jenkins/secrets/initialAdminPassword文件里找到密碼。找到密碼后,復制密碼,粘貼到Jenkins解鎖頁面,點擊Continue繼續初始化配置。
(10)、Jenkins 安裝插件。
這里我們點擊的Install suggested plugins,安裝默認插件,當然你也可以點擊另一個按鈕安裝指定的插件。點擊后,頁面進入了插件下載安裝頁面。
插件安裝頁面。
(11)、管理員賬戶注冊頁面。
耐心等待,全部插件安裝完成。安裝完成后,頁面自動進入了管理員賬戶注冊頁面。
(12)、實例配置。
我選擇保持默認,直接點擊【保存並完成】。
(13)、Jenkins 安裝完成。
(14)、我們開始使用 Jenkins。
三、Jenkins 服務常用操作。
(1)、Jenkins 的默認設置
Jenkins 會隨系統啟動而啟動。詳情參照/etc/init.d/jenkins
Jenkins 會創建一個用戶叫做jenkins, 如果你修改了user,則要修改所屬者:/var/log/jenkins,/var/lib/jenkins,/var/cache/jenkins
如果遇到問題,查看日志/var/log/jenkins/jenkins.log
配置文件/etc/sysconfig/jenkins
默認啟用8080
(2)、Jenkins 常用命令。
啟動:service jenkins start
重啟:service jenkins restart
停止:service jenkins stop
此外,還有直接使用url的方式,不過當然不包括啟動(此時服務還未啟動),只需要在訪問 jenkins 服務器的網址url地址就可以了。 此處假定 jenkins部署在本機,端口為 8080
瀏覽器進入Jenkins,登錄地址:http://127.0.0.1:8080/
關閉Jenkins 服務:http://127.0.0.1:8080/exit
重啟Jenkies 服務:http://127.0.0.1:8080/restart
重新加載配置信息:http://127.0.0.1:8080/reload
(3)、查看密碼:/var/lib/jenkins/secrets/initialAdminPassword
密碼:cat /var/lib/jenkins/secrets/initialAdminPassword
(4)、檢查 Jenkins 是否啟動
netstat -aptn 命令行,查看所有開啟的端口號。
(5)、卸載 Jenkins 服務。
【1】、rpm 卸載
命令:#rpm -e jenkins
【2】、檢查是否卸載成功
命令:#rpm -ql jenkins
【3】、徹底刪除殘留文件:
命令:# find / -iname jenkins | xargs -n 1000 rm -rf
(6)、加速Jenkins的拉取。
命令:#docker pull jenkins
最開始是使用上面的命令進行拉取,此jenkins是舊版本,不建議使用。可以使用如下命令拉取新版本。
命令:#docker pull jenkins/jenkins
如果拉取速度還是緩慢,設置 docker 加速鏡像,並重啟。
命令:#vi /etc/docker/daemon.json,增加內容:{"registry-mirrors": ["http://hub-mirror.c.163.com"]}
命令:#service docker restart
命令:#systemctl restart docker.service
對應啟動容器如下。
命令:#docker run -d -p 9090:8080 --name jenkins -p 50000:50000 -v /hzero/data-server/jenkins:/home/jenkins_home --privileged=true jenkins/jenkins
四、總結
好了,今天就寫到這里了。今天雖然很郁悶,因為了經歷了很多坑,本來2個小時可以完成的工作,一下子搞了4個多小時,不管怎么說,最后還是把所有問題都解決了,值得慶賀。不忘初心,每天進步一點點。Jenkins 服務器安裝成功了,下面該做其他工作了。安裝 Jenkins 只是為了搭建企業級 CI/CD環境的基礎。我們已經完成了第一步,繼續吧。