1.1 Jenkins概念:
Jenkins是一個功能強大的應用程序,容許持續集成和持續交付項目,不管用的是什麼平臺。這是一個免費的源代碼,能夠處理任何類型的構建或持續集成。集成Jenkins能夠用於一些測試和部署技術。Jenkins是一種軟件容許持續集成。php
1.2 Jenkins目的:
一、持續、自動地構建/測試軟件項目。
二、監控軟件開放流程,快速問題定位及處理,提示開放效率。html
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等。java
1.4 產品發佈流程:
產品設計成型 -> 開發人員開發代碼 -> 測試人員測試功能 -> 運維人員發佈上線
持續集成 (Continuous integration,簡稱CI)
持續交付(Continuous delivery)
持續部署(continuous deployment)linux
2.1 yum安裝
最低配置: 很多於256M內存,不低於1G磁盤,jdk版本>=8
安裝jdk1.8c++
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/jenkinsgit
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 &
密碼查看:/root/.jenkins/secrets/initialAdminPassword
訪問 http://ip:8080/ 進行安裝web
如何想經過其餘端口啓動能夠指定httpPort選項便可。docker
nohup java -jar jenkins.war --httpPort=8899 &
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
docker exec -it 52873fa3dce4 /bin/bash
cat /var/jenkins_home/secrets
#查看密碼
訪問 http://ip:8080/ 進行安裝apache
2.4 相關工具安裝
工具安裝可在jenkins的web界面系統管理---管理插件---可選插件勾選須要的,也能夠手動安裝。vim
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
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 查看版本
yum install subversion -y mkdir /svnrepo svnadmin create /svnrepo/project1 #建立一個新的Subversion項目
啓動項目1:svnserve -d -r /svnrepo/project1/
啓動整個項目:svnserve -d -r /svnrepo/
某些狀況下會遇到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
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:
至此全局插件郵件已經配置完畢,須要在具體的項目中使用此郵件進行發送通知。
4、實戰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程序發現程序文件已經成功發佈到目標服務器上
此時能夠查看郵件也已經發送成功。