192.168.1.30:
Jenkins是一个开源软件项目,是基于Java开发的一种持续集成工具,用于监控持续重复的工作,旨在提供一个开放易用的软件平台,使软件的持续集成变成可能。(通过自动化的持续集成可以将这些重复的动作都变成自动化的,包括代码编译、数据库集成、测试、审查、部署及反馈。)Jenkins的前身是Hudson,主要创建者是川口清子(Kohsuke Kawaguchi)
《Jenkins官方文档》
持续集成是一种软件开发实践,频繁地(一天多次)将代码集成
持续交付在持续集成的基础上,将集成后的代码部署到更贴近真实运行环境的「类生产环境」
持续部署即在持续交付的基础上,把部署到生产环境的过程自动化。
搭建前建议先查看产品发布流程: 以jenkins+git/svn自动部署为例,产品发布流程
Jenkins功能
1、持续的软件版本发布/测试项目。
2、监控外部调用执行的工作。
(注意:本案例以jenkins+git+GitHub+邮件为主。若没有连接邮箱,邮箱操作可以省略,svn配置也是可以省略)
一、环境准备:使用yum安装jenkins
最好可以准备两台服务器:jenkins Server、gitlab Server
[root@room9pc01 ~]# yum -y install java-1.8.0.openjdk
[root@room9pc01 ~]# wget -O /etc/yum.repos.d/jenkins.repo https://pkg.jenkins.io/redhat/jenkins.repo
[root@room9pc01 ~]# wget -O /root/jenkins.io.key https://pkg.jenkins.io/redhat/jenkins.io.key
[root@room9pc01 ~]# rpm --import /root/jenkins.io.key
[root@room9pc01 ~]# yum clean all && yum makecache
[root@room9pc01 ~]# yum install -y jenkins //安装会比较久
[root@room9pc01 jenkins]# systemctl start jenkins
yum makecache 是 将服务器上的软件包信息 现在本地缓存,以提高 搜索 安装软件的速度(元数据缓存创建)
[root@room9pc01 ~]# cat /var/lib/jenkins/secrets/initialAdminPassword //查询admin密码 ,并复制
访问 http://ip:8080/ 进行安装插件 ,输入用户名admin,粘贴密码
[root@room9pc01 jenkins]# firefox http://ip:8080
jenkins相关目录:
[root@room9pc01 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/lib/jenkins/workspace #项目存放目录
Jenkins默认的端口号是8080,修改方法:
下载war包安装
[root@room9pc01 ~]# wget -c -O /var/lib/jenkins/jenkins.war http://mirrors.jenkins.io/war-stable/latest/jenkins.war
cd 到Jenkins的安装目录(即jenkins.war所在目录)
[root@room9pc01 ~]# cd /var/lib/jenkins/
1)命令行修改端口:
(需要重启计算机,才生效)
[root@room9pc01 jenkins]# java -jar jenkins.war --httpPort=8081 //更改端口为8081,也可以设置为其他的端口
如图出现下面信息则表示成功:
信息: Jenkins is fully up and running
若出现如下问题:其原因是因为服务器配置了自定义的host name 没有在hosts文件中定义.
解决:进入etc/hosts 编辑,在127.0.0.1 添加你的hostname
[root@room9pc01 ~]# vim /etc/hosts
127.0.0.1 room9pc01.example.com
2)配置文件修改端口
(永久修改)
[root@room9pc01 jenkins]# systemctl stop jenkins
[root@room9pc01 jenkins]# vim /etc/sysconfig/jenkins
......
JENKINS_PORT="8081" //默认是8080
......
[root@room9pc01 jenkins]# systemctl restart jenkins
访问测试
[root@room9pc01 jenkins]# firefox http://ip:8081
二、相关工具安装
工具安装可在jenkins的web界面系统管理—管理插件—可选插件勾选需要的,也可以手动安装。
2.1 maven安装
[root@room9pc01 jenkins]# cd /usr/local/
[root@room9pc01 local]# wget http://mirror.bit.edu.cn/apache/maven/maven-3/3.6.0/binaries/apache-maven-3.6.0-bin.tar.gz
[root@room9pc01 local]# mv /usr/local/apache-maven-3.6.0 /usr/local/maven
[root@room9pc01 local]# echo "export PATH=$PATH:/usr/local/maven/bin" > /etc/profile.d/maven.sh
[root@room9pc01 local]# source /etc/profile.d/maven.sh
[root@room9pc01 local]# mvn -version //查看版本
2.2 jdk安装
下载地址:https://download.oracle.com/otn-pub/java/jdk/8u201-b09/42970487e3af4f5aa5bca3f542482c60/jdk-8u201-linux-x64.tar.gz
[root@room9pc01 ]# tar -zxvf jdk-8u201-linux-x64.tar.gz -C /usr/local
[root@room9pc01 ]# ln -sv /usr/local/jdk1.8.0_201/ /usr/local/jdk1.8
[root@room9pc01 ]# echo "export PATH=$PATH:/usr/local/jdk1.8/bin" >/etc/profile.d/java.sh
[root@room9pc01 ]# source /etc/profile.d/java.sh
2.3 svn安装(若版本控制不是svn,则不用操作)
[root@room9pc01 ~]# yum install subversion -y
[root@room9pc01 ~]# mkdir /svnrepo
[root@room9pc01 ~]# cd /svnrepo/project1/ //必须依次修改以下三个文件
[root@room9pc01 conf]# vim svnserve.conf
[general] //以下四行去掉注释,必须顶格写
anon-access = none //改为none
auth-access = write
password-db = passwd
authz-db = authz
[root@room9pc01 conf]# vim passwd
[users]
# sally = sallyssecret
svnman = 123456
[root@room9pc01 conf]# vim authz
[groups]
[/]
svnman = rw
启动项目1:
[root@room9pc01 ~]# svnserve -d -r /svnrepo/project1/
启动整个项目:
[root@room9pc01 ~]# svnserve -d -r /svnrepo/
2.4 Git安装
[root@room9pc01 ~]# yum install curl-devel expat-devel gettext-devel openssl-devel zlib-devel gcc-c++ perl-ExtUtils-MakeMaker wget autoconf -y
[root@room9pc01 ~]# wget https://www.kernel.org/pub/software/scm/git/git-2.7.3.tar.gz
[root@room9pc01 ~]# tar xf git-2.7.3.tar.gz
[root@room9pc01 ~]# cd git-2.7.3
[root@room9pc01 ~]# make configure
[root@room9pc01 ~]# ./configure --prefix=/usr/local/git
[root@room9pc01 ~]# make profix=/usr/local/git
[root@room9pc01 ~]# make install
[root@room9pc01 ~]# echo "export PATH=$PATH:/usr/local/git/bin" > /etc/profile.d/git.sh
[root@room9pc01 ~]# source /etc/profile.d/git.sh
[root@room9pc01 git-demo-project]# git config --global user.name " your name"
[root@room9pc01 git-demo-project]# git config --global user.email "your email"
关于git与github的关联
1 创建公钥和私钥
[root@room9pc01 ~]# ssh-keygen
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa): Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /root/.ssh/id_rsa.
Your public key has been saved in /root/.ssh/id_rsa.pub.
The key fingerprint is:
SHA256:5SGYye8oxCKFJjddb4W8JC0RAQhBWCvuG8aZL8eMJs4 root@Jenkins
The key’s randomart image is:
±–[RSA 2048]----+
|…=* … |
|…o oo. |
|+.= . =++.o |
|++ o o.+ . |
|… o S . |
|o.oo o |
| B+ . . . |
|++++ . |
|+Eo. |
±—[SHA256]-----+
[root@room9pc01 ~]# cat .ssh/id_rsa.pub
[root@room9pc01 ~]# Jenkins ~]# cat .ssh/id_rsa
2 注册GitHub帐号 ,浏览器访问github官网 : https://github.com/ ,点击Sign up 进行注册
在github中添加公钥id_rsa.pub
部署密钥:
3 GitHub配置
将需要上传的放到git项目文件下
[root@room9pc01 ~]# cd git-demo-project/
[root@room9pc01 git-demo-project]# ls
jenkins master.zip Test_Item
将本地文件上传到GitHub上:进入终端
[root@room9pc01 ~]# git clone https://github.com/lincyou/Test_Item.git
[root@room9pc01 ~]# git add Test_Item/
[root@room9pc01 ~]# git commit -m "上传"
[root@room9pc01 ~]# git push
[root@room9pc01 ~]# git config --global user.name "Your Name" //配置一下姓名和邮箱
[root@room9pc01 ~]# git config --global user.email "[email protected]"
继续将本地代码上传到Github
[root@room9pc01 git-demo-project]# cp master.zip Test_Item/
[root@room9pc01 git-demo-project]#cd Test_Item/
[root@room9pc01 Test_Item]# git add .
[root@room9pc01 Test_Item]# git commit -m "提交master"
[root@room9pc01 Test_Item]# git remote add origin https://github.com/lincyou/Test_Item.git
[root@room9pc01 Test_Item]# git push -u origin master
Username for 'https://github.com': //输入github 用户名
Password for 'https://[email protected]': //输入github 密码
查看github可以看到master.zip已经上传到Test_Item/
补充:
若上传大文件到GitHub上,出现:
fatal: The remote end hung up unexpectedly
Everything up-to-date
解决:需下载一个 Git LFS 客户端,具体操作寻问度娘
2.5 密码破解(若是忘记了web界面登录密码)
[root@room9pc01 ~]#cd /var/lib/jenkins/users/admin_7014882124903007609
#此为admin用户的目录,也可以对应自己创建的用户
[root@room9pc01 admin_7014882124903007609]# vim config.xml
定位到passwordHash删除改行,改为
重启一下jenkins
新密码为admin
三、WEB界面配置
一) 系统设置(初学者可以略过,非必须操作,可先不进行设置)
1Jenkins配置优化
1.1配置jenkins并发执行数量,提高执行效率。依次点击:系统管理 >> 系统设置 >> Maven项目配置:执行者数量填:5
2. 设置邮件,能够在测试完成后,主动发邮件告知测试情况。
在jenkins所在服务器上,配置邮件服务器解析;
[root@room9pc01 ~]# vim /etc/hosts
176.130.6.81 smtp.163.com
在邮箱设置设置开启POP3/SMTP和IMAP/SMTP打钩,客户端授权密码
2.1系统管理 >> 系统设置 >> Jenkins Location
2.2 向下拉,找到邮件通知,配置邮件的smtp信息(邮箱协议选择SSL,则端口用465。默认端口是25)
注意:SMTP用户名是发件人邮箱,SMTP认证的密码是授权码
配置完成后点击 Test configuration 进行测试,测试成功后,点击保存
二) 全局工具配置
1 maven配置
针对之前手动安装的maven需要在web界面配置进行结合。
系统管理—全局工具配置(Maven Configuration)配置:
此处为手动安装的maven,需要取消自动安装maven,name可以自定义,MAVEN_HOME指定下载安装的maven具体文件目录
2 jdk配置
对应手动安装的jdk,需要web配置java_home路径
3 Git配置
Jenkins新建项目中源码管理使用Git时遇到如下问题:
Failed to connect to repository : Error performing command: git ls-remote -h http://192.168.0.22/finance/AMS-Server.git HEAD
解决:
打开Jenkins的 主页面 > 系统管理 > Global Tool Configuration
如上面"whereis git"的地址为"/usr/local/git",则应该填入 “/usr/local/git/bin/git”) 并保存
4 在jenkins上,配置Github Plugin
系统管理—>系统设置—>GitHub --> Add GitHub Sever
三 )插件安装
系统管理—管理插件—已安装
1 检查是否有“选择自己需要的插件进行安装即可。如果没有,则需点击“可选插件”,找到所需的插件并安装 ,也可选择全部安装。
2 若没有或者需要安装其他的,可以上jenkins的官网下载,并且点击插件管理的高级,选择上传插件
官网:https://plugins.jenkins.io/
四、构建项目
新建Item—填入项目名称—选择构建一个自由风格的软件项目—确定 ,源码管理选择git
4.1 设置:GitHub与jenkins关联
点击“右上角下拉的setting——》安全”:生成一个访问令牌。得到一个token,自己先保存此token,如果丢失,之后再也无法找到token。
2.点击项目里面的Settings----Webhooks
这个PayloadURL填的就是http://XXX(你的服务器):端口号8081/项目名(照抄),其他的照抄
4. 2 创建一个新的任务
输入项目的名称:clsn-test,选择构建只有分风格的软件
在jenkins中添加私钥id_rsa
在首页中,点击项目名称的下拉监听,选择源码管理,先将GitHub的项目地址复制过来
点击add,输入github的用户名和密码
选择构建
拉到最底部,选择使用shell脚本
[root@room9pc01 ]# mkdir -p /data/www
[root@room9pc01 ]# chown -R jenkins.jenkins /data/
选择构建后的操作,让每次构建完成后都将结果发送给管理员
测试手动集成
回到主页,点击构建jenkins 上的项目,点击右侧的“立即构建”按钮进行测试,可以看到 项目下的工作区有master.zip
命令行查看,可以发现已经在/data/www/下(即上线成功)
[root@room9pc01 Test_Item]# ls /data/www/
master.zip