1-Jenkins - 各平台环境搭建
before
本篇演示如何在各平台安装和升级Jenkins。
由于Jenkins可以以多种方式部署,本篇也都有涉及,但多种方式中,我推荐在centos中直接以rpm包的方式安装。这种方式,便于升级和管理。
前提
由于Jenkins基于Java开发,所以,Jenkins的运行依赖Java JRE(java runtime environment)环境。所以,我们要想使用Jenkins,必须:
- 硬件要求:256MB内存,建议大于512MB,当然越大越好!如果是docker形式安装,建议10GB的硬盘空间(用于Jenkins和docker镜像)
- Java 8及以上版本。
下载Jenkins
- 官网下载:https://www.jenkins.io/zh/download/
- rpm包:Jenkins官网下载,清华大学开源软件镜像站
- war包:https://get.jenkins.io/war-stable/
PS:推荐下载最新版的Jenkins,因为一些插件不支持低版本......
各平台配置Java环境
除了docker部署Jenkins,其他的方式部署Jenkins,都依赖Java环境,所以,先来把Java环境配置好了吧!
for linux
在Linux环境中,有tomcat、docker、rpm包这几种部署方式,这里我首推rpm包方式部署Jenkins。
before
- 首先要确保你的Java环境已经配置完毕:
[root@r ~]# java -version
openjdk version "1.8.0_252"
OpenJDK Runtime Environment (build 1.8.0_252-b09)
OpenJDK 64-Bit Server VM (build 25.252-b09, mixed mode)
[root@r ~]# ls /usr/bin/java*
/usr/bin/java
- 安装git:
[root@r ~]# yum install -y git
[root@r ~]# git --version
git version 1.8.3.1
- 查看
/etc/sysconf
目录下是否有jenkins
文件,有就删除:
[root@r ~]# ls /etc/sysconfig/jenkins*
/etc/sysconfig/jenkins
[root@r ~]# rm -rf /etc/sysconfig/jenkins
以rpm包的形式安装
centos7.3 + jenkins
清华源下载地址:https://mirrors.tuna.tsinghua.edu.cn/jenkins/redhat-stable/
请保证安装了Java环境和Git.
- 下载rpm包并且安装:
[root@cs ~]# cd /tmp/
[root@cs tmp]# wget https://mirrors.tuna.tsinghua.edu.cn/jenkins/redhat-stable/jenkins-2.263.1-1.1.noarch.rpm
[root@cs tmp]# rpm -ivh jenkins-2.263.1-1.1.noarch.rpm
[root@cs tmp]# rm -rf jenkins-2.263.1-1.1.noarch.rpm
安装后,Jenkins的主要目录:
/usr/lib/jenkins/
:jenkins安装目录,war包会放在这里,记住这个目录,因为后续如果升级Jenkins,就需要将新版本的war包放到这个目录。/etc/sysconfig/jenkins
:jenkins配置文件,端口、JENKINS_HOME
等都可以在这里配置/var/lib/jenkins/
:默认的JENKINS_HOME
,PS:安装后,这个目录还是空的,需要启动Jenkins进行初始化后才有文件。/var/log/jenkins/jenkins.log
:Jenkins日志文件,当然,初始安装后,这个文件也不存在。
- 修改默认配置:
[root@cs tmp]# vim /etc/sysconfig/jenkins
# 必要的!修改Jenkins运行用户为root
JENKINS_USER="root"
# 可选的!修改默认端口8080
JENKINS_PORT="6004"
- 想要配置插件之类的,都必须先启动一次Jenkins,完成初始化,这里使用systemctl管理Jenkins服务:
systemctl start jenkins # 启动Jenkins
systemctl stop jenkins # 停止Jenkins
systemctl restart jenkins # 重启Jenkins
systemctl status jenkins # 查看服务状态
systemctl enable jenkins # 设置开机启动
systemctl disenable jenkins # 禁止开机启动
systemctl is-enabled jenkins # 查看服务是否开机启动
[root@cs tmp]# systemctl start jenkins
- 启动Jenkins服务后(jenkins启动或者重启都要好一会儿,稍等等就好了),进入
/var/lib/jenkins/updates/
目录,执行:
[root@cs tmp]# cd /var/lib/jenkins/updates/
[root@cs updates]# ls
default.json hudson.tasks.Maven.MavenInstaller
[root@cs updates]# sed -i 's/http:\/\/updates.jenkins-ci.org\/download/https:\/\/mirrors.tuna.tsinghua.edu.cn\/jenkins/g' default.json && sed -i 's/http:\/\/www.google.com/https:\/\/www.baidu.com/g' default.json
[root@cs updates]# systemctl restart jenkins
由于Jenkins依赖各种插件,但这些插件又基本上都在国外....所以这一步是为了替换国内源。
- 重新启动Jenkins,然后从下面的路径中拷贝初始密码,去浏览器访问Jenkins监听的6004端口,进入新手教程:
[root@cs updates]# cat /var/lib/jenkins/secrets/initialAdminPassword
a9d3258b2dfc42058579d80505dc5752
- 在漫长的安装插件过程结束后,我们创建一个admin用户进行后续的访问,然后进行其他的配置。
完事了!
删除rpm包安装的Jenkins
[root@cs updates]# systemctl stop jenkins # 停止当前Jenkins服务
[root@cs updates]# rpm -e jenkins # rpm 卸载
warning: /etc/sysconfig/jenkins saved as /etc/sysconfig/jenkins.rpmsave
[root@cs updates]# rpm -ql jenkins # 检查是否卸载成功
package jenkins is not installed
[root@cs updates]# find / -iname jenkins # 检查是否存在残留文件
/var/lib/jenkins
/var/log/jenkins
/var/cache/jenkins
[root@cs updates]# find / -iname jenkins | xargs -n 1000 rm -rf # 删除残留文件
Tomcat部署Jenkins
虚拟机centos7.3 + Tomcat 8.5.55 + Jenkins
安装过程如下,简单来说就是下载Tomcat解压并且重命名,然后下载war包,之后启动Tomcat服务。
[root@C ~]# cd /opt/
[root@C opt]# wget https://mirrors.tuna.tsinghua.edu.cn/apache/tomcat/tomcat-8/v8.5.55/bin/apache-tomcat-8.5.55.tar.gz
[root@C opt]# tar -zxvf apache-tomcat-8.5.55.tar.gz && rm -rf apache-tomcat-8.5.55.tar.gz
[root@C opt]# mv apache-tomcat-8.5.55/ tomcat8
[root@C opt]# cd tomcat8/webapps/
[root@C webapps]# pwd
/opt/tomcat8/webapps
[root@C webapps]# wget http://mirrors.jenkins.io/war-stable/latest/jenkins.war
[root@C webapps]# ls
docs examples host-manager jenkins.war manager ROOT
[root@C webapps]# ../bin/startup.sh
Using CATALINA_BASE: /opt/tomcat8
Using CATALINA_HOME: /opt/tomcat8
Using CATALINA_TMPDIR: /opt/tomcat8/temp
Using JRE_HOME: /usr/local/jdk1.8.0_171/jre
Using CLASSPATH: /opt/tomcat8/bin/bootstrap.jar:/opt/tomcat8/bin/tomcat-juli.jar
Tomcat started.
然后获取初密码浏览器访问即可:http://ip:8080/jenkins/
:
[root@C webapps]# cat /root/.jenkins/secrets/initialAdminPassword
8ce68dfc32fa4385be5f5b0a1a536a47
修改update链接:
[root@r ~]# cat /root/.jenkins/hudson.model.UpdateCenter.xml
<?xml version='1.1' encoding='UTF-8'?>
<sites>
<site>
<id>default</id>
<url>https://updates.jenkins.io/update-center.json</url>
</site>
</sites>[root@r ~]# vim /var/lib/jenkins/hudson.model.UpdateCenter.xml
修改为:
[root@r ~]# cat /root/.jenkins/hudson.model.UpdateCenter.xml
<?xml version='1.1' encoding='UTF-8'?>
<sites>
<site>
<id>default</id>
<url>https://mirrors.tuna.tsinghua.edu.cn/jenkins/updates/update-center.json</url>
</site>
配置Tomcat开启启动,编辑vim /usr/lib/systemd/system/tomcat.service
文件:
[Unit]
Description=Apache Tomcat
After=network.target remote-fs.target nss-lookup.target
[Service]
Type=forking
PIDFile=/opt/tomcat8/tomcat.pid
Environment=JAVA_HOME=/usr/local/jdk1.8.0_171
Environment=CATALINA_HOME=/opt/tomcat8
ExecStart=/opt/tomcat8/bin/daemon.sh start
ExecStop=/opt/tomcat8/bin/daemon.sh stop
User=tomcat
Group=tomcat
PrivateTmp=true
[Install]
WantedBy=multi-user.target
重新加载配置:
systemctl daemon-reload
常用命令:
systemctl status tomcat.service
systemctl stop tomcat.service
systemctl start tomcat.service
systemctl restart tomcat.service
systemctl enable tomcat.service
参考:centos7下配置Tomcat开机启动(service方式和daemon方式)
for docker
centos7.7
常用的两个镜像是:
docker pull jenkins/jenkins:latest
docker pull jenkinsci/blueocean:latest
这里以jenkins/jenkins:latest
为例。
首先你的服务器提前安装好了docker服务。
- 拉取Jenkins镜像,这的镜像使用的是Jenkins官网推荐的镜像:
[root@r ~]# docker pull jenkinsci/blueocean
[root@r /]# docker images | grep jenkins
jenkins/jenkins lts 7e250da768ed 3 weeks ago 619MB
- 在宿主机上创建Jenkins的持久化目录:
[root@r /]# mkdir /docker_data/jenkins_home
- 启动Jenkins容器:
docker run \
-u root \
--name myjenkins \
--restart=always \
-d \
-p 6004:8080 \
-p 50000:50000 \
--env JAVA_OPTS="-Xmx1024m" \
-e JAVA_OPTS=-Duser.timezone=Asia/Shanghai \
-v /etc/localtime:/etc/localtime \
-v /docker_data/jenkins_home:/var/jenkins_home \
-v /var/run/docker.sock:/var/run/docker.sock \
jenkins/jenkins:latest
各参数的意义:
-u root
,默认的,Jenkins镜像内部使用的用户是jenkons,但是我们启动容器时的账号是root,导致没有权限操作内部目录,所以,需要在启动的时候,让Jenkins的内部用户是root。--name myjenkins
,给jenkins给容器起一个别名叫做myjenkins
。--restart=always
,表示将容器跟随docker服务重启而重启。-d
,后台运行镜像。-p 6004:8080
,将镜像的8080端口映射到宿主机的6004端口。-p 50000:50000
,将镜像的50000端口映射到服务器的50000端口,50000 端口允许访问远程 Java (JIRA) API。--env JAVA_OPTS="-Xmx1024m"
,配置JVM最大使用内存。-e JAVA_OPTS=-Duser.timezone=Asia/Shanghai
,控制jenkins的时区为亚洲上海。-v /etc/localtime:/etc/localtime
,让容器使用和服务器同样的时间设置。-v /docker_data/jenkins_data/:/var/jenkins_home
,挂在卷,持久化存储。-v /var/run/docker.sock:/var/run/docker.sock
,(可选 /var/run/docker.sock 表示Docker守护程序通过其监听的基于Unix的套接字。 该映射允许 jenkinsci/blueocean 容器与Docker守护进程通信, 如果 jenkinsci/blueocean 容器需要实例化其他Docker容器,则该守护进程是必需的。 如果运行声明式管道,其语法包含agent部分用 docker。jenkins/jenkins:latest
,该容器来自于哪个镜像,这里是镜像名称。
PS:有个疑惑,刚开始,为了jenkins的时区问题,我使用-v /etc/localtime:/etc/localtime
来同步容器和宿主机的时区,但是貌似并没有解决问题,后来,就有了-e JAVA_OPTS=-Duser.timezone=Asia/Shanghai
参数来更改时区。
- 查询log日志,获取初始密码,下面截取初始密码部分部分日志:
[root@r jenkins_home]# docker logs myjenkins
Running from: /usr/share/jenkins/jenkins.war
webroot: EnvVars.masterEnvVars.get("JENKINS_HOME")
2020-04-18 11:06:32.620+0000 [id=1] INFO org.eclipse.jetty.util.log.Log#initialized: Logging initialized @400ms to
2020-04-18 11:06:41.502+0000 [id=27] INFO jenkins.install.SetupWizard#init:
*************************************************************
*************************************************************
*************************************************************
Jenkins initial setup is required. An admin user has been created and a password generated.
Please use the following password to proceed to installation:
06e2d1bb8d984dc99d2f569c976a18ef
This may also be found at: /var/jenkins_home/secrets/initialAdminPassword
*************************************************************
*************************************************************
*************************************************************
2020-04-18 11:06:53.259+0000 [id=42] INFO hudson.model.AsyncPeriodicWork#lambda$doRun$0: Finished Download metadata. 13,224 ms
- 浏览器访问
ip:6004
端口输入初始密码,进行后续的配置步骤:
- 新手就选择
安装推荐的插件
吧,虽然后续也可以单独下载插件;后续的步骤按照提示就可以了。
for windows
下载
- 下载到本地是一个
msi
文件,点击它。
- 选择安装目录,继续点击下一步。
- 点击安装。
- 安装完成。
入门
当安装完成,会自动的打开浏览器,进入解锁Jenkins页面。按照提示,去本地找密码,然后粘贴到输入框中,点击继续。
选择推荐的插件下载即可。
在漫长的等待过程中,可能会发生各种意外, 但请记住一点:如果发生意外,请间歇性的刷新浏览器,很可能就......好了.....好不了,喝杯咖啡考虑一下人生回来....继续刷新.....,我反正两次插件安装失败,我都是刷新解决的........
如果遇到有的插件安装失败,就点击重试....
创建管理员用户
配置实例
根据需要配置ip地址,如果你的是远程服务器的,就配个公网的ip或者绑定域名也行;本地的话,就直接localhost吧。
访问主页:
现在,Jenkins算是安装成功。
for Mac
--待填充
More
如果遇到docker下载特别慢的情况。怎么办。
vmware中的centos7
- 编辑docker配置文件
[root@bogon ~]# vi /lib/systemd/system/docker.service
- 将
ExecStart
值更改为阿里云。
# ExecStart=/usr/bin/dockerd
ExecStart=/usr/bin/dockerd --registry-mirror=https://u1qbyfsc.mir
ror.aliyuncs.com
这样的话,docker再去拉去镜像就会快很多。
放开防火墙端口号
vmware中的centos7
如果是虚拟机或者远程服务器,有可能造成防火墙没有放开端口号,导致我们远程连接Jenkins失败,来看解决办法。
firewall-cmd --list-ports # 查看一下当前开放的端口
# 如果该命令提示
[root@bogon ~]# firewall-cmd --list-ports
FirewallD is not running
# 那么启动它
[root@bogon ~]# systemctl start firewalld # 启动
[root@bogon ~]# firewall-cmd --list-ports # 然后重新执行
终端启动Jenkins
在Windows平台下,Jenkins并没有创建什么快捷方式。而是需要通过命令行来启动。
注意,终端必须是管理员权限的
net start jenkins # 开启服务
net stop jenkins # 停止服务
然后浏览器访问:
http://localhost:8080
修改端口
环境是:Windows
可能8080
这个端口容易被占用,所以我们去jenkins
安装目录下找到一个叫jenkins.xml
的文件,修改你想要的端口即可。
在安装插件时报错:无法连接到Jenkins
环境是:阿里云centos7
这个问题很奇妙!我的环境是阿里云服务器,检查了Jenkins是否开启,是否可以ping通网络等等,都没啥问题。
最后的解决办法是刷新浏览器!不能行就多试几次!!我也不知道为啥突然好了.....
在安装插件时出现:No such plugin: cloudbees-folder
环境是:Windows
这个问题也很奇妙!但此时我的环境是win10企业版,检查了Jenkins是否开启,是否可以ping通网络等等,都没啥问题。
最后的解决办法是刷新浏览器!不能行就多试几次!!我也不知道为啥突然好了.....貌似我还改了一下端口(然后重启了Jenkins),但这并没有啥影响吧。
see also:[docker:CentOS安装 docker和默认安装目录](https://blog.csdn.net/weixin_38750084/article/details/90317730) | [如何进入、退出docker的container](