安裝jenkins
筆記日期:2018-02-09
- 26.1 jenkins介紹
- 26.2 jenkins安裝
- 26.3 了解jenkins
jenkins介紹
我們都知道在公司裏,一個軟件的開發到發布,需要經歷一系列的流程,而且目前也已經形成了一套標準流程。一個大的功能模塊的開發,往往是幾個人一起進行的,而每個人寫完一些小功能的代碼後,一般都需要將代碼集成到主幹,或者說將代碼都合並在一起。這種將代碼集成到主幹的操作,可能一天需要進行很多次,而且是多人進行。這樣的一個環節就是持續集成,在這個開發到發布的流程中最重要的組成部分就是持續集成。
開發到發布的流程大致如下:
- 產品設計成型 -> 開發人員開發代碼 -> 測試人員測試功能 -> 運維人員發布上線
其中的幾個概念:
- 持續集成 (Continuous integration,簡稱CI),頻繁地(一天多次)將代碼集成到主幹。
- 持續交付(Continuous delivery),頻繁地(一天多次)將集成的代碼交付給測試人員測試。
- 持續部署(continuous deployment),頻繁地(一天多次)將測試好的代碼交給運維人員部署。
示意圖:
關於持續集成的詳細可參考以下文章:
http://www.ruanyifeng.com/blog/2015/09/continuous-integration.html
由於這種頻繁地、一天多次的操作,重復性很高,所以我們希望可以自動化的去完成這些重復的環節,提高整個流程的效率。這時我們就需要借助一些工具來完成自動化了,對於小公司來說收費的工具成本太高劃不來,所以像Jenkins這樣開源的、優秀的工具就流行了起來。
Jenkins是一個用Java編寫的開源的持續集成工具,用於監控持續重復的工作,旨在提供一個開放易用的軟件平臺,使軟件的持續集成變成可能。在與Oracle發生爭執後,項目從Hudson項目復刻。
Jenkins提供了軟件開發的持續集成服務。它運行在Servlet容器中(例如Apache Tomcat)。它支持軟件配置管理(SCM)工具(包括AccuRev SCM、CVS、Subversion、Git、Perforce、Clearcase和RTC),可以執行基於Apache Ant和Apache Maven的項目,以及任意的Shell腳本和Windows批處理命令。Jenkins的主要開發者是川口耕介。Jenkins是在MIT許可證下發布的自由軟件。
可以通過各種手段觸發構建。例如提交給版本控制系統時被觸發,也可以通過類似Cron的機制調度,也可以在其他的構建已經完成時,還可以通過一個特定的URL進行請求。
Jenkins概要:
- Jenkins是一個開源的、可擴展的持續集成、交付、部署(軟件/代碼的編譯、打包、部署)基於web界面的平臺。
- Jenkins是一個工具集,提供了各種各樣的插件
- 比如獲取git上最新的代碼
- 比如可以幫你編譯源代碼
- 比如可以調用自定義的shell腳本遠程執行命令
jenkins官網地址如下:
https://jenkins.io
jenkins安裝
jenkins的官方文檔地址如下:
https://jenkins.io/doc/
安裝jenkins的最低配置: 不少於256M內存,不低於1G磁盤,jdk版本>=8
如果只需要java的運行環境的話,用yum安裝個openjdk就可以了,安裝命令如下:
yum install -y java-1.8.0-openjdk
下載jenkins的yum源:
[root@server ~]# wget -O /etc/yum.repos.d/jenkins.repo https://pkg.jenkins.io/redhat/jenkins.repo
安裝jenkins.io.key:
[root@server ~]# rpm --import https://pkg.jenkins.io/redhat/jenkins.io.key
yum安裝jenkins:
[root@server ~]# yum install -y jenkins
安裝完之後啟動jenkins服務:
[root@server ~]# systemctl start jenkins
[root@server ~]# ps aux |grep jenkins
jenkins 4231 181 18.6 4089456 348764 ? Ssl 19:16 0:25 /usr/bin/java -Dcom.sun.akuma.Daemon=daemonized -Djava.awt.headless=true -DJENKINS_HOME=/var/lib/jenkins -jar /usr/lib/jenkins/jenkins.war --logfile=/var/log/jenkins/jenkins.log --webroot=/var/cache/jenkins/war --daemon --httpPort=8080 --debug=5 --handlerCountMax=100 --handlerCountMaxIdle=20
root 4284 0.0 0.0 112652 964 pts/0 R+ 19:16 0:00 grep --color=auto jenkins
[root@server ~]# netstat -lntp |grep 8080
tcp6 0 0 :::8080 :::* LISTEN 4231/java
[root@server ~]#
接著就可以在windows上的瀏覽器裏,訪問你Linux的8080端口,進行 Jenkins 的安裝:
按照以上提示,查詢默認的密碼:
[root@server ~]# cat /var/lib/jenkins/secrets/initialAdminPassword
eeee910298f4422195f8d351704c43fa
[root@server ~]#
點擊繼續後會進行一段時間的初始化,然後就會顯示以下界面:
之後就會開始安裝插件了:
安裝完插件之後,就會進入創建管理員用戶的界面:
安裝完成:
了解jenkins
以上我們已經安裝好了jenkins,現在我們先簡單了解一下jenkins的一些目錄:
1.jenkins的安裝目錄:
[root@server ~]# ll /var/lib/jenkins
total 56
-rw-r--r-- 1 jenkins jenkins 1823 Feb 9 19:41 config.xml
-rw-r--r-- 1 jenkins jenkins 156 Feb 9 19:16 hudson.model.UpdateCenter.xml
-rw-r--r-- 1 jenkins jenkins 370 Feb 9 19:30 hudson.plugins.git.GitTool.xml
-rw------- 1 jenkins jenkins 1712 Feb 9 19:16 identity.key.enc
-rw-r--r-- 1 jenkins jenkins 94 Feb 9 19:16 jenkins.CLI.xml
-rw-r--r-- 1 jenkins jenkins 5 Feb 9 19:41 jenkins.install.InstallUtil.lastExecVersion
-rw-r--r-- 1 jenkins jenkins 5 Feb 9 19:41 jenkins.install.UpgradeWizard.state
drwxr-xr-x 2 jenkins jenkins 6 Feb 9 19:16 jobs
drwxr-xr-x 3 jenkins jenkins 18 Feb 9 19:16 logs
-rw-r--r-- 1 jenkins jenkins 907 Feb 9 19:16 nodeMonitors.xml
drwxr-xr-x 2 jenkins jenkins 6 Feb 9 19:16 nodes
drwxr-xr-x 74 jenkins jenkins 8192 Feb 9 19:30 plugins
-rw-r--r-- 1 jenkins jenkins 64 Feb 9 19:16 secret.key
-rw-r--r-- 1 jenkins jenkins 0 Feb 9 19:16 secret.key.not-so-secret
drwx------ 4 jenkins jenkins 4096 Feb 9 19:41 secrets
drwxr-xr-x 2 jenkins jenkins 4096 Feb 9 19:29 updates
drwxr-xr-x 2 jenkins jenkins 23 Feb 9 19:16 userContent
drwxr-xr-x 3 jenkins jenkins 18 Feb 9 19:41 users
drwxr-xr-x 2 jenkins jenkins 6 Feb 9 19:30 workflow-libs
[root@server ~]#
簡單介紹幾個目錄:
- jobs目錄裏存儲著我們在jenkins上創建的任務
- logs日誌目錄
- nodes在多節點的時候要用到
- plugins是jenkins插件的存儲目錄
- secrets密碼密鑰相關的目錄
- updates版本更新時要用到的目錄
- users存儲用戶信息的目錄
- workflow-libs工作庫
2.jenkins的配置文件:
[root@server ~]# vim /etc/sysconfig/jenkins
## Path: Development/Jenkins
## Description: Jenkins Automation Server
## Type: string
## Default: "/var/lib/jenkins"
## ServiceRestart: jenkins
#
# Directory where Jenkins store its configuration and working
# files (checkouts, build reports, artifacts, ...).
#
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
#
# Unix user account that runs the Jenkins daemon
# Be careful when you change this, as you need to update
# permissions of $JENKINS_HOME and /var/log/jenkins.
#
JENKINS_USER="jenkins"
## Type: string
## Default: "false"
## ServiceRestart: jenkins
#
# Whether to skip potentially long-running chown at the
# $JENKINS_HOME location. Do not enable this, "true", unless
# you know what you‘re doing. See JENKINS-23273.
#
#JENKINS_INSTALL_SKIP_CHOWN="false"
## Type: string
## Default: "-Djava.awt.headless=true"
## ServiceRestart: jenkins
#
# Options to pass to java when running Jenkins.
#
JENKINS_JAVA_OPTIONS="-Djava.awt.headless=true"
## Type: integer(0:65535)
## Default: 8080
## ServiceRestart: jenkins
#
# Port Jenkins is listening on.
# Set to -1 to disable
#
JENKINS_PORT="8080"
## Type: string
## Default: ""
## ServiceRestart: jenkins
#
# IP address Jenkins listens on for HTTP requests.
# Default is all interfaces (0.0.0.0).
#
JENKINS_LISTEN_ADDRESS=""
## Type: integer(0:65535)
## Default: ""
## ServiceRestart: jenkins
#
# HTTPS port Jenkins is listening on.
# Default is disabled.
#
JENKINS_HTTPS_PORT=""
## Type: string
## Default: ""
## ServiceRestart: jenkins
#
# Path to the keystore in JKS format (as created by the JDK ‘keytool‘).
# Default is disabled.
#
JENKINS_HTTPS_KEYSTORE=""
## Type: string
## Default: ""
## ServiceRestart: jenkins
#
# Password to access the keystore defined in JENKINS_HTTPS_KEYSTORE.
# Default is disabled.
#
JENKINS_HTTPS_KEYSTORE_PASSWORD=""
## Type: string
## Default: ""
## ServiceRestart: jenkins
#
# IP address Jenkins listens on for HTTPS requests.
# Default is disabled.
#
JENKINS_HTTPS_LISTEN_ADDRESS=""
## Type: integer(1:9)
## Default: 5
## ServiceRestart: jenkins
#
# Debug level for logs -- the higher the value, the more verbose.
# 5 is INFO.
#
JENKINS_DEBUG_LEVEL="5"
## Type: yesno
## Default: no
## ServiceRestart: jenkins
#
# Whether to enable access logging or not.
#
JENKINS_ENABLE_ACCESS_LOG="no"
## Type: integer
## Default: 100
## ServiceRestart: jenkins
#
# Maximum number of HTTP worker threads.
#
JENKINS_HANDLER_MAX="100"
## Type: integer
## Default: 20
## ServiceRestart: jenkins
#
# Maximum number of idle HTTP worker threads.
#
JENKINS_HANDLER_IDLE="20"
## Type: string
## Default: ""
## ServiceRestart: jenkins
#
# Pass arbitrary arguments to Jenkins.
# Full option list: java -jar jenkins.war --help
#
JENKINS_ARGS=""
簡單介紹一下jenkins配置文件中一些參數的含義:
1.JENKINS_HOME # 定義你的jenkins安裝目錄的路徑
2.JENKINS_JAVA_CMD # 定義java的可執行程序的路徑
3.JENKINS_USER # 定義啟動jenkins服務的用戶
4.JENKINS_JAVA_OPTIONS # java虛擬機的內存設置
5.JENKINS_PORT # 定義jenkins服務監聽的端口(http)
6.JENKINS_LISTEN_ADDRESS # 定義jenkins服務監聽的ip地址
7.JENKINS_HTTPS_PORT # 定義https協議的監聽端口
8.JENKINS_HTTPS_KEYSTORE # 定義ssl密鑰文件的路徑
9.JENKINS_HTTPS_KEYSTORE_PASSWORD # 定義ssl密鑰文件的密碼
10.JENKINS_HTTPS_LISTEN_ADDRESS # 定義https協議的監聽ip
11.JENKINS_DEBUG_LEVEL # 定義日誌的調試級別——值越高,日誌記錄越詳細
12.JENKINS_ENABLE_ACCESS_LOG # 定義是否啟用訪問日誌記錄
13.JENKINS_HANDLER_MAX # 定義jenkins服務的最大工作線程數量
14.JENKINS_HANDLER_IDLE # 定義空閑工作線程的最大數量
15.JENKINS_ARGS # 定義jenkins的參數選項
3.jenkins的日誌文件所在的目錄:
[root@server ~]# ll /var/log/jenkins
total 156
-rw-r--r-- 1 jenkins jenkins 158418 Feb 9 19:30 jenkins.log
[root@server ~]#
安裝jenkins