jenkins安裝及代碼發佈

官方文檔:https://jenkins.io/zh/doc/html

1、引言java

 產品設計成型-->開發人員開發代碼-->測試人員測試功能-->運維人員發佈上線node

 持續集成(Continuous integration,簡稱CI)linux

 持續交付(Continuous delivery)git

 持續部署(Continuous deployment)github

 推薦學習網站 http://www.ruanyifeng.com/blog/2015/09/continuous-integration.htmlweb

 

2Jenkins 介紹shell

 官網 官方文檔:https://jenkins.ioapache

 Jenkins 是一個開源的、可擴展的持續集成、交付、部署(軟件/代碼的編譯、打包、部署)基於web界面的平臺。vim

 Jenkins是一個工具集,提供了各類各樣的插件

 好比獲取git上最新的代碼

 好比能夠編譯源代碼

 好比能夠調用自定義的shell腳本遠程執行命令

 官方文檔:https://jenkins.io/zh/doc/

 

3Jenkins安裝 (192.168.128.129:8080)

 最低配置:很多於256M內存,不低於1G磁盤,jdk版本>=8

 安裝jdk1.8

 yum install -y java-1.8.0-openjdk //jenkinsjava開發的依賴jdk

 wegt -O /etc/yum.repos.djenkins.repo https://pkg.jenkins.io/redhat/jenkins.repo //安裝jenkinsyum

wget -O /etc/yum.repos.d/jenkins.repo https://pkg.jenkins.io/redhat/jenkins.repo --no-check-certificate 前面執行提示了安全證書未生效因此加了  --no-check-certificate 選項,也有多是系統時間不一樣步,能夠執行 ntpdate pool.ntp.org 同步

cat /etc/yum.repos.d/jenkins.repo 其中內容能夠不執行上面wget命令而直接手寫

[jenkins] name=Jenkins baseurl=http://pkg.jenkins.io/redhat gpgcheck=1

 rpm --import https://pkg.jenkins.io/redhat/jenkins.io.key 導入jenkinsCA證書

 yum install -y jenkins

 systemctl start jenkins

 grep -A 5 'An admin user has been created' /var/log/jenkins/jenkins.log

//查詢admin密碼

   cat /var/lib/jenkins/secrets/initialAdminPassword  //直接查詢admin密碼

 訪問 http://ip:8080/ 進行安裝   192.168.128.129:8080

1)、能夠選擇社區推薦的插件自動安裝,也能夠選擇自定義選擇安裝

2)、建立第一個管理員用戶

4Jenkins 相關目錄文件

/etc/sysconfig/jenkins 主配置文件

/var/lib/jenkins/ 核心的程序文件目錄,目錄能夠直接整個拷貝遷移使用

├── config.xml ├── hudson.model.UpdateCenter.xml ├── hudson.plugins.git.GitTool.xml ├── identity.key.enc ├── jenkins.install.InstallUtil.lastExecVersion ├── jenkins.install.UpgradeWizard.state ├── jenkins.telemetry.Correlator.xml ├── jobs       //建立任務目錄 ├── logs       //日誌目錄 ├── nodeMonitors.xml ├── nodes     //多節點時 ├── plugins     //插件目錄 ├── secret.key ├── secret.key.not-so-secret ├── secrets ├── updates ├── userContent ├── users └── workflow-libs

 

5Jenkins使用配置插件(ssh的配置)

 系統管理 --> 管理插件 --> 已安裝

 檢查是否有 「Git plugin」 「Publish Over SSH」 兩個插件,若是沒有,則需點擊 可選插件,找到並安裝

 安裝後,點擊系統管理」 --> 「系統設置

 下拉,找到 「Publist Over SSH」

 事先在jenkins服務器上生成一對密鑰

 # ssh-keygen -f /root/.ssh/jenkins //可設置密碼也可不設置

 「Passphrase」填寫設置的密碼,「Path to key」留空,「key」粘貼/root/.ssh/jenkins文件內容

 點擊左下角增長SSH Servername自定義,Hostname填寫線上web服務器的ipUsername填寫rootRemote Directory填寫 /

 將公鑰放到遠程web server機器/root/.ssh/authorized_keys文件,用於使用過程當中免密登陸訪問,能夠點jenkins「Publist Over SSH」配置部分的 」Test Configuration"進行測試 Success 表示成功

 若是是多臺web server,繼續點擊增長,重複上兩步操做

 點擊下角的保存

6、建立任務(發佈PHP代碼)

 點擊新建,任務名稱自定義,好比 test,選擇 構建一個自由風格的軟件項目(Freestyle project)」 點擊下方的 肯定

 描述,自定義

 "源碼管理" 選擇 "Git"

 "Repository URL" 填寫項目的 git 地址,若是是公共項目能夠不設置下面的參數,直接填寫一個git地址便可,如果私有項目,須要填寫認證信息,好比能夠選擇"SSH Username whith private key",而後設置Username以及private key

注意,jenkins服務器上須要安裝git

 「Branches to build」默認爲 */master,發佈的分支爲master,保持默認

 」構建觸發器構建環境留空

 「構建,選擇"Send files or execute commands over SSH"

 SSH ServerName 選擇對應的服務器,TransfersSource files 填寫 **/** ,表示所有文件

 Remove prefix能夠指定裁掉的前綴目錄,這裏留空便可,Remote directory 指定遠程服務器上代碼存放路徑,好比/data/wwwroot/www.aaa.comExec command 爲文件傳輸完成後要執行的命令,好比能夠是更改文件權限的命令,設置完成後點擊「Add Transef Set」(能夠傳輸多個),若是還有另外的機器,能夠點擊「Add Server」重複以上操做

 最後點擊左下角的保存

 完成以上操做後,就能夠使用這個剛建立的任務去工做了。

 選擇任務名稱進入的,點擊左面的當即構建(Build Now)」(或者任務視圖中有可操做構建按鈕),就能把git上的代碼發佈到指定的服務器上。

 點擊左下角的#1/#2...,而後再點擊「Console Output」能夠查看輸出日誌

 

7Jenkins配置郵件--內置郵件

 系統管理-->系統設置-->Jenkins Location 先設置系統管理員郵件地址,這裏的郵件地址須要和後續要設置的發郵件地址一致。

 向下拉,找到郵件通知

 填寫SMTP服務器,點右側的高級,打勾 使用SMTP認證,填寫用戶名密碼,若是使用的是ssl協議,還須要在這裏打勾,smtp端口默認爲 25

 能夠打勾經過發送測試郵件測試配置,而後填寫接收郵件的地址,點右側的Test configuration

 而後就是到已經構建過的job裏去配置接收郵件的地址了。在最下面 構建後操做那一欄,找到E-mail NotificationRecipients填寫收郵件人

 郵件只會在job構建失敗時發送

8Jenkins配置郵件--插件email-ext

 插件名字Email Extension Plugin,默認已經安裝

 系統管理-->系統設置-->Extended E-mail Notification

 填寫SMTP server (smtp.qq.com)[高級]點擊Use SMTP Authentication,填寫用戶名、密碼、SMTP port

 到對應構建任務中去配置一下,下拉到構建後操做

 點擊增長構建後操做步驟,選擇 「Editable Email Notfictation」,其中Project Recipient List 爲接收郵件的收件人,能夠在默認內容後面增長額外的收件人郵箱,用逗號分隔

 點擊右下角的 「Advanced settings",定位到 」Triggers",而後點擊下方的 「Add Triger」,能夠增長髮郵件的條件。

 參考文章 https://www.cnblogs.com/zz0412/p/jenkins_jj_01.html

9Jenkins破解管理員密碼

 # cat /var/lib/jenkins/users/admin_6452924050092568885/config.xml |grep password

 <passwordHash>#jbcrypt:$2a$10$rPg/ozd6c9eJRboFrKo.Zuw.G562CssY0q9Z19I8IUntTY3BlYy.O</passwordHash>

對應了密碼  00fae69f05664e479047a60c53f02b12

 # vim /var/lib/jenkins/users/admin_6452924050092568885/config.xml

<passwordHash>#jbcrypt:$2a$10$7cmrq4RP45lnXPjKmoCCnO3hr.hYN04BqSm3Y460h8cGpb.ECAAjm</passwordHash>

對應密碼爲 jenkins@123     

 # systemctl restart jenkins 重啓後生效

 密碼正常修改路徑是頁面 右上角 「Admin」 用戶名--> 設置   進入頁面配置密碼

10Jenkins部署java項目-之準備私有倉庫(192.168.128.131)及開源java代碼(zrlog

 java的項目是須要編譯和打包的

 編譯和打包用maven完成,因此須要安裝maven

 本次實驗,採用git私有倉庫的形式,涉及到配置密鑰

準備工做:

 申請一個私有git倉庫(使用自建的gitlabGitlab.note)

 生成密鑰對 # ssh-keygen -t rsa ,並將公鑰放到git服務端,而後能夠克隆gitlab倉庫數據

# cd /home/gitlab_repository

# git clone git@gitlab.example.com:java/java_test.git

 下載zrlog的源碼 https://codeload.github.com/94fzb/zrlog/zip/master

# cd /home/gitlab_repository

# wget https://codeload.github.com/94fzb/zrlog/zip/master

# unzip master //會解壓出一個目錄 zrlog-master

# mv zrlog-master/* java_test/ //移動到 java_test/目錄下

 將解壓後的源碼推送到gitlab遠程創庫

# cd java_test/

# git add .

# git push

11Jenkins部署java項目-web服務器tomcat   (192.168.128.128:8080)

 web服務器上安裝 jdk+tomcatyum install -y java-1.8.0-openjdk

其中 jdk 能夠爲 openjdk,版本1.8

 tomcat 二進制包安裝

# wget https://mirrors.cnnic.cn/apache/tomcat/tomcat-8/v8.5.42/bin/apache-tomcat-8.5.42.tar.gz

# mv apache-tomcat-8.5.42 /usr/local/tomcat

 修改tomcat配置   關於tomcat參考點擊

# vim /usr/local/tomcat/conf/tomcat-users.xml //增長以下內容,是由於jenkins須要管理員用戶這個接口,因此須要到tomcat中配置

<role rolename="admin"/> <role rolename="admin-gui"/> <role rolename="admin-script"/> <role rolename="manager"/> <role rolename="manager-gui"/> <role rolename="manager-script"/> <role rolename="manager-jmx"/> <role rolename="manager-stats"/> <user name="admin" password="jenkins123" role="admin,manager,admin-gui,admin-script,manager-gui,manager-script,manager-jmx,manager-status"/>

# vim /usr/local/tomcat/webapps/manager/META-INF/context.xml   //增長容許訪問IP192.168.128.*

<Context antiResourceLocking="false" privileged="true" >  <Valve className="org.apache.catalina.valves.RemoteAddrValve"         allow="127\.\d+\.\d+\.\d+|::1|0:0:0:0:0:0:0:1|192.168.128.*" />  <Manager sessionAttributeValueClassNameFilter="java\.lang\.(?:Boolean|Integer|Long|Number|String)|org\.apache\.catalina\.filters\.CsrfPreventionFilter\$LruCache(?:\$1)?|java\.util\.(?:Linked)?HashMap"/> </Context>

 

 關閉tomcat # /usr/local/tomcat/bin/shutdown.sh

 啓動tomcat # /usr/local/tomcat/bin/startup.sh

 配置好後 http://192.168.128.128:8080/ 進入頁面登陸點擊任務再次進入頁面都會有用戶登陸的彈窗

 

登陸後點擊相關按鍵可進入 manager頁面http://192.168.128.128:8080/manager/html

12Jenkins部署java項目-安裝maven

 安裝maven   

maven用於編輯java並打包

下載地址:https://maven.apache.org/download.cgi

# wget # wget https://mirrors.tuna.tsinghua.edu.cn/apache/maven/maven-3/3.6.1/binaries/apache-maven-3.6.1-bin.tar.gz     下載二進制包後手動安裝(jenkins在插入管理能夠找到Maven Release Plug-in安裝包)

# tar zxvf apache-maven-3.6.1-bin.tar.gz -C /usr/local/

# /usr/local/apache-maven-3.6.1/bin/mvn --version

 jenkins配置mave

系統管理(manage jenkins)-->全局工具配置(Global Tool Configuration)-->

 Maven 配置(Mave Configuration)

填寫信息以下:

默認 settings 提供(Default settings provider): Settings file in filesystem

文件路徑(File Path): /usr/local/apache-maven-3.6.1/conf/settings.xml

默認全局 settings 提供(Default global settings provider)Global settings filesystem

文件路徑(File Path): /usr/local/apache-maven-3.6.1/conf/settings.xml

 Maven 安裝

填寫信息以下:

Namemaven-3.6.1

 MAVEN_HOME/usr/local/apache-maven-3.6.1

能夠選擇自動安裝(Install automatically)這裏不勾選自動安裝。

 保存(save)

13Jenkins部署java項目-安裝插件

 系統管理-->管理插件(Manage Plugins),檢查是否已經安裝 Maven Integration plugin(建立maven相關項目任務時要用到) Deploy to container Plugin(用於把war包發佈到遠程),若沒有安裝則須要安裝這兩個插件(jenkins上找到可直接安裝)

 安裝完插件後,須要重啓jenkinssystemctl restart jenkins

14Jenkins部署java項目-構建job

 登陸jenkins,點擊新建Item」 進入頁面填寫以下內容:

輸入一個任務名稱:(任務名稱自定義)--選擇 構建一個maven項目」-->點擊肯定」     後會跳轉到一個新頁面(這個新建的任務項目頁面)

 General頁面填寫:

描述: 根據自身要作的事情任務項目進行描述

 源碼管理

 Git

 Repositories

 Repository URL git@gitlab.example.com:java/java_test.git

 Credentials 添加jenkins機器上的密鑰,用於認證git(已經上傳過公鑰給git上)

 添加憑據(密鑰)

 Domain 全局憑據(unrestricted)

 類型(Kind) SSH Username with private key

 範圍(Scope) 全局(Jenkins,nodes,items,all child items,etc)

 Username git

 Private Key 點選 Enter directly,然KeyADD密鑰

 選擇 git (當前上一步新加的git認證)

 構建觸發器  、構建環境 Pre Steps  保持默認

 Build

 Root POM 默認 pom.xml  不作修改

 Goals and options 編輯mave時用到的一些選項,能夠留空,當前我們這填寫了: clean install -D maven.test.skip=true

 Post Steps、構建設置 保持默認

 構建後操做

 Editable Email Notification

 Project Recipient List 加入郵箱地址$DEFAULT_RECIPIENTS,254266155@qq.com

應用,保存。能夠償試 構建job,查看 控制檯輸出,有以下報錯:

[ERROR] COMPILATION ERROR : [INFO] ------------------------------------------------------------- [ERROR] Unable to locate the Javac Compiler in:   /usr/lib/jvm/java-1.8.0-openjdk-1.8.0.212.b04-0.el7_6.x86_64/jre/../lib/tools.jar Please ensure you are using JDK 1.4 or above and not a JRE (the com.sun.tools.javac.Main class is required). In most cases you can change the location of your Java installation by setting the JAVA_HOME environment variable. [INFO] 1 error [INFO] -------------------------------------------------------------

[INFO] ------------------------------------------------------------------------ [INFO] Reactor Summary for zrlog 2.1.3: [INFO] [INFO] zrlog .............................................. SUCCESS [ 30.534 s] [INFO] common ............................................. FAILURE [01:39 min] [INFO] data ............................................... SKIPPED [INFO] service ............................................ SKIPPED [INFO] web ................................................ SKIPPED [INFO] ------------------------------------------------------------------------ [INFO] BUILD FAILURE [INFO] ------------------------------------------------------------------------ [INFO] Total time:  02:13 min [INFO] Finished at: 2019-06-13T20:32:33+08:00 [INFO] ------------------------------------------------------------------------

[ERROR] Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:2.3.2:compile (default-compile) on project common: Compilation failure [ERROR] Unable to locate the Javac Compiler in: [ERROR] /usr/lib/jvm/java-1.8.0-openjdk-1.8.0.212.b04-0.el7_6.x86_64/jre/../lib/tools.jar [ERROR] Please ensure you are using JDK 1.4 or above and [ERROR] not a JRE (the com.sun.tools.javac.Main class is required). [ERROR] In most cases you can change the location of your Java [ERROR] installation by setting the JAVA_HOME environment variable. [ERROR] -> [Help 1] [ERROR] [ERROR] To see the full stack trace of the errors, re-run Maven with the -e switch. [ERROR] Re-run Maven using the -X switch to enable full debug logging. [ERROR] [ERROR] For more information about the errors and possible solutions, please read the following articles: [ERROR] [Help 1] http://cwiki.apache.org/confluence/display/MAVEN/MojoFailureException [ERROR] [ERROR] After correcting the problems, you can resume the build with the command [ERROR]   mvn <goals> -rf :common Waiting for Jenkins to finish collecting data

java配置出錯,須要從新配置。可能與當前使用安裝的openjdk有關,考慮手動安裝jdk(也能夠使用jenkins

系統管理(manage jenkins)-->全局工具配置(Global Tool Configuration)-->JDK  路徑下能夠選擇自動安裝,也能夠手動安裝後配置 別名 和 JAVA_HOME

15Jenkins部署java項目-手動安裝JDK

 安裝

# cd /usr/local/src/

JDK官網下載http://www.oracle.com/techZnetwork/java/javase/downloads/jdk8-downloads-2133151.html

# tar zxvf jdk-8u211-linux-x64.tar.gz

# mv jdk1.8.0_211/ /usr/local/jdk1.8

# systemctl restart jenkins

 jenkins上配置java_home

系統管理(manage jenkins)-->全局工具配置(Global Tool Configuration)-->JDK

JDK安裝欄填寫以下內容

別名 jdk1.8

JAVA_HOME/usr/local/jdk1.8

再去構建成功,能夠查看 控制檯輸出 日誌,以下爲打好的war包,但尚未上傳到web(tomcat)服務上去

/var/lib/jenkins/workspace/測試java代碼發佈到web/target/zrlog-2.1.3.war

16Jenkins部署java項目-發佈war

 進入項目頁面-->配置-->構建後操做  進行以下配置:

增長構建後操做步驟-->選擇 Deploy war/ear to a container 填寫:

WAR/EAR files 」**/*.war「

Contex path: 留空

Containers: 選擇Tomcat 8.x(根據自動web服務器部署的應用選擇)

Tomcat URL: 填寫war發要發佈到的機器url,如 http://192.168.128.128:8080/

Credentials: 點擊右側的ADD,添加用戶名和密碼(name="admin" password="jenkins123"

 應用,保存

 而後再去構建,同時能夠看控制檯輸出 日誌信息

 同時根據信息狀況能夠到web服務器(192.168.128.128)上看是否相關內容發佈過來 /usr/local/tomcat/webapps

相關文章
相關標籤/搜索