Fork me on GitHub

Jenkins之Jenkins部署

前言

这里介绍两种常见环境的安装CentOS 7系统及Docker安装方式,其他安装方式参考官网说明即可.

部署环境说明

1
2
3
4
5
6
root@instance-8q3jv2np ~]# cat /etc/redhat-release
CentOS Linux release 7.2.1511 (Core)
[root@instance-8q3jv2np ~]# uname -m
x86_64
[root@instance-8q3jv2np ~]# uname -r
3.10.0-514.26.2.el7.x86_64

RedHat Linux RPM packages for Jenkins

Jenkins安装

官网资料

1
2
3
4
5
6
7
8
9
10
11
[root@instance-8q3jv2np ~]# wget -O /etc/yum.repos.d/jenkins.repo https://pkg.jenkins.io/redhat-stable/jenkins.repo
[root@instance-8q3jv2np ~]# rpm --import https://pkg.jenkins.io/redhat-stable/jenkins.io.key
[root@instance-8q3jv2np ~]# yum install -y java-1.8.0-openjdk
[root@instance-8q3jv2np ~]# java -version
[root@instance-8q3jv2np ~]# yum install -y jenkins
[root@instance-8q3jv2np ~]# vim /etc/sysconfig/jenkins
JENKINS_PORT="9090" # 修改启动端口,本机端口冲突可以考虑,默认8080
[root@instance-8q3jv2np ~]# /etc/init.d/jenkins start
[root@instance-8q3jv2np ~]# chkconfig jenkins on
[root@instance-8q3jv2np ~]# netstat -tunlp|grep java
tcp6 0 0 :::9090 :::* LISTEN 28491/java

RPM安装内容

以CentOS 7 安装案例讲解:

1
2
3
4
5
6
7
8
9
10
[root@instance-8q3jv2np ~]# rpm -ql jenkins
/etc/init.d/jenkins # 启动脚本
/etc/logrotate.d/jenkins # 日志轮询配置
/etc/sysconfig/jenkins # 相关变量配置文件,各类自定义配置,优化等等
/usr/lib/jenkins # jenkins lib存储路径
/usr/lib/jenkins/jenkins.war # Jenkins war包,后期升级替换该文件即可
/usr/sbin/rcjenkins
/var/cache/jenkins # war包解压目录
/var/lib/jenkins # 默认工作目录**重要**需要备份,线上环境应该变更该目录到磁盘比较到的盘符
/var/log/jenkins # 运行日志

配置文件说明

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
[root@instance-8q3jv2np ~]# grep "^[a-Z]" /etc/sysconfig/jenkins
JENKINS_HOME="/var/lib/jenkins" # jenkins工作目录
JENKINS_JAVA_CMD=""
JENKINS_USER="jenkins" # jenkinx启动用户
JENKINS_JAVA_OPTIONS="-Djava.awt.headless=true"
JENKINS_PORT="8080" # 端口
JENKINS_LISTEN_ADDRESS=""
JENKINS_HTTPS_PORT=""
JENKINS_HTTPS_KEYSTORE=""
JENKINS_HTTPS_KEYSTORE_PASSWORD=""
JENKINS_HTTPS_LISTEN_ADDRESS=""
JENKINS_DEBUG_LEVEL="5"
JENKINS_ENABLE_ACCESS_LOG="no"
JENKINS_HANDLER_MAX="100" # 最大连接
JENKINS_HANDLER_IDLE="20"
JENKINS_ARGS=""

Web界面安装

访问Jenkins页面,进行其他设置 http://{IP}:9090
根据提示获取密码并验证

1
2
[root@instance-8q3jv2np ~]# cat /var/lib/jenkins/secrets/initialAdminPassword
97f6f25f09234b77b38b99e0836ff865

选择安装插件,可以选择推荐或者自定义

等待插件安装完成

设置管理员账号密码

设置完毕,点击开始使用Jenkins

登录界面

Jenkins登录后界面,到此为止安装完毕

Docker Install for Jenkins

Jenkins docker hub地址
Official Jenkins Docker image

快速部署docker环境

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo
wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
yum remove -y docker docker-common docker-selinux docker-engine
yum install -y yum-utils device-mapper-persistent-data lvm2
yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
yum-config-manager --enable docker-ce-edge
yum-config-manager --enable docker-ce-test
yum list docker-ce --showduplicates | sort -r |grep stable
yum install -y docker-ce-17.06.2.ce
systemctl start docker
systemctl enable docker

mkdir -p /etc/docker # 为了后期方便添加阿里云的加速镜像站
tee /etc/docker/daemon.json <<-'EOF'
{
"registry-mirrors": ["https://k9lgui7f.mirror.aliyuncs.com"]
}
EOF
systemctl daemon-reload
systemctl restart docker

启动Jenkins Docker容器

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
[root@instance-8q3jv2np ~]# docker pull jenkins/jenkins:lts
[root@instance-8q3jv2np ~]# docker run -p 9090:8080 -p 50000:50000 -v jenkins_home:/var/jenkins_home jenkins/jenkins:lts
Running from: /usr/share/jenkins/jenkins.war
webroot: EnvVars.masterEnvVars.get("JENKINS_HOME")
Dec 16, 2017 2:48:52 PM Main deleteWinstoneTempContents
WARNING: Failed to delete the temporary Winstone file /tmp/winstone/jenkins.war
Dec 16, 2017 2:48:52 PM org.eclipse.jetty.util.log.Log initialized
INFO: Logging initialized @1787ms to org.eclipse.jetty.util.log.JavaUtilLog
Dec 16, 2017 2:48:53 PM winstone.Logger logInternal
INFO: Beginning extraction from war file
Dec 16, 2017 2:48:57 PM org.eclipse.jetty.server.handler.ContextHandler setContextPath
WARNING: Empty contextPath
Dec 16, 2017 2:48:57 PM org.eclipse.jetty.server.Server doStart
INFO: jetty-9.4.z-SNAPSHOT
Dec 16, 2017 2:48:59 PM org.eclipse.jetty.webapp.StandardDescriptorProcessor visitServlet
INFO: NO JSP Support for /, did not find org.eclipse.jetty.jsp.JettyJspServlet
Dec 16, 2017 2:48:59 PM org.eclipse.jetty.server.session.DefaultSessionIdManager doStart
INFO: DefaultSessionIdManager workerName=node0
Dec 16, 2017 2:48:59 PM org.eclipse.jetty.server.session.DefaultSessionIdManager doStart
INFO: No SessionScavenger set, using defaults
Dec 16, 2017 2:48:59 PM org.eclipse.jetty.server.session.HouseKeeper startScavenging
INFO: Scavenging every 660000ms
Jenkins home directory: /var/jenkins_home found at: EnvVars.masterEnvVars.get("JENKINS_HOME")
Dec 16, 2017 2:49:02 PM org.eclipse.jetty.server.handler.ContextHandler doStart
INFO: Started w.@493dfb8e{/,file:///var/jenkins_home/war/,AVAILABLE}{/var/jenkins_home/war}
Dec 16, 2017 2:49:02 PM org.eclipse.jetty.server.AbstractConnector doStart
INFO: Started ServerConnector@1fc0053e{HTTP/1.1,[http/1.1]}{0.0.0.0:8080}
Dec 16, 2017 2:49:02 PM org.eclipse.jetty.server.Server doStart
INFO: Started @11351ms
Dec 16, 2017 2:49:02 PM winstone.Logger logInternal
INFO: Winstone Servlet Engine v4.0 running: controlPort=disabled
Dec 16, 2017 2:49:03 PM jenkins.InitReactorRunner$1 onAttained
INFO: Started initialization
Dec 16, 2017 2:49:03 PM jenkins.InitReactorRunner$1 onAttained
INFO: Listed all plugins
Dec 16, 2017 2:49:06 PM jenkins.InitReactorRunner$1 onAttained
INFO: Prepared all plugins
Dec 16, 2017 2:49:06 PM jenkins.InitReactorRunner$1 onAttained
INFO: Started all plugins
Dec 16, 2017 2:49:07 PM jenkins.InitReactorRunner$1 onAttained
INFO: Augmented all extensions
Dec 16, 2017 2:49:09 PM jenkins.InitReactorRunner$1 onAttained
INFO: Loaded all jobs
Dec 16, 2017 2:49:10 PM hudson.model.AsyncPeriodicWork$1 run
INFO: Started Download metadata
Dec 16, 2017 2:49:10 PM jenkins.slaves.DeprecatedAgentProtocolMonitor initializerCheck
WARNING: This Jenkins instance uses deprecated Remoting protocols: CLI-connect,CLI2-connect,JNLP-connect,JNLP2-connectIt may impact stability of the instance. If newer protocol versions are supported by all system components (agents, CLI and other clients), it is highly recommended to disable the deprecated protocols.
Dec 16, 2017 2:49:12 PM jenkins.util.groovy.GroovyHookScript execute
INFO: Executing /var/jenkins_home/init.groovy.d/tcp-slave-agent-port.groovy
Dec 16, 2017 2:49:13 PM jenkins.InitReactorRunner$1 onAttained
INFO: Completed initialization
Dec 16, 2017 2:49:14 PM org.springframework.context.support.AbstractApplicationContext prepareRefresh
INFO: Refreshing org.springframework.web.context.support.StaticWebApplicationContext@4d13a46: display name [Root WebApplicationContext]; startup date [Sat Dec 16 14:49:14 UTC 2017]; root of context hierarchy
Dec 16, 2017 2:49:14 PM org.springframework.context.support.AbstractApplicationContext obtainFreshBeanFactory
INFO: Bean factory for application context [org.springframework.web.context.support.StaticWebApplicationContext@4d13a46]: org.springframework.beans.factory.support.DefaultListableBeanFactory@6af42668
Dec 16, 2017 2:49:14 PM org.springframework.beans.factory.support.DefaultListableBeanFactory preInstantiateSingletons
INFO: Pre-instantiating singletons in org.springframework.beans.factory.support.DefaultListableBeanFactory@6af42668: defining beans [authenticationManager]; root of factory hierarchy
Dec 16, 2017 2:49:14 PM org.springframework.context.support.AbstractApplicationContext prepareRefresh
INFO: Refreshing org.springframework.web.context.support.StaticWebApplicationContext@63a30030: display name [Root WebApplicationContext]; startup date [Sat Dec 16 14:49:14 UTC 2017]; root of context hierarchy
Dec 16, 2017 2:49:14 PM org.springframework.context.support.AbstractApplicationContext obtainFreshBeanFactory
INFO: Bean factory for application context [org.springframework.web.context.support.StaticWebApplicationContext@63a30030]: org.springframework.beans.factory.support.DefaultListableBeanFactory@1131f407
Dec 16, 2017 2:49:14 PM org.springframework.beans.factory.support.DefaultListableBeanFactory preInstantiateSingletons
INFO: Pre-instantiating singletons in org.springframework.beans.factory.support.DefaultListableBeanFactory@1131f407: defining beans [filter,legacy]; root of factory hierarchy
Dec 16, 2017 2:49:15 PM jenkins.install.SetupWizard init
INFO:

*************************************************************
*************************************************************
*************************************************************

Jenkins initial setup is required. An admin user has been created and a password generated.
Please use the following password to proceed to installation:

a2f85d4d845940e2a98824834e46aff3

This may also be found at: /var/jenkins_home/secrets/initialAdminPassword

*************************************************************
*************************************************************
*************************************************************

--> setting agent port for jnlp
--> setting agent port for jnlp... done
Dec 16, 2017 2:49:38 PM hudson.model.UpdateSite updateData
INFO: Obtained the latest update center data file for UpdateSource default
Dec 16, 2017 2:49:38 PM hudson.WebAppMain$3 run
..................
[root@instance-8q3jv2np ~]# netstat -tunlp|grep 9090
tcp6 0 0 :::9090 :::* LISTEN 29588/docker-proxy

Web界面安装和RPM安装一致不在赘述
由于启动时设置挂载目录,可以在宿主机看到容器内工作目录下的内容

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
[root@instance-8q3jv2np _data]# cd /var/lib/docker/volumes/jenkins_home/_data
[root@instance-8q3jv2np _data]# ls -l
total 92
-rw-r--r-- 1 1000 1000 1719 Dec 16 22:49 config.xml
-rw-r--r-- 1 1000 1000 102 Dec 16 22:48 copy_reference_file.log
-rw-r--r-- 1 1000 1000 156 Dec 16 22:49 hudson.model.UpdateCenter.xml
-rw-r--r-- 1 1000 1000 370 Dec 16 22:53 hudson.plugins.git.GitTool.xml
-rw------- 1 1000 1000 1712 Dec 16 22:49 identity.key.enc
drwxr-xr-x 2 1000 1000 4096 Dec 16 22:48 init.groovy.d
-rw-r--r-- 1 1000 1000 94 Dec 16 22:49 jenkins.CLI.xml
-rw-r--r-- 1 1000 1000 6 Dec 16 22:55 jenkins.install.InstallUtil.lastExecVersion
-rw-r--r-- 1 1000 1000 6 Dec 16 22:55 jenkins.install.UpgradeWizard.state
drwxr-xr-x 2 1000 1000 4096 Dec 16 22:49 jobs
drwxr-xr-x 3 1000 1000 4096 Dec 16 22:49 logs
-rw-r--r-- 1 1000 1000 907 Dec 16 22:49 nodeMonitors.xml
drwxr-xr-x 2 1000 1000 4096 Dec 16 22:49 nodes
drwxr-xr-x 74 1000 1000 12288 Dec 16 22:53 plugins
-rw-r--r-- 1 1000 1000 64 Dec 16 22:49 secret.key
-rw-r--r-- 1 1000 1000 0 Dec 16 22:49 secret.key.not-so-secret
drwx------ 4 1000 1000 4096 Dec 16 22:55 secrets
drwxr-xr-x 2 1000 1000 4096 Dec 16 22:52 updates
drwxr-xr-x 2 1000 1000 4096 Dec 16 22:49 userContent
drwxr-xr-x 3 1000 1000 4096 Dec 16 22:55 users
drwxr-xr-x 10 1000 1000 4096 Dec 16 22:48 war
drwxr-xr-x 2 1000 1000 4096 Dec 16 22:53 workflow-libs

参考资料

官网资料
Jenkins与网站代码上线解决方案

======================================================
希望各位朋友支持一下

本文作者:dongsheng
本文地址https://mds1455975151.github.io/archives/a8c286cc.html
版权声明:转载请注明出处!

坚持技术分享,您的支持将鼓励我继续创作!