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

PS:推荐下载最新版的Jenkins,因为一些插件不支持低版本......

各平台配置Java环境
除了docker部署Jenkins,其他的方式部署Jenkins,都依赖Java环境,所以,先来把Java环境配置好了吧!

https://www.cnblogs.com/Neeo/articles/11954283.html

for linux

在Linux环境中,有tomcat、docker、rpm包这几种部署方式,这里我首推rpm包方式部署Jenkins。
before

  1. 首先要确保你的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
  1. 安装git:
[root@r ~]# yum install -y git
[root@r ~]# git --version
git version 1.8.3.1
  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.

  1. 下载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日志文件,当然,初始安装后,这个文件也不存在。
  1. 修改默认配置:
[root@cs tmp]# vim /etc/sysconfig/jenkins

# 必要的!修改Jenkins运行用户为root
JENKINS_USER="root"
# 可选的!修改默认端口8080
 JENKINS_PORT="6004"
  1. 想要配置插件之类的,都必须先启动一次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
  1. 启动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依赖各种插件,但这些插件又基本上都在国外....所以这一步是为了替换国内源。

  1. 重新启动Jenkins,然后从下面的路径中拷贝初始密码,去浏览器访问Jenkins监听的6004端口,进入新手教程:
[root@cs updates]# cat /var/lib/jenkins/secrets/initialAdminPassword
a9d3258b2dfc42058579d80505dc5752


  1. 在漫长的安装插件过程结束后,我们创建一个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服务。

  1. 拉取Jenkins镜像,这的镜像使用的是Jenkins官网推荐的镜像:
[root@r ~]# docker pull jenkinsci/blueocean
[root@r /]# docker images | grep jenkins
jenkins/jenkins        lts                 7e250da768ed        3 weeks ago         619MB
  1. 在宿主机上创建Jenkins的持久化目录:
[root@r /]# mkdir /docker_data/jenkins_home
  1. 启动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参数来更改时区。

  1. 查询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
  1. 浏览器访问ip:6004端口输入初始密码,进行后续的配置步骤:
  2. 新手就选择安装推荐的插件吧,虽然后续也可以单独下载插件;后续的步骤按照提示就可以了。

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]() | [Centos7上安装docker](https://www.cnblogs.com/yufeng218/p/8370670.html) | [CentOS7安装Jenkins和卸载](https://blog.csdn.net/qq_34272964/article/details/93474659) | [centos7 彻底卸载jenkins](https://blog.csdn.net/weixin_37194108/article/details/106055992)
posted @ 2019-11-27 22:00  听雨危楼  阅读(1837)  评论(0编辑  收藏  举报