Jenkins代码上线
Posted linux运维菜鸟之旅
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Jenkins代码上线相关的知识,希望对你有一定的参考价值。
1.1 前言
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许可证下发布的自由软件。
1.1.1 Jenkins功能
1、持续的软件版本发布/测试项目。
2、监控外部调用执行的工作。
1.2 怎么理解持续集成、持续交付、持续部署呢?
1.2.1 持续集成
持续集成(英语:Continuous integration,缩写为 CI),一种软件工程流程,将所有工程师对于软件的工作复本,每天集成数次到共用主线(mainline)上。
这个名称最早由葛来迪·布区(Grady Booch)在他的布区方法中提出,但是他并没有提到要每天集成数次。之后成为极限编程(extreme programming,缩写为XP)的一部分。在测试驱动开发(TDD)的作法中,通常还会搭配自动单元测试。
持续集成的提出,主要是为了解决软件进行系统集成时面临的各项问题,极限编程称这些问题为集成地狱(integration hell)。
持续集成主要是强调开发人员提交了新代码之后,立刻进行构建、(单元)测试。根据测试结果,我们可以确定新代码和原有代码能否正确地集成在一起。简单来讲就是:频繁地(一天多次)将代码集成到主干。
持续集成目的在产生以下效益如:
ü 及早发现集成错误且由于修订的内容较小所以易于追踪,这可以节省项目的时间与成本。
ü 避免发布日期的前一分钟发生混乱,当每个人都会尝试为他们所造成的那一点点不兼容的版本做检查。
ü 当单元测试失败或发生错误,若开发人员需要在不除错的情况下还原代码库到一个没有问题的状态,只需要放弃一小部分的更改(因为集成的次数频繁)。
ü 让 "最新" 的程序可保持可用的状态供测试、展示或发布用。
ü 频繁的提交代码会促使开发人员创建模块化,低复杂性的代码。
ü 防止分支大幅偏离主干。如果不是经常集成,主干又在不断更新,会导致以后集成的难度变大,甚至难以集成。
1.2.2 持续交付
持续交付(英语:Continuous delivery,缩写为 CD),是一种软件工程手法,让软件产品的产出过程在一个短周期内完 成,以保证软件可以稳定、持续的保持在随时可以释出的状况。
它的目标在于让软件的建置、测试与释出变得更快以及更频繁。这种方式可以减少软件开发的成本与时间,减少风险。
持续交付在持续集成的基础上,将集成后的代码部署到更贴近真实运行环境的「类生产环境」(production-like environments)中。比如,我们完成单元测试后,可以把代码部署到连接数据库的 Staging 环境中更多的测试。如果代码没有问题,可以继续手动部署到生产环境中。
1.2.3 持续部署
持续部署(英语:Continuous Deployment,缩写为 CD),是持续交付的下一步,指的是代码通过测试以后,自动部署到生产环境。
有时候,持续部署也与持续交付混淆。持续部署意味着所有的变更都会被自动部署到生产环境中。持续交付意味着所有的变更都可以被部署到生产环境中,但是出于业务考虑,可以选择不部署。如果要实施持续部署,必须先实施持续交付。
持续部署即在持续交付的基础上,把部署到生产环境的过程自动化。
关键字: CI/CD 持续集成/持续交付/持续部署
1.3 安装配置JENKINS
了解网Jenkins后,现在进行Jenkins的安装
1.3.1 环境说明
推荐的硬件配置
1 GB的RAM
50 GB的驱动器空间
系统环境
[root@Jenkins ~]# cat /etc/redhat-release
CentOS Linux release 7.4.1708 (Core)
[root@Jenkins ~]# uname -r
3.10.0-693.el7.x86_64
[root@Jenkins ~]# getenforce Disabled
[root@Jenkins ~]# systemctl status firewalld.service
● firewalld.service - firewalld - dynamic firewall daemon
Loaded: loaded (/usr/lib/systemd/system/firewalld.service; disabled; vendor preset: enabled)
Active: inactive (dead)
Docs: man:firewalld(1)
软件要求
Java 8--无论是Java运行时环境(JRE)还是Java开发工具包(JDK)都可以。
# 可以使用open jdk
[root@Jenkins ~]# yum -y install java-1.8.0-openjdk java-1.8.0-openjdk-devel
[root@Jenkins ~]# java -version
openjdk version "1.8.0_151"
OpenJDK Runtime Environment (build 1.8.0_151-b12)
OpenJDK 64-Bit Server VM (build 25.151-b12, mixed mode)
1.3.2 安装Jenkins
软件下载
官方仓库 https://pkg.jenkins.io/redhat-stable/
清华大学开源软件镜像站 https://mirrors.tuna.tsinghua.edu.cn/jenkins/redhat/
下载相应的数据包即可,我这里使用的是jenkins-2.73.1-1.1.noarch.rpm
安装jenkins
rpm -ivh jenkins-2.73.1-1.1.noarch.rpm
启动jenkins
/etc/init.d/jenkins start
检查端口信息
[root@Jenkins ~]# netstat -lntp
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 1213/sshd
tcp6 0 0 :::8080 :::* LISTEN 1672/java
tcp6 0 0 :::22 :::* LISTEN 1213/sshd
RPM包安装的内容
[root@Jenkins ~]# rpm -ql jenkins
/etc/init.d/jenkins # 启动文件
/etc/logrotate.d/jenkins # 日志分割配置文件
/etc/sysconfig/jenkins # jenkins主配置文件(端口,用户等)
/usr/lib/jenkins # 存放war包目录
/usr/lib/jenkins/jenkins.war # war 包 (升级jenkins,将新版本的war包替换即可,不能手动解压,它会自动解压)
/usr/sbin/rcjenkins # 命令
/var/cache/jenkins # war包解压目录 jenkins网页代码目录
/var/lib/jenkins # jenkins 工作目录
/var/log/jenkins # 日志
配置文件说明
[root@Jenkins ~]# 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=""
附:如果已注册,并忘记了密码
01.jenkins配置文件:
vim /var/lib/jenkins/config.xml
02.删除这个文件中以下字段
<useSecurity>true</useSecurity>
<authorizationStrategy class="hudson.security.FullControlOnceLoggedInAuthorizationStrategy">
<denyAnonymousReadAccess>true</denyAnonymousReadAccess>
</authorizationStrategy>
<securityRealm class="hudson.security.HudsonPrivateSecurityRealm">
<disableSignup>true</disableSignup>
<enableCaptcha>false</enableCaptcha>
</securityRealm>
1.3.3 web界面安装
浏览器访问: http://10.0.0.64:8080
解锁Jenkins,密码从命令行中获取
[root@Jenkins ~]# cat /var/lib/jenkins/secrets/initialAdminPassword
3afe5ad49a794ac2b1a72811f5eb3c9b
输入授权密码,然后点击下一步
稍等一会来导安装插件选择的页面,将此页面关闭,在安装完成Jenkins后安装插件。
关闭安装插件选择后,选择开始使用Jenkins
安装完成,显示界面
安装Jenkins插件
系统管理 >> 管理插件
选择自己需要的插件进行安装即可,也可选择全部安装。
至此Jenkins安装完成
注:这里我事先将需要的插件进行了打包,直接上传解压即可jenkins_plugins.tar.gz
1.3.4 Jenkins配置优化
1. 配置jenkins并发执行数量,提高执行效率
系统管理 >> 系统设置 >> Maven项目配置
2. 设置邮件,能够在测试完成后,主动发邮件告知测试情况
系统管理 >> 系统设置 >> Jenkins Location
注意:SMTP用户名是发件人邮箱,SMTP认证的密码是授权码
向下拉,找到邮件通知,配置邮件的smtp信息
配置完成后点击 Test configuration 进行测试,测试成功后,点击保存
说明:云主机要使用SSL协议
说明:云主机要使用SSL协议
小伙伴们可以关注我的博客号:GeorgeKai,点击“阅读原文”进入
欢迎转发 ▶▶▶
以上是关于Jenkins代码上线的主要内容,如果未能解决你的问题,请参考以下文章