大神對jenkins的詳解步驟
一、相關概念
1.1 Jenkins概念:
Jenkins是一個功能強大的應用程式,允許持續整合和持續交付專案,無論用的是什麼平臺。這是一個免費的原始碼,可以處理任何型別的構建或持續整合。整合Jenkins可以用於一些測試和部署技術。Jenkins是一種軟體允許持續整合。
1.2 Jenkins目的:
1、持續、自動地構建/測試軟體專案。
2、監控軟體開放流程,快速問題定位及處理,提示開放效率。
1.3 特性:
開源的java語言開發持續整合工具,支援CI,CD。
易於安裝部署配置:可通過yum安裝,或下載war包以及通過docker容器等快速實現安裝部署,可方便web介面配置管理。
訊息通知及測試報告:整合RSS/E-mail通過RSS釋出構建結果或當構建完成時通過e-mail通知,生成JUnit/TestNG測試報告。
分散式構建:支援Jenkins能夠讓多臺計算機一起構建/測試。
檔案識別:Jenkins能夠跟蹤哪次構建生成哪些jar,哪次構建使用哪個版本的jar等。
豐富的外掛支援:支援擴充套件外掛,你可以開發適合自己團隊使用的工具,如git,svn,maven,docker等。
1.4 產品釋出流程:
產品設計成型 -> 開發人員開發程式碼 -> 測試人員測試功能 -> 運維人員釋出上線
持續整合 (Continuous integration,簡稱CI)
持續交付(Continuous delivery)
持續部署(continuous deployment)
二、安裝部署
2.1 yum安裝
最低配置: 不少於256M記憶體,不低於1G磁碟,jdk版本>=8
安裝jdk1.8
yum install -y java-1.8.0-openjdk && \ wget -O /etc/yum.repos.d/jenkins.repo https://pkg.jenkins.io/redhat/jenkins.repo && \ rpm --import https://pkg.jenkins.io/redhat/jenkins.io.key &&\ yum clean all && yum makecache && \ yum install -y jenkins && \ systemctl start jenkins
- 1
- 2
- 3
- 4
- 5
- 6
less /var/log/jenkins/jenkins.log //查詢admin密碼
訪問 http://ip:8080/ 進行安裝
jenkins相關目錄: rpm -ql jenkins
#檢視jenkins安裝相關目錄
安裝目錄/var/lib/jenkins
配置檔案 /etc/sysconfig/jenkins
日誌目錄 /var/log/jenkins
2.2 下載war包安裝
yum install -y java-1.8.0-openjdk && mkdir -p /usr/local/jenkins/ && \ wget -c -O /usr/local/jenkins/jenkins.war http://mirrors.jenkins.io/war-stable/latest/jenkins.war &&\ nohup java -jar /usr/local/jenkins/jenkins.war &
- 1
- 2
- 3
密碼檢視:/root/.jenkins/secrets/initialAdminPassword
訪問 http://ip:8080/ 進行安裝
2.3 docker形式安裝
yum install docker -y && systemctl start docker && \
curl -sSL https://get.daocloud.io/daotools/set_mirror.sh | sh -s && systemctl restart docker
docker search jenkins
docker pull docker.io/jenkins
docker run -d -p 8080:8080 docker.io/jenkins
- 1
- 2
- 3
- 4
- 5
docker exec -it 52873fa3dce4 /bin/bash
cat /var/jenkins_home/secrets
#檢視密碼
訪問 http://ip:8080/ 進行安裝
2.4 相關工具安裝
工具安裝可在jenkins的web介面系統管理—管理外掛—可選外掛勾選需要的,也可以手動安裝。
a.git安裝
yum install curl-devel expat-devel gettext-devel openssl-devel zlib-devel gcc-c++ perl-ExtUtils-MakeMaker wget autoconf -y
wget https://www.kernel.org/pub/software/scm/git/git-2.7.3.tar.gz
tar xf git-2.7.3.tar.gz
cd git-2.7.3
make configure
./configure --prefix=/usr/local/git
make profix=/usr/local/git
make install
echo "export PATH=$PATH:/usr/local/git/bin" > /etc/profile.d/git.sh
source /etc/profile.d/git.sh
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
b.maven安裝
cd /usr/local/ && wget -c wget http://mirror.bit.edu.cn/apache/maven/maven-3/3.5.2/binaries/apache-maven-3.5.2-bin.tar.gz &&\
tar -zxf apache-maven-3.5.2-bin.tar.gz && \
echo "export PATH=$PATH:/usr/local/apache-maven-3.5.2/bin" > /etc/profile.d/maven.sh && \
source /etc/profile.d/maven.sh
- 1
- 2
- 3
- 4
mvn –version 檢視版本
c.svn安裝
yum install subversion -y
mkdir /svnrepo
svnadmin create /svnrepo/project1 #建立一個新的Subversion專案
- 1
- 2
- 3
啟動專案1:svnserve -d -r /svnrepo/project1/
啟動整個專案:svnserve -d -r /svnrepo/
d.jdk安裝
某些情況下會遇到openjdk無法編譯java程式,或在編譯中存在異常,需要我們手動安裝jdk,首先去Oracle官網下載對應版本的jdk
tar -zxvf jdk-8u121-linux-x64.gz -C /usr/local && \
ln -sv /usr/local/jdk1.8.0_121 /usr/local/jdk1.8 && \
echo "export PATH=$PATH:/usr/local/jdk1.8/bin" >/etc/profile.d/java.sh
source /etc/profile.d/java.sh
- 1
- 2
- 3
- 4
三、WEB介面配置
3.1 密碼破解
cd /var/lib/jenkins/users/admin #此為admin使用者的目錄,也可以對應自己建立的使用者
vim config.xml //定位到<passwordHash>那一行
刪除改行,改為
<passwordHash>#jbcrypt:$2a$10$pDQks0ytOkCfmpdgpLygrOC3uY7i/XnZHBKRQDhrBPwKoN2f5Kz8C</passwordHash>
重啟一下jenkins
新密碼為admin
3.2 maven配置
針對之前手動安裝的maven需要在web介面配置進行結合。
系統管理—全域性工具配置(Maven Configuration)配置:
此處為手動安裝的maven,需要取消自動安裝maven,name可以自定義,MAVEN_HOME指定下載安裝的maven具體檔案目錄
3.3 GIT配置
手動安裝的git,web介面只需新增具體可執行路徑即可
3.4 jdk配置
對應手動安裝的jdk,需要web配置java_home路徑
3.5 郵件配置
jenkins有內建的郵件功能但由於其對於成功的釋出不會發送郵件可定製化程度低,在此直接配置外掛郵件(Editable Email Notification),2.32以上版本的jenkins,常用的外掛都已經在最初部署的時候安裝了(如果你當初選擇的是suggest的plugins)。
可以使用qq郵件伺服器或163等其他郵件伺服器,在此配置使用163郵箱,首先需要開啟163郵箱的smtp服務。
需要記錄此處開啟smtp時的密碼。
在jenkins 系統管理—系統設定—Extended E-mail Notification
在預設的觸發器 Default Triggers 標籤下,可以勾選郵件通知觸發的情況,如任何情況下均需要選擇always,也可以在僅失敗情況下發送,也可以對應的郵件接受人不通,進行郵件分類。
以下的內容,如郵件主題,內容均可自定義,可以參考url:
至此全域性外掛郵件已經配置完畢,需要在具體的專案中使用此郵件進行傳送通知。
四、實戰php程式自動釋出
4.1 外掛安裝
系統管理—管理外掛—已安裝
檢查是否有“Git plugin”和“Publish Over SSH”兩個外掛,如果沒有,則需點選“可選外掛”,找到它並安裝
安裝好兩個外掛後,點選“系統管理”– “系統設定”
4.2 SSH配置
系統管理—系統設定—Publish over SSH
在key內填寫jenkins伺服器的私鑰,如果沒有需要先在jenkins伺服器生成私鑰與公鑰。ssh-keygen -t rsa
回車後會在登入使用者的家目錄下生成一個.ssh 的目錄,此目錄下存在id_rsa私鑰與id_rsa.pub公鑰。且講公鑰釋出至程式碼釋出的目標伺服器上ssh-copy-id -i /root/.ssh/id_rsa.pub [email protected]
。
SSH Server配置
name:需要將php程式釋出到目標伺服器的名稱,可自定義
Hostname:填寫目錄伺服器的IP地址
Username:使用那個使用者進行釋出,此處為進行金鑰互信的使用者
Remote Directory:此出為釋出到目標伺服器的相對根路徑,建議填寫/,防止後續填寫路徑異常。
注:如果為多臺目標伺服器,可以繼續新增,如果目標伺服器存在代理,也可設定proxy
4.3 構建專案
新建Item—填入專案名稱—選擇構建一個自由風格的軟體專案—確定
原始碼管理選擇git
Repository URL 填寫具體git上的倉庫url,如果為私有,需要繼續新增Credentials,如果為公有直接填寫url即可,Credentials為none,
構建後夠操作
選擇(Send files or execute commands over SSH)
SSH Server選擇目標伺服器如:php-server
Source files:/ #將git拉去下來的原始檔案
Remote directory:/var/www/html #釋出到目標伺服器的制定目錄
Exec command:chown apache:apache -R /var/www/html/* #制定後續的操作
此時可以選擇Editable Email Notification來構建郵件通知。
在此處,之前的郵件主題,內容均可以自定義,在高階裡面,選擇郵件接受人。
點選儲存,並立即構建,可以點選console output檢視日誌
此時開啟php程式發現程式檔案已經成功釋出到目標伺服器上
此時可以檢視郵件也已經發送成功。
轉載自 KaliArch https://blog.csdn.net/qq_26848099/article/details/78901240