一、相關概念
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
1
2
3
4
5
6
|
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 |
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包安裝
1
2
3
|
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 & |
密碼查看:/root/.jenkins/secrets/initialadminpassword
訪問 http://ip:8080/ 進行安裝
如何想通過其他端口啟動可以指定httpport選項即可。
1
|
nohup java -jar jenkins.war --httpport= 8899 & |
2.3 docker形式安裝
1
2
3
4
5
|
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 |
docker exec -it 52873fa3dce4 /bin/bash
cat /var/jenkins_home/secrets
#查看密碼
訪問 http://ip:8080/ 進行安裝
2.4 相關工具安裝工具安裝可在jenkins的web界面系統管理---管理插件---可選插件勾選需要的,也可以手動安裝。
a.git安裝
1
2
3
4
5
6
7
8
9
10
|
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 |
b.maven安裝
1
2
3
4
|
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 |
mvn --version 查看版本
c.svn安裝
1
2
3
|
yum install subversion -y mkdir /svnrepo svnadmin create /svnrepo/project1 #創建一個新的subversion項目 |
啟動項目1:svnserve -d -r /svnrepo/project1/
啟動整個項目:svnserve -d -r /svnrepo/
d.jdk安裝
某些情況下會遇到openjdk無法編譯java程序,或在編譯中存在異常,需要我們手動安裝jdk,首先去oracle官網下載對應版本的jdk
1
2
3
4
|
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 |
三、web界面配置
3.1 密碼破解
1
2
3
4
|
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 root@ip
。
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程序發現程序文件已經成功發布到目標服務器上
此時可以查看郵件也已經發送成功。
以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持服務器之家。
原文鏈接:http://blog.51cto.com/kaliarch/2050862