jenkins安裝及代碼發布


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

1、引言

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

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

 持續交付(Continuous delivery)

 持續部署(Continuous deployment)

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

 

2Jenkins 介紹

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

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

 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

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM