Jenkins是一个开源的、可扩展的持续集成、交付、部署(软件/代码的编译、打包、部署)基于web界面的平台。Jenkins是一个工具集,提供了各种各样的插件。比如获取git上最新的代码,可以帮你编译源代码,可以调用自定义的shell脚本远程执行命令
官网 https://jenkins.io
官方文档 https://jenkins.io/doc/
以上过程Jenkins都可以以自动化方式来快速完成。
参考文档 http://www.ruanyifeng.com/blog/2015/09/continuous-integration.html
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
[root@zyj01 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)
yum install -y java-1.8.0-openjdk
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 install -y jenkins
systemctl start jenkins
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
查看:
[root@zyj01 jdk1.8]# cat /var/lib/jenkins/secrets/initialAdminPassword
9455566a48fc411d99aed3575a158ecd
当出现下载插件画面卡主的问题时 可能与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
[root@zyj02 plugins]# wget http://ftp.icm.edu.pl/packages/jenkins/plugins/cloudbees-folder/latest/cloudbees-folder.hpi
[root@zyj02 src]# mv cloudbees-folder.hpi /var/lib/jenkins/plugins/
[root@zyj01 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
文件中。
安装插件成功后,重启Jenkins服务
[root@zyj01 jdk1.8]# systemctl restart jenkins
[root@zyj01 ~]# ssh-keygen
把公钥拷贝到客户机上
[root@zyj01 /]# cat /root/.ssh/id_rsa.pub
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCskcpHKi0TNzaxdxdkJjLXqow3j58/sm/OqEnorFmpSvt2O9hg+/FaYetqDMSg27+pmqFpMen3Jbr9hnVyOUcXkh3/jLTVvHaInmYVrp0SeQQFJrDqV0o9GSAZ6TUfz8bCyC7Lc/qVsGoL3oTqtbwKnCCp4zYqlZW8l7BzBNkQmKB3iZDqKauSuIEiEvrIqGfrAKCV/EPrXJQPsxmeZXvmTI/gIHaaWVuRcHCti611jSMzF/jKsCJ4Y6yttHecYdxdAqIcY0q09dbDXo+wgwhyEU3KK457hF26AH6d8/38Aggj6xHBuINOYP62pecgJCNF+qOqBST6R85eFjFAb8M1 root@zyj01
测试是否可以通过密钥登陆
[root@zyj01 /]# ssh zyj02
Last login: Mon Dec 10 22:11:03 2018 from zyj01
[root@zyj02 ~]#
系统管理
—- 系统设置
—- Publish over SSH
key
上添加上私钥SSH Servers
中 Name
自定义 Hostname
填写客户机IP地址 Usename
填写客户机用户 默认root Remote Directory
填写远程登录目 录默认/
新建任务
—-填写名字
—-选择 构建一个自由风格的软件项目
填写描述
源码管理
选择 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
点击左面的立即构建,就能把git上的代码发布到指定的客户端上
点击左下角的#1/#2… ,然后再点击控制台输出
即可查看输出日志
查看客户端zyj01是否创建对应文件,及运行命令
[root@zyj01 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 Location
—- 系统管理员邮件地址
注意:发送通知的邮件地址必须和管理员邮件地址一致,否则发送邮件失败
邮件通知
—- SMTP服务器
—- 点勾 使用SMTP认证
—- 用户名(邮件地址)
和 密码(授权码)
—- SMTP端口
注:可以发送测试邮件,测试是否配置成功
注:Recipients 填的邮件地址只能是发布代码失败才发送邮件给此地址
使用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)
构建后操作
—- Editable Email Notification
—- Project Recipient List(接收邮件地址)
—- Triggers
注:接收邮件的地址多个时用逗号分隔
/var/lib/jenkins/users/
是Jenkins存放用户的目录
vim /var/lib/jenkins/users/mkozhaozaici_5975209659409958338/config.xml
#jbcrypt:$2a$10$3ivnAUbPrkWnq.zaWjF3uuujGUcfFR2u/E9gbFOLE21vspmNKa1ua
新密码为
123456
systemctl restart jenkins
一般使用Jenkins都是用来发布Java项目,java的项目是需要编译和打包的,其中编译和打包用maven完成。
一般生产环境中使用私有仓库gitlab来存放java代码,用Jenkins来获取代码并用maven编译和打包再发布带其他机器上
步骤
在浏览器上输入ip进入gitlab 点击头像
etting
—- SSH Keys
在zyj02的服务器上
[root@zyj02 ~]# git config --global user.name "Administrator"
[root@zyj02 ~]# git config --global user.email "[email protected]"
[root@zyj02 ~]# git clone [email protected]:test/test-java.git
[root@zyj02 ~]# cd test-java
[root@zyj02 test-java]# touch README.md
[root@zyj02 test-java]# git add README.md
[root@zyj02 test-java]# git commit -m "add README"
[root@zyj02 test-java]# git push -u origin master
在gitlab上
这里模拟生产环境下载一个zrlog的源码并上传到gitlab的私有仓库上
[root@zyj02 src]# wget https://codeload.github.com/94fzb/zrlog/zip/master
master
是zip压缩包
[root@zyj02 ~]# cd test-java/
[root@zyj02 test-java]# git add .
[root@zyj02 test-java]# git commit -m "add zrlog"
[root@zyj02 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地址
[root@zyj02 test-java]# vim /etc/hosts
192.168.229.133 gitlab.example.com
在浏览器上看gitlab已经把zrlog的源码上传了
这里模拟生产环境在另一台机器zyj02上安装 jdk + tomcat
[root@zyj02 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
[root@zyj02 src]# tar zxvf jdk-8u171-linux-x64.tar.gz
[root@zyj02 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
[root@zyj02 src]# tar zxvf apache-tomcat-9.0.12.tar.gz
[root@zyj02 src]# mv apache-tomcat-9.0.12 /usr/local/tomcat
vim /usr/local/tomcat/conf/tomcat-users.xml
在最后添加如下内容(前)
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.*" />
/usr/local/tomcat/bin/startup.sh
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
tar zxvf apache-maven-3.5.4-bin.tar.gz
mv apache-maven-3.5.4 /usr/local/apache-maven-3.5.4
[root@zyj02 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"
系统管理
—- 全局工具配置
—- 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
systemctl restart jenkins
新建任务
—- 项目名称
—- 构建一个maven项目
Git
—- Repository URL
(私有仓库地址) —- Add
(Jenkins)
类型
(SSH Username with private key)—- Username
(git)—- Private Key
(Jenkins所在机器的私钥)
Credentials
选择 git
保持默认
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/
下
[root@zyj01 ~]# 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 网址 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/
系统管理
—- 全局工具配置
—- JDK
— 去掉 自动安装
—- 别名
(自定义)和JAVA_HOME
(/usr/local/jdk1.8/
)systemctl restart jenkins
之前的步骤只是打包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
填完后发布即可