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這樣的檔