1. 程式人生 > >26.jenkins介紹、安裝、瞭解

26.jenkins介紹、安裝、瞭解

26.1 jenkins介紹

26.2 jenkins安裝

26.3 瞭解jenkins

 

 

 

26.1 jenkins介紹

 

 

 

 

 

產品設計成型 -> 開發人員開發程式碼 -> 測試人員測試功能 -> 運維人員釋出上線

持續整合 (Continuous integration,簡稱CI)

#每個人負責不同的模組,最後彙總到一起。這個過程叫整合。整合的頻率可能會很多,比如今天整合一次,明天整合兩次,這回設計到工作量。可能單獨的模組測試沒有問題,那整合到一起呢,也是需要測試。而持續整合就是我們不停的持續的去做整合

持續交付(Continuous delivery)

#1.我們把這些程式碼(整合的模組)交給測試人員,讓他們去測試。持續交付就是不停的整合不停的去交付

#2.我們把成型的產品交付給需要人員(使用者)

持續部署(continuous deployment)

#運維人員需要把成型的程式碼部署到線上去,讓他提供服務

所以可以理解為先交付在部署,也可以理解為先部署在交付。因為交付有兩層含義,一個交付給測試,一個交付給使用者

!!!因為以上我們要把它搞成自動化,因為太頻繁了(持續的),很容易出錯。我們就可以讓他在後臺不斷的去整合、不斷地去交付、不斷的去部署,而Jenkins就是一個持續整合、交付、部署的工具

參考 http://www.ruanyifeng.com/blog/2015/09/continuous-integration.html

 

1.官網 https://jenkins.io

 

#作為領先的開源自動化伺服器,Jenkins提供數百個外掛來支援構建,部署和自動化任何專案(php、java都可以)。 官網用很簡單的一句話解釋了jenkins

2.Jenkins是一個開源的、可擴充套件的持續整合、交付、部署(軟體/程式碼的編譯、打包、部署)基於web介面的平臺。

3.Jenkins是一個工具集,提供了各種各樣的外掛

比如獲取git上最新的程式碼

比如可以幫你編譯原始碼

比如可以呼叫自定義的shell指令碼遠端執行命令

官方文件 https://jenkins.io/doc/

 

 

 

 

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

 

 

 

 

26.2 jenkins安裝

 

 

 

最低配置: 不少於256M記憶體,不低於1G磁碟,jdk版本>=8

1.安裝jdk1.8

yum install -y java-1.8.0-openjdk

#java開發。圖省事也可以yum一個openjdk。當然也可以根據之前學的去安裝一個jdk

2.wget -O /etc/yum.repos.d/jenkins.repo https://pkg.jenkins.io/redhat/jenkins.repo

# -O 在這裡是定義輸出檔名字。  如果不加這引數是直接把結果列印到螢幕上的。 

3.rpm --import https://pkg.jenkins.io/redhat/jenkins.io.key

#安裝jenkins的一個key

4.yum install -y jenkins

#到這,就會安裝一個最新的穩定版

5.systemctl start jenkins

6.less /var/log/jenkins/jenkins.log //查詢admin密碼

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

注意:

也可以用docker拉一個jenkins,用容器去啟動它

如果使用的是ubuntu就要去jenkins官方去看怎麼安裝。

[root@axinlinux-01 ~]# yum install -y java-1.8.0-openjdk

[root@axinlinux-01 ~]# wget -O /etc/yum.repos.d/jenkins.repo https://pkg.jenkins.io/redhat/jenkins.repo

--2019-06-10 14:03:08--  https://pkg.jenkins.io/redhat/jenkins.repo
正在解析主機 pkg.jenkins.io (pkg.jenkins.io)... 52.202.51.185
正在連線 pkg.jenkins.io (pkg.jenkins.io)|52.202.51.185|:443... 已連線。
已發出 HTTP 請求,正在等待迴應... 200 OK
長度:71
正在儲存至: “/etc/yum.repos.d/jenkins.repo”

100%[=====================================================>] 71          --.-K/s 用時 0s      

2019-06-10 14:03:18 (10.7 MB/s) - 已儲存 “/etc/yum.repos.d/jenkins.repo” [71/71])

[root@axinlinux-01 ~]# cat /etc/yum.repos.d/jenkins.repo #可以cat一下我們指定輸出的檔案。也就是說上一步的wget就是生成了這個檔案(在我們-O指定的目錄裡)。不wget的話也可以直接編輯這個檔案

[jenkins]

name=Jenkins

baseurl=http://pkg.jenkins.io/redhat

gpgcheck=1

[root@axinlinux-01 ~]# rpm --import https://pkg.jenkins.io/redhat/jenkins.io.key #因為上面的配置檔案gpgcheck=1,需要安裝jenkins的key

[root@axinlinux-01 ~]#yum install -y jenkins

[root@axinlinux-01 ~]# systemctl start jenkins

[root@axinlinux-01 ~]# less /var/log/jenkins/jenkins.log #找到初始化的密碼

Running from: /usr/lib/jenkins/jenkins.war
2019-06-10 07:50:23.695+0000 [id=1]     WARNING winstone.Logger#logInternal: Parameter handlerCountMax is now deprecated
2019-06-10 07:50:23.696+0000 [id=1]     WARNING winstone.Logger#logInternal: Parameter handlerCountMaxIdle is now deprecated
2019-06-10 07:50:24.079+0000 [id=1]     INFO    org.eclipse.jetty.util.log.Log#initialized: Logging initialized @1992ms to org.eclipse.jetty.util.log.JavaUtilLog
2019-06-10 07:50:24.804+0000 [id=1]     INFO    winstone.Logger#logInternal: Beginning extraction from war file
2019-06-10 07:50:33.147+0000 [id=1]     WARNING o.e.j.s.handler.ContextHandler#setContextPath: Empty contextPath
2019-06-10 07:50:33.329+0000 [id=1]     INFO    org.eclipse.jetty.server.Server#doStart: jetty-9.4.z-SNAPSHOT; built: 2019-05-02T00:04:53.875Z; git: e1bc35120a6617ee3df052294e433f3a25ce7097; jvm 1.8.0_212-b04
2019-06-10 07:50:34.622+0000 [id=1]     INFO    o.e.j.w.StandardDescriptorProcessor#visitServlet: NO JSP Support for /, did not find org.eclipse.jetty.jsp.JettyJspServlet
2019-06-10 07:50:34.769+0000 [id=1]     INFO    o.e.j.s.s.DefaultSessionIdManager#doStart: DefaultSessionIdManager workerName=node0
2019-06-10 07:50:34.769+0000 [id=1]     INFO    o.e.j.s.s.DefaultSessionIdManager#doStart: No SessionScavenger set, using defaults
2019-06-10 07:50:34.786+0000 [id=1]     INFO    o.e.j.server.session.HouseKeeper#startScavenging: node0 Scavenging every 600000ms
Jenkins home directory: /var/lib/jenkins found at: SystemProperties.getProperty("JENKINS_HOME")
2019-06-10 07:50:38.146+0000 [id=1]     INFO    o.e.j.s.handler.ContextHandler#doStart: Started/

This may also be found at: /var/lib/jenkins/secrets/initialAdminPassword #也可以到這去找

http://192.168.193.125:8080 #可以直接在瀏覽器訪問了

 

以上用360瀏覽器不成功。使用谷歌瀏覽器

 

接下來,他會按照自己的推薦去安裝外掛。之後的過程看下張

26.3 瞭解jenkins

 

 

安裝完外掛就會建立使用者

 

 

 

然後再回到linux伺服器上

[root@axinlinux-01 ~]# vim /etc/sysconfig/jenkins #jenkins配置檔案。以下簡單講解一下

JENKINS_HOME="/var/lib/jenkins" #home,就是jenkins程式放到了哪

JENKINS_JAVA_CMD="" #cmd,保持預設

JENKINS_USER="jenkins" #哪個使用者啟動的

JENKINS_HOME="/var/lib/jenkins"

## Type:        string
## Default:     ""
## ServiceRestart: jenkins
#
# Java executable to run Jenkins
# When left empty, we'll try to find the suitable Java.
#
JENKINS_JAVA_CMD=""

## Type:        string
## Default:     "jenkins"
## ServiceRestart: jenkins
#
"/etc/sysconfig/jenkins" 144L, 3116C

[root@axinlinux-01 ~]# cd /var/lib/jenkins/ #jenkins程式主目錄

[root@axinlinux-01 jenkins]# 

[root@axinlinux-01 jenkins]# ls

config.xml                           logs                      secrets
hudson.model.UpdateCenter.xml        nodeMonitors.xml          updates
identity.key.enc                     nodes                     userContent
jenkins.install.UpgradeWizard.state  plugins                   users
jenkins.telemetry.Correlator.xml     secret.key
jobs                                 secret.key.not-so-secret

 

[root@axinlinux-01 jenkins]# ls jobs/ #jobs目錄就是瀏覽器上建立的任務。比如建立一個任務叫axin,在這個jobs目錄下就會有一個axin的目錄 常關注的!!

[root@axinlinux-01 jenkins]# ls logs/ #logs是日誌相關

tasks

[root@axinlinux-01 jenkins]# ls nodes/ #多節點的時候用到的

[root@axinlinux-01 jenkins]# ls plugins/ #外掛所在的目錄。也是非常重要的目錄。比如你先加一個外掛,這個外掛就存在這個目錄裡 常關注的!!

[root@axinlinux-01 jenkins]# ls secrets/ #密碼金鑰相關的

filepath-filters.d
initialAdminPassword
jenkins.model.Jenkins.crumbSalt
master.key
org.jenkinsci.main.modules.instance_identity.InstanceIdentity.KEY
slave-to-master-security-kill-switch
whitelisted-callables.d

[root@axinlinux-01 jenkins]# ls updates/ #升級相關的

default.json  hudson.tasks.Maven.MavenInstaller

[root@axinlinux-01 jenkins]# ls users/ #使用者相關的,比如我建立了一個admin,就會存在這個目錄下

admin_2141142232249431003  users.xml

 

如果,我們想要備份jenkins。就可以直接把jenkins目錄(/var/lib/jenkins)全部考走,到新的機器上就可以了。jenkins不需要藉助資料庫儲存資料。他的配置全部存在了.xml這樣的檔