写在前面的话

从我的工作经历来看,刚出来的时候的第一家公司我们上线采用的是脚本上线。就是那种开发合并完代码以后,在一个固定的时间点,我们上服务器执行更新脚本打包更新。这种方法有一个很大的问题,就是对于整个更新过程,我们并不直观,而且除非服务器之间免密登录互信,否则写脚本也很麻烦。当然那是早期的时候。后来接触的东西多了,在这些东西里面自然也就包含了 Jenkins,当然,Jenkins 不一定最好的,但可以这样说,是我遇到用的最多的。同类产品也有很多,感兴趣的可以去了解。

CI / CD

在我写这篇以前,我们其实已经从传统的 CI / CD 转为 DevOps 了。但我依然写这个,其目的是本文的基础目的其实还是谈 Jenkins 对于我们运维人员的使用意义。当然如果你是运维开发或者纯粹的开发人员。我相信你应该有更合适的方式。

CI(Continuous integration)持续集成,CD(Continuous delivery)持续交付,CD(Continuous Deployment)持续部署。

我们经常能够在网上见到这样一张图(CI 持续集成过程):

简单的说明就是程序员将代码提交到软件仓库,自动触发 CI Server 进行 Build 检测,以此来发现代码中存在的问题。

我们可以通过这样的操作来达到代码质量管理的目的。

另外一张图(CD 持续交付 / 持续部署):

其实这本该是两个过程,但是由于处理的都差不多,所以很多时候其实我们是把他当成一步来看待。

最后,关于 CD / CD 的好处我们就没有必要在做过多介绍,我们只需要知道,能够让我们花更少的精力更容易的达成我们的需求。

Jenkins 就是这样的一个可扩展的持续集成引擎,前身为 Hudson,有些 Java 程序员应该听过这个。

安装 Jenkins

在 Jenkins 的安装上,目前是支持多种方法的,包括当前比较流行的 docker 允许。因为我自己维护的一般是 Java 服务,所以为了更多的个性化配置,一般都选择使用 Tomcat,至于 Jar 运行的方式,看个人喜好。我这里主要谈 Tomcat 的方法。

https://jenkins.io/zh/download/

我们可以去 Jenkins 官网去下载长期稳定版的:Generic Java package (.war) 

http://mirrors.jenkins.io/war-stable/latest/jenkins.war

当然,你也可以直接去下载站下载并选择不同的版本:

http://mirrors.jenkins.io/war-stable/

我们这里准备了东西如下:

名称 版本
操作系统 CentOS 7.5
JDK 1.8
Tomcat 8.5
Maven 3.5

其他的我们后面用到的时候再说!这些是我们需要的基础。

为了规范化管理,我们把需要的程序都安装到 /data 目录下,最终解压出来的目录结构如图:

具体设计结构如下图:

为了方便使用,我们把 Maven 和 JDK 都做了软链接,这样配置目录的时候方便些。

另外我们新建了 jenkins 目录,用于存放有关 Jenkins 所有配置,其实 jenkins-8080 是 Tomcat,而 jenkins-data 则是最终的 Jenkins 工作目录。

按照上面的配置完成以后,开始我们的 Jenkins 设置!

1. 配置 Tomcat:/data/jenkins/jenkins-8080/bin/catalina.sh 的 110 行左右加入配置:

# JDK & JENKINS SETTING
export JAVA_HOME=/data/jdk8
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
export PATH=$JAVA_HOME/bin:$PATH
export JAVA_OPTS="$JAVA_OPTS -server -Xmn2000m -Xms4000m -Xmx4000m -XX:PermSize=128m -XX:+UseConcMarkSweepGC -XX:MaxPermSize=512m -Dhudson.DNSMultiCast.disabled=true -Dhudson.udp=-1"
export JENKINS_HOME=/data/jenkins/jenkins-data

该配置制定了 JDK 的路径,因为我们 JDK 是没有环境变量的。

另外就是简单的 Tomcat 优化,其中有个重要的配置是关于 DNS 的配置,我们这里关闭了该功能。开启该功能可能造成 Jenkins 哪天抽风,疯狂的写日志,后面我会单独的说说这个问题,遇到过两次,服务器磁盘直接写爆。

最后就是指定 Jenkins home 目录,该目录是 Jenkins 启动后存放配置以及我们打包拉去代码的目录,之所以把它独立出来,就是为了方便管理。默认的话会是加目录下的一个隐藏目录,不方便我们管理。

至于 Tocmat conf 配置优化我们这里就不做了,如果感兴趣自己可以去了解。这也是我们选择 Tomcat 的原因,可控性强。

特别说明:Jenkins 其实是很消耗系统资源的服务,所有我们还是应该尽可能的多分配资源。

2. 删除 Tomcat 默认的包,将 Jenkins 的 war 包传上去解压启动:

# 删除原来的包
cd /data/jenkins/jenkins-8080/webapps
rm -rf * # 上传后解压,完成后删除
unzip jenkins.war -d jenkins
rm -f jenkins.war # 启动
/data/jenkins/jenkins-8080/bin/startup.sh

结果如图:

3. 访问 Jenkins:这是我的地址

http://192.168.10.202:8080/jenkins

结果如图:

初次打开会有一个验证,相当于验证你是不是管理员本人的作用,我们需要去服务器上面查看该文件,然后将里面的内容粘贴到密码框。继续

4. 插件安装:

继续之后会进入插件安装界面,但是对于国内的网站,打开插件页面是随缘的,所有不仅加载慢,而且还可能出现离线的字样。

解决办法:

先 kill 掉 Jenkins 的 Tomcat 进程,然后修改 Jenkins 源的配置:/data/jenkins/jenkins-data/hudson.model.UpdateCenter.xml

将里面配置的 jenkins.io 的源地址更换成国内的,例如:清华源

http://mirrors.tuna.tsinghua.edu.cn/jenkins/updates/update-center.json

然后重新启动 Tomcat,访问 Jenkins,此时会再度要求我们输入文件中的密码,输入后点击继续。

此时页面变成如下:

我们选择安装推荐插件即可,当然你可以选择自定义,推荐的好处就是很多还是很好用的。

到这一步,我们可以顺手将 /data/jenkins/jenkins-data/updates/default.json 中开头的:

{"connectionCheckUrl":"http://www.google.com/"

谷歌地址变更为 baidu 地址,避免在 Jenkins 中会报错很多 google 无法访问的错误,逼死强迫症。

之所以现在才做这一步,是因为之前该目录并没有生成。先不用急着重启,等我配置完成后再统一重启。

有些时候,我们使用类似清华源会因为某些不可描述的原因,在该页面中初选多个插件安装失败的情况。此时我们可以把源换回官方的:

http://updates.jenkins.io/update-center.json

不一样的是,我们把官方的 https 换成了 http,虽然慢一点,但是一般都没问题。

5. 创建管理员账户:

6. 配置访问地址,我们默认就行,你要是用域名可以配置成域名:

7. 安装完成:

点击开始使用 Jenkins 后如果界面一片空白,是因为没有登录的原因,我们可以访问如下地址重启 Jenkins,重启完成自动到登录页面:

http://192.168.10.202:8080/jenkins/restart

在地址就后面加个 restart

8. 主界面:

至此,Jenkins 安装完成!但是由于版本问题,可能存在汉化不完全的情况。这一般是使用最新版的才会出现的情况。建议在最新版的基础上回退 1 到两个版本。

比如后来我更换成为了:Jenkins ver. 2.164.3

该版本没有出现汉化不完全的问题!

更换方法也很简单,由于我们是新安装,只需要删除 tomcat 下 webapps 下的 jenkins 包,删除掉 jenkins-data 下旧数据,换成新的包重新初始化即可。

小结

Jenkins 安装其实很简单,就是 war 包启动的过程,但是作为运维,我们把很多东西都给他定制化了,其最终的目的还是为了规范化管理。

规范化是我们使用 Jenkins 批量管理的前提,也是我们作为运维的最终目的。

整个安装过程中麻烦点在于 Jenkins 的很多东西都不在国内,所以容易出现各种请求不通的情况,文中我都在各种采用方法来规避这方面的问题。

【01】Jenkins:安装配置的更多相关文章

  1. jenkins安装-配置

    jenkins安装-配置 注意: jenkins访问 用chrome浏览器 安装包下载:http://pkg.jenkins-ci.org/redhat/ (使用2.92版本的) 安装jdk: 1.8 ...

  2. jenkins安装配置-白痴教程

    1. Maven安装 下载maven安装包,放置在usr/maven目录下:apache-maven-3.2.5-bin.tar.gz tar zxvf apache-maven-3.2.5-bin. ...

  3. jenkins安装配置[二]

    标签(linux): jenkins 笔者Q:972581034 交流群:605799367.有任何疑问可与笔者或加群交流 安装依赖,如果本机已有java环境可跳过 yum install java- ...

  4. Jenkins安装配置 远程发布SpringBoot项目

    环境要求: Java : 1.8.0_161. Maven :http://maven.apache.org/download.cgi 3.6.1 下载完解压,配置环境变量:vim /etc/prof ...

  5. jenkins 安装配置: centos-master windows/linux-slave + nginx代理 + node + job

    centos install jenkins: 1.sudo vi /etc/yum.repos.d/jenkins.repo [jenkins] name=Jenkins baseurl=http: ...

  6. Jenkins安装配置过程及问题详解

    1:去官网下载jenkins.war包. 官网地址:http://Jenkins-ci.org/ 下载win版 官网镜像地址:http://mirrors.jenkins-ci.org/war-sta ...

  7. Jenkins安装配置简单使用

    安装启动是十分简单的,直接去https://jenkins.io/download/下载对应的rpm包就好了,需要注意的是我们的机器上要提前有java环境,相对应要选择你java环境可以支持的jenk ...

  8. jenkins安装配置及发布

    1. yum install -y lrzsz vim net-tools 2. 下载jdk-8u131-linux-x64.tar.gz http://www.oracle.com/technetw ...

  9. jenkins安装配置

    一.下载Jenkins 官网地址:https://jenkins.io/,图如下所示,点击下载可下载最新版本. 点击下载之后,我们可以看到下面的图,我这边选择的Jenkins.war 文件. 下面,使 ...

  10. ES.01.Elasticsearch安装配置

    Windows版 提纲: 1.   安装Elasticsearch 1.1. 下载Elasticsearch: https://www.elastic.co/cn/downloads/elastics ...

随机推荐

  1. nginx缓存页面后,串会话问题的解决方案

    用的Nigix  后面挂了二个Tomcat是springMVC  session存在Redis的项目 但是上线以后反应A用户添加数据,变成B用户的,网上查的方案如下: 解决方案,nginx提供prox ...

  2. Xml格式数据转map工具类

    前言[ 最近在写一个业务,由于调UPS物流的接口返回的是一个xml格式的数据结果,我现在要拿到xml中某个节点的值,而这个xml数据是多节点多层级的,并且这某个节点的值有可能只有一条值,有可能有多条, ...

  3. GCN python 实现2:利用GCN进行节点分类

    参考:https://www.baidu.com/link?url=5oU-O_YQV8DdSTtRkgzsQ_vuwjJHyUOxqeAKhq98ZA5XtvKW8PNQwXgSlr5GpESRqh ...

  4. Ubuntu安装MDK

    1 环境部署 [x] Ubuntu 18.04 [x] Wine 3.0.4 1.0 查看CPU信息 lscpu 序号 属性 描述 1 架构 x86_64 2 CPU 运行模式 32-bit, 64- ...

  5. 使用GCP_EC2云服务器搭部署网络服务

    首先,在此阿里云/腾讯云/华为云购买一个云服务器推荐使用阿里云的 首先链接你的VPS,可以使用X-shell / Putty / SecureCRTPortable 等SSH链接工具 注意:如果不知道 ...

  6. LNK1104 无法打开文件“xxx.lib”

    尝试解决方法: 1.找到这个库,把这个库移动到特定的文件夹下,在属性中添加这个库: 具体来说:打开VS项目->项目属性->配置属性->C/C+±>附加包含目录->编辑-& ...

  7. Hello,DTOS!(中)

    org 0x7c00   //主引导程序的入口地址为0x7c00(物理地址),类似于用c或c++程序中的main函数. start:  //定义标签,标签的含义就是mov ax,cs这条指令的地址. ...

  8. 201871010117-石欣钰《面向对象程序设计(java)》第七周学习总结

    项目 内容 这个作业属于哪个课程 https://www.cnblogs.com/nwnu-daizh/ 这个作业的要求在哪里 https://www.cnblogs.com/nwnu-daizh/p ...

  9. django学习-视图练习

    写一个真正有用的视图 每个视图必须要做的只有两件事: 返回一个包含被请求页面内容的HttpResponse对象,或抛出一个异常,比如Http404. 至于你还想干些什么,随便你. 你的视图可以从数据库 ...

  10. JDOJ3010 核反应堆

    JDOJ3010 核反应堆 https://neooj.com/oldoj/problem.php?id=3010 题目描述 某核反应堆有两类事件发生: 高能质点碰击核子时,质点被吸收,放出3个高能质 ...