jenkins

一、jenkins介绍

Jenkins是一个开源的、可扩展的持续集成、交付、部署(软件/代码的编译、打包、部署)基于web界面的平台。Jenkins是一个工具集,提供了各种各样的插件。比如获取git上最新的代码,可以帮你编译源代码,可以调用自定义的shell脚本远程执行命令
官网 https://jenkins.io
官方文档 https://jenkins.io/doc/

  • 软件开发标准化流程
  1. 产品设计成型 -> 开发人员开发代码 -> 测试人员测试功能 -> 运维人员发布上线
  2. 不同的开发人员把模块代码叠加上主干过程为持续集成。
  3. 把代码给不断给测试人员或者软件迭代更新于用户过程为持续交付。
  4. 运维上线代码过程为持续部署。

以上过程Jenkins都可以以自动化方式来快速完成。

参考文档 http://www.ruanyifeng.com/blog/2015/09/continuous-integration.html

二、 jenkins安装

  • 安装jdk(方法1)
  1. 去官网下载jdk
    image
  2. 通过xftp传输到服务器上
    image
  3. 解压和改名
tar zxvf  jdk-8u171-linux-x64.tar.gz
mv jdk1.8.0_171/ /usr/local/jdk1.8
  1. 编辑环境变量配置文件
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
  1. 查看Java版本(确定是否安装成功)
[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)
  • 安装jdk(方法2), 直接使用yum安装。
yum install -y java-1.8.0-openjdk
  • 服务器端安装Jenkins
  1. 下载官方源
wget -O /etc/yum.repos.d/jenkins.repo https://pkg.jenkins.io/redhat/jenkins.repo
  1. 安装密钥
 rpm --import https://pkg.jenkins.io/redhat/jenkins.io.key
  1. yum安装Jenkins
yum install -y jenkins
  1. 启动Jenkins服务
systemctl start jenkins
  1. 查看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查看:

[root@zyj01 jdk1.8]# cat /var/lib/jenkins/secrets/initialAdminPassword
9455566a48fc411d99aed3575a158ecd
  • 在浏览器上继续安装Jenkins
  1. 浏览器输入192.168.157.128:8080
    image

  2. 选择安装推荐的插件
    image

当出现下载插件画面卡主的问题时 可能与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/
  1. 创建管理员用户
    image

在这里插入图片描述

三、了解jenkins

  • 查看yum安装的Jenkins安装的路径
[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 主目录
  1. 存放任务目录:jobs
  2. 用户相关目录:users
  3. 存放插件目录:plugins
  • 存放配置文件的目录: /etc/sysconfig/jenkins
  • 日志目录:/var/log/jenkins

jenkins不依赖数据库存储数据,jenkins会把相关的数据保存在xml文件中。

四、发布php代码

  1. 查看是否安装了 “Git plugin”和“Publish Over SSH”插件
    在这里插入图片描述

  2. 点击 已安装 查看 Git plugin和Publish Over SSH是否安装
    在这里插入图片描述

  3. 由于没有安装Publish Over SSH 点击 可选插件 来安装它 此插件用于远程连接客户端机器
    在这里插入图片描述

  4. 安装插件成功后,重启Jenkins服务

[root@zyj01 jdk1.8]# systemctl restart jenkins
  1. 把服务端的公钥放置到客户机上
[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 ~]# 
  1. 在Jenkins上添加私钥和客户机的配置

系统管理 —- 系统设置 —- Publish over SSH

在这里插入图片描述

key 上添加上私钥SSH ServersName自定义 Hostname填写客户机IP地址 Usename填写客户机用户 默认root Remote Directory填写远程登录目 录默认/

在这里插入图片描述

  1. 创建发布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

image

在这里插入图片描述

Remove prefix可以指定截掉的前缀目录,这里留空即可

Remote directory指定远程服务器上代码存放路径

Exec command为文件传输完成后要执行的命令,比如可以是更改文件权限的命令

设置完成后点击 Add Transfer Set如果还有另外的机器,可以点击 Add Server

  1. 发布php的任务

点击左面的立即构建,就能把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发布了代码时是可以使用邮件通知客户是否发布代码成功的

  • 步骤
  1. 设置系统管理员邮件地址

系统管理 —- 系统设置 —- Jenkins Location —- 系统管理员邮件地址

在这里插入图片描述
在这里插入图片描述

注意:发送通知的邮件地址必须和管理员邮件地址一致,否则发送邮件失败

  1. 设置发送邮件地址

邮件通知 —- SMTP服务器 —- 点勾 使用SMTP认证 —- 用户名(邮件地址)密码(授权码)—- SMTP端口
在这里插入图片描述

注:可以发送测试邮件,测试是否配置成功

  1. 在对应的job中设置接受邮件的地址
    在这里插入图片描述
    在这里插入图片描述

注:Recipients 填的邮件地址只能是发布代码失败才发送邮件给此地址

六、插件email-ext

使用email-ext插件可以自定义发送邮件。不论是否成功发布代码都会发邮件到你指定的邮箱。发送的内容也可以自定义。
参考文章 http://www.cnblogs.com/zz0412/p/jenkins_jj_01.html

  • 步骤
  1. 安装插件 Email Extension Plugin,默认自带安装

系统管理 —- 插件管理 —- Email Extension Plugin

image

!image

  1. 设置Email Extension Plugin中的邮件地址

设置Email Extension Plugin之前,先把邮件通知里面设置的清空掉

系统管理 —- 系统配置 —- Extended E-mail Notification —- SMTP服务器 —- 点勾 Use SMTP Authentication —- 用户名(邮件地址)和 密码(授权码)—- SMTP端口 —- Default Triggers(Always)

image

image

  1. 在对应的job中设置接受邮件的地址

构建后操作 —- Editable Email Notification —- Project Recipient List(接收邮件地址)—- Triggers

image

注:接收邮件的地址多个时用逗号分隔

image

七、破解管理员密码

  • 进入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
  • 输入新密码进入管理员账号并设置新密码

在右上角的用户 —- 设置 —- 密码
image

八、部署java项目-创建私有仓库

  • 一般使用Jenkins都是用来发布Java项目,java的项目是需要编译和打包的,其中编译和打包用maven完成。

  • 一般生产环境中使用私有仓库gitlab来存放java代码,用Jenkins来获取代码并用maven编译和打包再发布带其他机器上

  • 步骤

  1. 把本地的公钥存放在gitlab上

在浏览器上输入ip进入gitlab 点击头像 etting—- SSH Keys

image

  1. 创建新的私有仓库

image

在zyj02的服务器上

[root@zyj02 ~]# git config --global user.name "Administrator"
[root@zyj02 ~]# git config --global user.email "admin@example.com"

[root@zyj02 ~]# git clone git@gitlab.example.com: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上

image

九、部署jiava项目-下载zrlog源码

这里模拟生产环境下载一个zrlog的源码并上传到gitlab的私有仓库上

  • 下载zrlog源码压缩包
[root@zyj02 src]# wget https://codeload.github.com/94fzb/zrlog/zip/master

master是zip压缩包

  • 解压master包并把内容移动到仓库中
[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的源码上传了

image

十、安装tomcat

这里模拟生产环境在另一台机器zyj02上安装 jdk + tomcat

  • 去官网下载jdk并上传到src目录
[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
  • 解压jdk包和改名为jdk1.8
[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

  • 下载Tomcat压缩包到src目录
[root@zyj02 src]# tar zxvf apache-tomcat-9.0.12.tar.gz
[root@zyj02 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

image

  • 输入刚刚添加的角色和密码进入Tomcat接口界面

image

十一、部署java项目-安装maven

maven工具是用来把java代码打包的。因此把maven工具安装在Jenkins的机器上。
官方下载地址 https://maven.apache.org/download.cgi

  • 点击 apache-maven-3.5.4-bin.tar.gz 下载

image

或者复制其下载地址到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的版本号
[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"
  • 在Jenkins上配置maven工具
    系统管理 —- 全局工具配置 —- Maven 配置 —- 默认 settings 提供 和 默认全局 settings 提供 —- /usr/local/apache-maven-3.5.4/conf/settings.xml(maven工具配置文件路径)

image

image

Maven —- 去掉 自动安装 —- Name(自定义)MAVEN_HOME(/usr/local/apache-maven-3.5.4/)

image

十二、安装插件

Jenkins服务上安装和配置好了maven后,还需要安装关于maven的的两个插件。 Maven Integration pluginDeploy to container Plugin.

  1. Maven Integration plugin是可以创建关于maven的任务。
  2. Deploy to container Plugin是让Jenkins发布war包。

系统管理 —- 插件管理—- 安装 Maven Integration pluginDeploy to container Plugin

image

image

  • 重启Jenkins服务
systemctl restart jenkins
  • 构建job

新建任务 —- 项目名称 —- 构建一个maven项目

image

  • 源码管理

Git —- Repository URL(私有仓库地址) —- Add (Jenkins)

image

  • 由于是私人仓库地址 因此还需要把私钥填写好

类型(SSH Username with private key)—- Username(git)—- Private Key(Jenkins所在机器的私钥)

image

Credentials选择 git

image

  • 构建触发器 构建环境 Pre Steps Post Steps 构建设置
保持默认
  • Build
    Root POM 默认填 pom.xml(可能出现找不到该文件的情况,填写项目所在的详细路径即可)
    Goals and optionsclean install -D maven.test.skip=true或者留空

image

  • 构建后操作

我们先测试只打包不发布
Editable Email Notification —- Project Recipient List(增加接收邮件的地址)

image

  • 查看任务

image

打包好的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问题 我们可以重新下载新的jdk 网址 http://kun0769.top/2018/06/26/Tomcat-1%EF%BC%886%E6%9C%8826%E6%97%A5%EF%BC%89/ 也可以选择把其他机器上jdk拷贝到本台机器上。

image

把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/

image

  • 重启Jenkins服务
systemctl restart jenkins

十四、发布war包

之前的步骤只是打包war包 ,现在在Jenkins上操作发布war包

  • 构建后操作
    选择 Deploy war/ear to a container

image

WAR/EAR files 填写本地war路径 。**/*.war表示所有war包,默认写法
Containers客户机的Tomcat版本 选择Tomcat 8.x

image

Credentials这里需要点击右侧的Add添加用户密码

image

Tomcat URL填写要把war包发布到的那台机器的url 这里填写http://192.168.229.128:8080

image

填完后发布即可

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值