欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

jenkins

程序员文章站 2022-05-04 10:52:36
...

一、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
    jenkins
  2. 通过xftp传输到服务器上
    jenkins
  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版本(确定是否安装成功)
[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
  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查看:

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

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

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

jenkins

三、了解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 主目录
  1. 存放任务目录:jobs
  2. 用户相关目录:users
  3. 存放插件目录:plugins
  • 存放配置文件的目录: /etc/sysconfig/jenkins
  • 日志目录:/var/log/jenkins

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

四、发布php代码

  1. 查看是否安装了 “Git plugin”和“Publish Over SSH”插件
    jenkins

  2. 点击 已安装 查看 Git plugin和Publish Over SSH是否安装
    jenkins

  3. 由于没有安装Publish Over SSH 点击 可选插件 来安装它 此插件用于远程连接客户端机器
    jenkins

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

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

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

jenkins

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

jenkins

  1. 创建发布php的任务

新建任务 —- 填写名字 —- 选择 构建一个*风格的软件项目

jenkins

填写描述

jenkins

源码管理选择 Git

Repository URL填写你项目的git地址。

如果是公共项目可以不设置下面的参数,直接填写一个git地址即可,若是私有项目,需要填写认证信息,比如可以选择 SSH Username whith private key,然后设置Username以及private key

Branches to build默认为*/master,意思是发布的分支为master,保持默认。

jenkins

构建 —- Send files or execute commands over SSH —- Source files —- Remote directory —- Exec command

jenkins

jenkins

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

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

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

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

  1. 发布php的任务

点击左面的立即构建,就能把git上的代码发布到指定的客户端上

jenkins

点击左下角的#1/#2… ,然后再点击控制台输出即可查看输出日志

jenkins

查看客户端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发布了代码时是可以使用邮件通知客户是否发布代码成功的

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

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

jenkins
jenkins

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

  1. 设置发送邮件地址

邮件通知 —- SMTP服务器 —- 点勾 使用SMTP认证 —- 用户名(邮件地址)密码(授权码)—- SMTP端口
jenkins

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

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

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

六、插件email-ext

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

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

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

jenkins

!jenkins

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

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

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

jenkins

jenkins

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

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

jenkins

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

jenkins

七、**管理员密码

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

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

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

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

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

  • 步骤

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

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

jenkins

  1. 创建新的私有仓库

jenkins

在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上

jenkins

九、部署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的源码上传了

jenkins

十、安装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

jenkins

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

jenkins

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

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

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

jenkins

或者复制其下载地址到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工具配置文件路径)

jenkins

jenkins

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

jenkins

十二、安装插件

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

jenkins

jenkins

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

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

jenkins

  • 源码管理

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

jenkins

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

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

jenkins

Credentials选择 git

jenkins

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

jenkins

  • 构建后操作

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

jenkins

  • 查看任务

jenkins

打包好的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拷贝到本台机器上。

jenkins

把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

  • 重启Jenkins服务
systemctl restart jenkins

十四、发布war包

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

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

jenkins

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

jenkins

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

jenkins

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

jenkins

填完后发布即可

上一篇: Jenkins

下一篇: Jenkins