jenkins
文章目录
一、jenkins介绍
Jenkins是一个开源的、可扩展的持续集成、交付、部署(软件/代码的编译、打包、部署)基于web界面的平台。Jenkins是一个工具集,提供了各种各样的插件。比如获取git上最新的代码,可以帮你编译源代码,可以调用自定义的shell脚本远程执行命令
官网 https://jenkins.io
官方文档 https://jenkins.io/doc/
- 软件开发标准化流程
- 产品设计成型 -> 开发人员开发代码 -> 测试人员测试功能 -> 运维人员发布上线
- 不同的开发人员把模块代码叠加上主干过程为持续集成。
- 把代码给不断给测试人员或者软件迭代更新于用户过程为持续交付。
- 运维上线代码过程为持续部署。
以上过程Jenkins都可以以自动化方式来快速完成。
参考文档 http://www.ruanyifeng.com/blog/2015/09/continuous-integration.html
二、 jenkins安装
- 安装jdk(方法1)
- 去官网下载jdk
- 通过xftp传输到服务器上
- 解压和改名
tar zxvf jdk-8u171-linux-x64.tar.gz
mv jdk1.8.0_171/ /usr/local/jdk1.8
- 编辑环境变量配置文件
vim /etc/profile
添加环境变量并生效
JAVA_HOME=/usr/local/jdk1.8/
JAVA_BIN=/usr/local/jdk1.8/bin
JRE_HOME=/usr/local/jdk1.8/jre
PATH=$PATH:/usr/local/jdk1.8/bin:/usr/local/jdk1.8/jre/bin
CLASSPATH=/usr/local/jdk1.8/jre/lib:/usr/local/jdk1.8/lib:/usr/local/jdk1.8/jre/lib/charsets.jar
source /etc/profile
- 查看Java版本(确定是否安装成功)
[aaa@qq.com local]# java -version
java version "11" 2018-12-10
Java(TM) SE Runtime Environment 18.9 (build 11+28)
Java HotSpot(TM) 64-Bit Server VM 18.9 (build 11+28, mixed mode)
- 安装jdk(方法2), 直接使用yum安装。
yum install -y java-1.8.0-openjdk
- 服务器端安装Jenkins
- 下载官方源
wget -O /etc/yum.repos.d/jenkins.repo https://pkg.jenkins.io/redhat/jenkins.repo
- 安装**
rpm --import https://pkg.jenkins.io/redhat/jenkins.io.key
- yum安装Jenkins
yum install -y jenkins
- 启动Jenkins服务
systemctl start jenkins
- 查看admin密码
less /var/log/jenkins/jenkins.log
内容如下:
Jenkins initial setup is required. An admin user has been created and a password generated.
Please use the following password to proceed to installation:
9455566a48fc411d99aed3575a158ecd
也可以在
/var/lib/jenkins/secrets/initialAdminPassword
查看:
[aaa@qq.com jdk1.8]# cat /var/lib/jenkins/secrets/initialAdminPassword
9455566a48fc411d99aed3575a158ecd
- 在浏览器上继续安装Jenkins
-
浏览器输入192.168.157.128:8080
-
选择安装推荐的插件
当出现下载插件画面卡主的问题时 可能与Jenkins总是尝试连接 www.google.com,来判断网络是否连通有关,解决方法如下:
把www.google.com改为www.baidu.com
vim /var/lib/jenkins/updates/default.json
{"connectionCheckUrl":"http://www.baidu.com/"
缺少cloudbees-folder包 安装插件,有时候会报类似的错误:An error occurred during installation: No such plugin: cloudbees-folder
解决 下载对应的包并放到/var/lib/jenkins/plugins/下
参考网页 https://zhidao.baidu.com/question/308013275474785924.html
[aaa@qq.com plugins]# wget http://ftp.icm.edu.pl/packages/jenkins/plugins/cloudbees-folder/latest/cloudbees-folder.hpi
[aaa@qq.com src]# mv cloudbees-folder.hpi /var/lib/jenkins/plugins/
- 创建管理员用户
三、了解jenkins
- 查看yum安装的Jenkins安装的路径
[aaa@qq.com jdk1.8]# rpm -ql jenkins
/etc/init.d/jenkins
/etc/logrotate.d/jenkins
/etc/sysconfig/jenkins
/usr/lib/jenkins
/usr/lib/jenkins/jenkins.war
/usr/sbin/rcjenkins
/var/cache/jenkins
/var/lib/jenkins
/var/log/jenkins
-
/var/lib/jenkins
主目录
- 存放任务目录:
jobs
- 用户相关目录:
users
- 存放插件目录:
plugins
- 存放配置文件的目录:
/etc/sysconfig/jenkins
- 日志目录:
/var/log/jenkins
jenkins
不依赖数据库存储数据,jenkins
会把相关的数据保存在xml
文件中。
四、发布php代码
-
查看是否安装了 “Git plugin”和“Publish Over SSH”插件
-
点击
已安装
查看 Git plugin和Publish Over SSH是否安装 -
由于没有安装
Publish Over SSH
点击可选插件
来安装它 此插件用于远程连接客户端机器 -
安装插件成功后,重启Jenkins服务
[aaa@qq.com jdk1.8]# systemctl restart jenkins
- 把服务端的公钥放置到客户机上
[aaa@qq.com ~]# ssh-******
把公钥拷贝到客户机上
[aaa@qq.com /]# cat /root/.ssh/id_rsa.pub
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCskcpHKi0TNzaxdxdkJjLXqow3j58/sm/OqEnorFmpSvt2O9hg+/FaYetqDMSg27+pmqFpMen3Jbr9hnVyOUcXkh3/jLTVvHaInmYVrp0SeQQFJrDqV0o9GSAZ6TUfz8bCyC7Lc/qVsGoL3oTqtbwKnCCp4zYqlZW8l7BzBNkQmKB3iZDqKauSuIEiEvrIqGfrAKCV/EPrXJQPsxmeZXvmTI/gIHaaWVuRcHCti611jSMzF/jKsCJ4Y6yttHecYdxdAqIcY0q09dbDXo+wgwhyEU3KK457hF26AH6d8/38Aggj6xHBuINOYP62pecgJCNF+qOqBST6R85eFjFAb8M1 aaa@qq.com
测试是否可以通过**登陆
[aaa@qq.com /]# ssh zyj02
Last login: Mon Dec 10 22:11:03 2018 from zyj01
[aaa@qq.com ~]#
- 在Jenkins上添加私钥和客户机的配置
系统管理
—- 系统设置
—- Publish over SSH
key
上添加上私钥SSH Servers
中 Name
自定义 Hostname
填写客户机IP地址 Usename
填写客户机用户 默认root Remote Directory
填写远程登录目 录默认/
- 创建发布php的任务
新建任务
—-填写名字
—-选择 构建一个*风格的软件项目
填写描述
源码管理
选择 Git
在Repository URL
填写你项目的git地址。
如果是公共项目可以不设置下面的参数,直接填写一个git地址即可,若是私有项目,需要填写认证信息,比如可以选择 SSH Username whith private key
,然后设置Username
以及private key
。 Branches to build
默认为*/master
,意思是发布的分支为master
,保持默认。
构建
—-Send files or execute commands over SSH
—-Source files
—-Remote directory
—-Exec command
Remove prefix
可以指定截掉的前缀目录,这里留空即可Remote directory
指定远程服务器上代码存放路径 Exec command
为文件传输完成后要执行的命令,比如可以是更改文件权限的命令
设置完成后点击 Add Transfer Set
如果还有另外的机器,可以点击 Add Server
- 发布php的任务
点击左面的立即构建,就能把git上的代码发布到指定的客户端上
点击左下角的#1/#2… ,然后再点击控制台输出
即可查看输出日志
查看客户端zyj01是否创建对应文件,及运行命令
[aaa@qq.com tmp]# ll test_php/
总用量 12
-rw-r--r-- 1 shenxinyu shenxinyu 24 12月 10 22:40 1.txt
-rw-r--r-- 1 shenxinyu shenxinyu 8 12月 10 22:40 2.txt
-rw-r--r-- 1 shenxinyu shenxinyu 4 12月 10 22:40 README.md
五、jenkins邮件配置
用Jenkins发布了代码时是可以使用邮件通知客户是否发布代码成功的
- 步骤
- 设置系统管理员邮件地址
系统管理
—- 系统设置
—- Jenkins Location
—- 系统管理员邮件地址
注意:发送通知的邮件地址必须和管理员邮件地址一致,否则发送邮件失败
- 设置发送邮件地址
邮件通知
—- SMTP服务器
—- 点勾 使用SMTP认证
—- 用户名(邮件地址)
和 密码(授权码)
—- SMTP端口
注:可以发送测试邮件,测试是否配置成功
- 在对应的job中设置接受邮件的地址
注:Recipients 填的邮件地址只能是发布代码失败才发送邮件给此地址
六、插件email-ext
使用email-ext插件可以自定义发送邮件。不论是否成功发布代码都会发邮件到你指定的邮箱。发送的内容也可以自定义。
参考文章 http://www.cnblogs.com/zz0412/p/jenkins_jj_01.html
- 步骤
- 安装插件
Email Extension Plugin
,默认自带安装
系统管理
—- 插件管理
—- Email Extension Plugin
!
- 设置
Email Extension Plugin
中的邮件地址
设置Email Extension Plugin之前,先把邮件通知里面设置的清空掉
系统管理
—- 系统配置
—- Extended E-mail Notification
—- SMTP服务器
—- 点勾 Use SMTP Authentication
—- 用户名(邮件地址)和 密码(授权码)
—- SMTP端口 —- Default Triggers(Always)
- 在对应的job中设置接受邮件的地址
构建后操作
—- Editable Email Notification
—- Project Recipient List(接收邮件地址)
—- Triggers
注:接收邮件的地址多个时用逗号分隔
七、**管理员密码
- 进入Jenkins用户配置文件
/var/lib/jenkins/users/
是Jenkins存放用户的目录
vim /var/lib/jenkins/users/mkozhaozaici_5975209659409958338/config.xml
- 找到并修改为下面的代码
<passwordHash>#jbcrypt:$2a$10$3ivnAUbPrkWnq.zaWjF3uuujGUcfFR2u/E9gbFOLE21vspmNKa1ua</passwordHash>
新密码为
123456
- 重启Jenkins服务
systemctl restart jenkins
- 输入新密码进入管理员账号并设置新密码
在右上角的用户
—- 设置
—- 密码
八、部署java项目-创建私有仓库
-
一般使用Jenkins都是用来发布Java项目,java的项目是需要编译和打包的,其中编译和打包用maven完成。
-
一般生产环境中使用私有仓库gitlab来存放java代码,用Jenkins来获取代码并用maven编译和打包再发布带其他机器上
-
步骤
- 把本地的公钥存放在gitlab上
在浏览器上输入ip进入gitlab 点击头像
etting
—- SSH Keys
- 创建新的私有仓库
在zyj02的服务器上
[aaa@qq.com ~]# git config --global user.name "Administrator"
[aaa@qq.com ~]# git config --global user.email "aaa@qq.com"
[aaa@qq.com ~]# git clone aaa@qq.com:test/test-java.git
[aaa@qq.com ~]# cd test-java
[aaa@qq.com test-java]# touch README.md
[aaa@qq.com test-java]# git add README.md
[aaa@qq.com test-java]# git commit -m "add README"
[aaa@qq.com test-java]# git push -u origin master
在gitlab上
九、部署jiava项目-下载zrlog源码
这里模拟生产环境下载一个zrlog的源码并上传到gitlab的私有仓库上
- 下载zrlog源码压缩包
[aaa@qq.com src]# wget https://codeload.github.com/94fzb/zrlog/zip/master
master
是zip压缩包
- 解压master包并把内容移动到仓库中
[aaa@qq.com ~]# cd test-java/
[aaa@qq.com test-java]# git add .
[aaa@qq.com test-java]# git commit -m "add zrlog"
[aaa@qq.com test-java]# git push
- 问题: 找不到
gitlab.example.com
ssh: Could not resolve hostname gitlab.example.com: Name or service not known
fatal: Could not read from remote repository.
Please make sure you have the correct access rights
and the repository exists.
解决方法: 在hosts中添加对应的ip地址
[aaa@qq.com test-java]# vim /etc/hosts
192.168.229.133 gitlab.example.com
在浏览器上看gitlab已经把zrlog的源码上传了
十、安装tomcat
这里模拟生产环境在另一台机器zyj02上安装 jdk + tomcat
- 去官网下载jdk并上传到src目录
[aaa@qq.com src]# ll jdk-8u191-linux-x64.tar.gz
-rw-r--r-- 1 root root 191753373 10月 26 23:57 jdk-8u191-linux-x64.tar.gz
- 解压jdk包和改名为jdk1.8
[aaa@qq.com src]# tar zxvf jdk-8u171-linux-x64.tar.gz
[aaa@qq.com src]# mv jdk1.8.0_171/ /usr/local/jdk1.8
- 编辑并生效环境变量文件
vim /etc/profile
内容如下:
JAVA_HOME=/usr/local/jdk1.8/
JAVA_BIN=/usr/local/jdk1.8/bin
JRE_HOME=/usr/local/jdk1.8/jre
PATH=$PATH:/usr/local/jdk1.8/bin:/usr/local/jdk1.8/jre/bin
CLASSPATH=/usr/local/jdk1.8/jre/lib:/usr/local/jdk1.8/lib:/usr/local/jdk1.8/jre/lib/charsets.jar
加载生效: source /etc/profile
- 下载Tomcat压缩包到src目录
[aaa@qq.com src]# tar zxvf apache-tomcat-9.0.12.tar.gz
[aaa@qq.com src]# mv apache-tomcat-9.0.12 /usr/local/tomcat
- 添加控制台角色admin和密码
vim /usr/local/tomcat/conf/tomcat-users.xml
在最后添加如下内容(</tomcat-users>前)
<role rolename="admin"/>
<role rolename="admin-gui"/>
<role rolename="admin-script"/>
<role rolename="manager"/>
<role rolename="manager-gui"/>
<role rolename="manager-script"/>
<role rolename="manager-jmx"/>
<role rolename="manager-status"/>
<user name="admin" password="zyjzyjzyj" roles="admin,manager,admin-gui,admin-script,manager-gui,manager-script,manager-jmx,manager-status" />
- 编辑允许访问Tomcat接口的IP地址
vim /usr/local/tomcat/webapps/manager/META-INF/context.xml
在allow那行末端添加本地IP(192.168.80.*)的网段,内容如下:
allow="127\.\d+\.\d+\.\d+|::1|0:0:0:0:0:0:0:1|192.168.80.*" />
- 启动Tomcat服务
/usr/local/tomcat/bin/startup.sh
- 使用浏览器访问Tomcat的欢迎页,找到manager webap
- 输入刚刚添加的角色和密码进入Tomcat接口界面
十一、部署java项目-安装maven
maven工具是用来把java代码打包的。因此把maven工具安装在Jenkins的机器上。
官方下载地址 https://maven.apache.org/download.cgi
- 点击
apache-maven-3.5.4-bin.tar.gz
下载
或者复制其下载地址到Jenkins所在服务器下载
cd /usr/local/src/
wget http://mirrors.hust.edu.cn/apache/maven/maven-3/3.5.4/binaries/apache-maven-3.5.4-bin.tar.gz
- 解压maven包并移动到/usr/local下
tar zxvf apache-maven-3.5.4-bin.tar.gz
mv apache-maven-3.5.4 /usr/local/apache-maven-3.5.4
- 查看maven的版本号
[aaa@qq.com src]# /usr/local/apache-maven-3.5.4/bin/mvn --version
Apache Maven 3.5.4 (1edded0938998edf8bf061f1ceb3cfdeccf443fe; 2018-06-18T02:33:14+08:00)
Maven home: /usr/local/apache-maven-3.5.4
Java version: 1.8.0_191, vendor: Oracle Corporation, runtime: /usr/local/jdk1.8/jre
Default locale: zh_CN, platform encoding: UTF-8
OS name: "linux", version: "3.10.0-862.9.1.el7.x86_64", arch: "amd64", family: "unix"
- 在Jenkins上配置maven工具
系统管理
—-全局工具配置
—-Maven 配置
—-默认 settings 提供 和 默认全局 settings 提供
—-/usr/local/apache-maven-3.5.4/conf/settings.xml(maven工具配置文件路径)
Maven
—- 去掉 自动安装
—- Name(自定义)
和 MAVEN_HOME(/usr/local/apache-maven-3.5.4/)
十二、安装插件
Jenkins服务上安装和配置好了maven后,还需要安装关于maven的的两个插件。 Maven Integration plugin
和 Deploy to container Plugin
.
-
Maven Integration plugin
是可以创建关于maven的任务。 -
Deploy to container Plugin
是让Jenkins发布war包。
系统管理
—- 插件管理
—- 安装 Maven Integration plugin
和 Deploy to container Plugin
- 重启Jenkins服务
systemctl restart jenkins
- 构建job
新建任务
—- 项目名称
—- 构建一个maven项目
- 源码管理
Git
—- Repository URL
(私有仓库地址) —- Add
(Jenkins)
- 由于是私人仓库地址 因此还需要把私钥填写好
类型
(SSH Username with private key)—- Username
(git)—- Private Key
(Jenkins所在机器的私钥)
Credentials
选择 git
- 构建触发器 构建环境 Pre Steps Post Steps 构建设置
保持默认
- Build
Root POM
默认填pom.xml
(可能出现找不到该文件的情况,填写项目所在的详细路径即可)Goals and options
填clean install -D maven.test.skip=true
或者留空
- 构建后操作
我们先测试只打包不发布Editable Email Notification
—- Project Recipient List
(增加接收邮件的地址)
- 查看任务
打包好的war在/var/lib/jenkins/workspace/test-java/target/
下
[aaa@qq.com ~]# ls /var/lib/jenkins/workspace/test-java/target/zrlog-2.0.6.war
/var/lib/jenkins/workspace/test-java/target/zrlog-2.0.6.war
十三、手动安装jdk
出现下面错误是由于jdk问题 我们可以重新下载新的jdk 网址 http://kun0769.top/2018/06/26/Tomcat-1(6月26日)/ 也可以选择把其他机器上jdk拷贝到本台机器上。
把zyj02机器上的jdk拷贝到jenkins所在机器上
scp -r 192.168.229.129:/usr/local/jdk1.8/ /usr/local/jdk1.8/
- 在Jenkins上配置jdk
系统管理
—-全局工具配置
—-JDK
— 去掉自动安装
—-别名
(自定义)和JAVA_HOME
(/usr/local/jdk1.8/
)
- 重启Jenkins服务
systemctl restart jenkins
十四、发布war包
之前的步骤只是打包war包 ,现在在Jenkins上操作发布war包
- 构建后操作
选择Deploy war/ear to a container
WAR/EAR files
填写本地war路径 。**/*.war
表示所有war包,默认写法Containers
客户机的Tomcat版本 选择Tomcat 8.x
Credentials
这里需要点击右侧的Add添加用户密码
Tomcat URL填写要把war包发布到的那台机器的url 这里填写http://192.168.229.128:8080
填完后发布即可
推荐阅读
-
Jenkins常用插件安装
-
Jenkins设置BUILD NUMBER初始值
-
centos下GitLab+Jenkins持续集成环境搭建(安装jenkins)
-
Android Studio插件之Jenkins插件详解
-
Linux下自动化部署ASP.NET CORE 3.1(Docker+Jenkins+Nginx)
-
Jenkins + Docker + dockerfile-maven-plugin + Harbor CI/CD spring-boot项目的最轻量级配置
-
Docker中完成Jenkins的安装
-
jenkins构建Docker 镜像实例详解
-
Docker容器使用jenkins部署web项目(总结)
-
Jenkins 结合 Docker 为 .NET Core 项目实现低配版的 CI&CD