Jenkins是一个可扩展的持续集成引擎,是基于Java开发的一种持续集成工具,用于监控持续重复的工作。
Jenkins中文官网
w3cschool中文文档
Jenkins是一个开源项目,提供了一种易于使用的持续集成系统,使开发者从繁杂的集成中解脱出来,专注于更为重要的业务逻辑实现上。同时 Jenkins 能实时监控集成中存在的错误,提供详细的日志文件和提醒功能,还能用图表的形式形象地展示项目构建的趋势和稳定性。
Jenkins可以构建一个自动化的持续集成环境可以使用它来“自动化”编译、打包、分发部署应用,它兼容ant、maven、gradle等多种第三方构建工具,同时与svn、git能无缝集成,也支持直接与知名源代码托管网站,如github、bitbucket直接集成。
这里是选择Gitlab作为git server。Gitlab的功能和Github差不多,但是是开源的,可以用来搭建私有git server,也提供非常强大的web GUI,比如开发者互相review源代码的时候就会很方便。系统的工作流程大概分为以下几步:
1> 开发者将新版本push到git server (Gitlab)。
2> Gitlab随后触发jenkins master结点进行一次build。(通过web hook或者定时检测)
3> jenkins master结点将这个build任务分配给若干个注册的slave结点中的一个,这个slave结点根据一个事先设置好的脚本进行build。这个脚本可以做的事情很多,比如编译,测试,生成测试报告等等。这些原本需要手动完成的任务都可以交给jenkins来做。
4> 我们在build中要进行编译,这里使用了分布式编译器distcc来加快编译速度。
Jenkins的工作原理是先将源代码从gitlab中拷贝一份到本地,然后根据设置的脚本进行build。我们可以看出,整个系统的关键就是那个build脚本,用来告诉jenkins在一次集成中需要执行的任务。
✔ jenkins触发式构建:用于开发环境部署,开发人员push代码或者合并代码到gitlab项目的master分支,jenkins就部署代码到对应服务器。
✔ jenkins参数化构建:用于测试环境预上线环境部署,开发push代码或者合并代码到gitlab项目的master分支之后,并不会部署代码,而是需要登录到jenkins的web界面,点击构建按钮,传入对应的参数(比如参数需要构建的tag,需要部署的分支)然后才会部署。
✔ jenkins定时构建: 用于APP自动打包,定时构建是在参数化构建的基础上添加的,开发人员可以登录jenkins手动传入tag进行打包。如果不手动打包,那么jenkins就每天凌晨从gitlab拉取最新的APP代码打包。
持续集成:指程序员在代码的开发工程中,可以频繁的将代码部署到主干上,并进行自动化测试
持续交互:指在持续集成的基础之上,将代码部署到线上测试环境
持续部署:指在持续交互的基础之上,将要部署的代码实现自动部署,包括持续交互、持续部署
主要用于–持续、自动地构建/测试软件项目,监控一些定时执行的任务。
✔ 易于安装-只要把jenkins.war部署到servlet容器,不需要数据库支持。
✔ 易于配置-所有配置都是通过其提供的web界面实现。
✔ 集成RSS/E-mail通过RSS发布构建结果或当构建完成时通过e-mail通知。
✔ 生成JUnit/TestNG测试报告。
✔ 分布式构建支持Jenkins能够让多台计算机一起构建/测试。
✔ 文件识别-Jenkins能够跟踪哪次构建生成哪些jar,哪次构建使用哪个版本的jar等。
✔ 插件支持-支持扩展插件,你可以开发适合自己团队使用的工具。
war包
jenkins关闭 war关掉
jenlkins开启 war包
jenkins rpm yum源
3.rpm安装(官方文档)安装最低配置:不少于256M内存,不低于1G磁盘,JDK版本>=8(openjdk也可以)
jenkins的安装【需要maven和jdk的环境】
wget -O /etc/yum.repos.d/CentOS-Base.repo https://repo.huaweicloud.com/repository/conf/CentOS-7-reg.repo sudo wget -O /etc/yum.repos.d/jenkins.repo https://pkg.jenkins.io/redhat-stable/jenkins.repo rpm --import https://pkg.jenkins.io/redhat-stable/jenkins.io.key yum install -y epel-release yum install -y java-11-openjdk-devel yum install -y jenkins [root@localhost ~]# systemctl start jenkins [root@localhost ~]# netstat -anpt | grep 8080 tcp6 0 0 :::8080 :::* LISTEN 4714/java [root@localhost ~]# cat /var/lib/jenkins/secrets/initialAdminPassword //查看管理员密码 35a2c08deb64462598b3cf883378089d [root@localhost ~]# firefox 192.168.235.10:8080 输入密码 自定义Jenkins(安装推荐的插件) 保存并完成---保存并完成(`中文`主界面>系统管理>Manage Plugins>Available>搜索Locale>install without restart>Config System)4.中文设置 问题
【1】解决方法:yum install -y ca-certificates &>/dev/null
[root@zhaohuaizhe ~]# sudo wget -O /etc/yum.repos.d/jenkins.repo https://pkg.jenkins.io/redhat-stable/jenkins.repo --2022-03-31 09:44:17-- https://pkg.jenkins.io/redhat-stable/jenkins.repo 正在解析主机 pkg.jenkins.io (pkg.jenkins.io)... 151.101.74.133, 2a04:4e42:1a::645 正在连接 pkg.jenkins.io (pkg.jenkins.io)|151.101.74.133|:443... 已连接。 错误: 无法验证 pkg.jenkins.io 的由 “/C=US/O=Let's Encrypt/CN=R3” 颁发的证书: 颁发的证书已经过期。 要以不安全的方式连接至 pkg.jenkins.io,使用“--no-check-certificate”。
【2】解决方法:netstat -anp |grep 8080
hudson.WebAppMain#contextInitialized: Jenkins home directory: /var/lib/jenkins found at: En...JENKINS_HOME")配置文件 密码文件
[root@zhaohuaizhe ~]# cat /var/lib/jenkins/secrets/initialAdminPassword 9c81fbddb53548468add53fb7caa60d2
查看程序主目录查看jenkins的配置文件,定义了home、JAVA_CMD、user、port等基础配置,保持默认即可#(cat /etc/sysconfig/jenkins)
ls /var/lib/jenkins/
config.xml nodes hudson.model.UpdateCenter.xml hudson.plugins.git.GitTool.xml queue.xml.bak identity.key.enc secret.key jenkins.CLI.xml secret.key.not-so-secret jenkins.install.InstallUtil.lastExecVersion workflow-libs jenkins.install.UpgradeWizard.state updates jenkins.model.JenkinsLocationConfiguration.xml userContent nodeMonitors.xml jobs 浏览器上面创建的任务都会存放在这里 logs 存放jenkins相关的日志 nodes 多节点时用到 plugins 插件所在目录 secrets 密码秘钥所在目录 #jobs和plugins目录比较重要
jenkins存放数据不依靠数据库,所以在移植时只需要拷贝整个程序主目录即可。
破解管理员密码[root@zhaohuaizhe admin_8837323664593734073]# pwd /var/lib/jenkins/users/admin_8837323664593734073 [root@zhaohuaizhe admin_8837323664593734073]# cat config.xml#jbcrypt:$2a$10$cNCnS.RHqF7.wpQeb25IcevJuZppNAN18JWwKvUv6edClEP1O5Nju
To get through this period of depression,Standing at the height that belongs to me,See the view you should see!



