为了配合上一篇的ant+jenkins做持续集成,需要在linux环境下搭建一个jenkins平台。网上有很多安装的例子,我主要记录一下自己遇到的问题,真真的是特别惆怅的,每次我遇到的问题都格外多。

主要分为三块内容,具体如下:

*安装

*问题及解决,

一 安装jenkins

1 首先确认该机器已经安装jdk,确认方式:在linux机器上输入  java -version,若系统可识别java命令,则表示已安装jdk,如下

得到的1.7.0_79为java版本,需注意:有些版本的jenkins不能使用1.6的jdk

2 安装jenkins

A 离线安装:

① 下载jenkins.war 包。Jenkins官方地址:http://Jenkins-ci.org/ (最新war包的下载地址:http://mirrors.jenkins-ci.org/war/latest/jenkins.war)

② 下载一个tomcat容器在webapps中放入jenkins.war,不要解压。

③ 在cd /opt/soft/tomcat/webapps/ 中执行 java -jar jenkins.war

④ 查看日志是否有异常,访问http://ip:8080即可看到jenkins界面,jenkins安装成功。

B 在线安装

使用yum命令进行在线安装,使用service命令进行启动,具体操作如下:

wget -O /etc/yum.repos.d/jenkins.repo http://jenkins-ci.org/redhat/jenkins.repo --no-check-certificate
rpm --import http://pkg.jenkins-ci.org/redhat/jenkins-ci.org.key          
yum install jenkins                                    
[root@bjdhj-120-215 run]# service jenkins start
Starting Jenkins [确定]
[root@bjdhj-120-215 run]# service jenkins status
jenkins (pid 23873) 正在运行...

浏览器访问http://ip:8080 即可看到jenkins界面,jenkins安装成功

二 配置JOB

1 安装插件 Manage Jenkins->Manage Plugins ->Available中选取即可

一般需要安装的插件有 Email Extension Plugin(发送邮件)、Cobertura Plugin(集成xml报告?)、Pipeline: Build Step(配置job的前后序)、GitLab Plugin(从git同步)

2 邮箱配置

这个地址很详细:https://blog.csdn.net/fullbug/article/details/53024562

A jenkins location中配置

B  Extended E-mail Notificationn配置

C Email Extension Plugin配置,test即可收到邮件

注意:SMTP server注意不要写错

3 节点配置 Jenkins Manage - > Manage Nodes ->New Node

A 配置节点

B 关联工程

4 一个项目的配置

路径:New 任务 -> (构建一个自由风格的项目)

  • 丢弃旧的构建:保留构建结果配置
  • 参数化构建过程:在构建页面增加可配置参数,jenkins构建时会获取,配合 xshell 内代码使用
  • Restrict where this project can be run:挂载节点选择(实际的执行和代码会在这台机器上)
  • Source Code Management:源码配置,通常是 git 地址
  • Build Triggers:触发方式,如果是自动化可由部署工程触发,也可定时触发
  • Build:shell 脚本,范例见https://www.cnblogs.com/zhaoxd07/p/9049707.html ⑨
  • Post-build Actions:构建完成后要执行的内容,对于自动化来说,通常是覆盖率报告读取和邮件通知
    • Publish HTML reports :html 覆盖率报告

      • Coverage Metric Targets:配置满足何种条件时 构建结果图标展示:太阳 阴天 雨天等
    • Publish Clover PHP Coverage Report:php代码的xml报告
    • Publish Junit test result report:执行自动时使用 --junit --junit-directory=./reports ,则生成对应的xml结果可读取查看执行详情
      • 给一个指定demo,日后好抄
      • #!/usr/bin/python3
        # -*- coding:utf- -*-
        import sys import subprocess
        cmd = 'behave features/API-Test-Suites/'+sys.argv[]+' --junit --junit-directory=./reports --tags=-skip'
        subprocess.call(cmd, shell=True, executable='/bin/bash')
    • Editable Email Notification:邮件相关配置,可百度一堆

5 视图添加执行一键构建功能

转自:https://www.cnblogs.com/wwyxyt/p/6708050.html

三 遇到的问题

问题1 在执行yum install jenkins时提示:user jenkins does not exist

解决:该机器上没有jenkins用户,需要使用adduser命令创建用户,adduser命令需要配合更改passwd等的权限位完成

[root@esearch01 ~]# adduser jennkins
adduser: cannot open /etc/passwd #是因为该文件加了权限位,不可写操作
[root@esearch01 etc]# lsattr passwd   #进行确认
----i--------e- passwd
[root@esearch01 etc]# chattr -i passwd #去掉权限位
[root@esearch01 etc]# lsattr passwd #进行确认
-------------e- passwd
[root@esearch01 etc]# adduser jenkins #即可创建成功jenkins用户

问题2:修改jenkins的端口

解决:完成jenkins的在线安装后,查看/usr/lib/jenkins/jenkins.war;查看/etc/sysconfig/jenkins是jenkins的配置文件

修改jenkins文件的端口号:

vim /etc/sysconfig/jenkins 编辑该文件,修改如下两个端口

JENKINS_PORT="8001"

JENKINS_AJP_PORT="8009"

保存文件并退出,重启jenkins(service jenkins restart),在浏览器中访问http://ip:8001,打开jenkins页面。

问题3:jenkins的启动日志报错:

WARING:Could not intialize the host network interface on nullbecause of an error:101/udp

java.net.UnknownHostException:101/udp

原因:在linux执行hostname,得到101/udp。正常应该是通过hostname获取对应的机器ip,但是明显101/udp在解析时不通过,所以无法定位ip,导致错误。

解决:更新hostname。执行语句为hostname bjdhj-120-215.58os.org(自己定义一个合理的hostname名称),可用其他机器ping改hostname,看是否能正确得到对应的ip。

再次启动jenkins.war,日志正常,可访问web页面。

问题4:不能正确stop jenkins

[root@bjdhj-120-215 ~]# service jenkins stop
Shutting down Jenkins [失败]

[root@bjdhj-120-215 ~]# service jenkins status
jenkins is stop,pid is exist

解决1:java版本冲突,确认下是否同时存在java1.6 java1.7或者其他,卸载,只保留一个

解决2:重新安装jenkins,即再执行一遍yum install jenkins。

解决3:我是重新安装了好了,但我总觉得有其他地方可以解决这个问题,所以先留着坑。

问题5:提示java版本不符

[root@localhost ~]# service jenkins start
Starting Jenkins May , :: AM Main verifyJavaVersion
SEVERE: Running with Java class version , which is older than the Minimum required version . See https://jenkins.io/redirect/java-support/
java.lang.UnsupportedClassVersionError: 51.0
at Main.verifyJavaVersion(Main.java:)
at Main.main(Main.java:) Jenkins requires Java versions [, ] but you are running with Java 1.7 from /usr/lib/jvm/java-1.7.-openjdk-1.7.0.45.x86_64/jre
java.lang.UnsupportedClassVersionError: 51.0
at Main.verifyJavaVersion(Main.java:)
at Main.main(Main.java:)

解决:下载jdk1.8,放到了/usr/lib/jvm/jdk1.8.0

vim /etc/init.d/jenkins文件,查看配置,执行java命令 确认到 usr/bin/java与/etc/alternatives/java下为jdk1.7,在对应目录下建立软连接 java8 到/usr/lib/jvm/java-1.8.0/bin/java,再更改/etc/init.d/jenkins文件为 #后内容,再重启即可成功

candidates="
/etc/alternatives/java #/etc/alternatives/java8
/usr/lib/jvm/java-1.8.0/bin/java 
/usr/lib/jvm/jre-1.8.0/bin/java
/usr/lib/jvm/java-1.7.0/bin/java
/usr/lib/jvm/jre-1.7.0/bin/java
/usr/lib/jvm/java-11.0/bin/java
/usr/lib/jvm/jre-11.0/bin/java
/usr/lib/jvm/java-11-openjdk-amd64
/usr/bin/java "   #/usr/bin/java8

问题6:windows访问linux的ip:port失败,但是ping ip可以通

防火墙问题,需要在linux机器开放jenkins的端口,设置如下,再次访问即可成功。

vim /etc/sysconfig/iptables

#添加一条记录
-A INPUT -p tcp -m tcp --dport -j ACCEPT #一定要在倒数第一/二前才生效
-A INPUT -j REJECT --reject-with icmp-host-prohibited
-A FORWARD -j REJECT --reject-with icmp-host-prohibited /etc/init.d/iptables restart
/etc/init.d/iptables save

问题7:勾选了Exit code to set build unstable,结果是fixed,而不是success

怎么样可以根据构建结果来输出success和failure,而不是fixed和unstable

  • 如果第1次构建失败 --- 则结果为failure
  • 如果第2次构建成功 --- 则结果为unstable
  • 如果第3次构建成功 --- 则结果为fixed
  • 如果第4次构建成功 --- 则结果为success

扩展:摘自 https://blog.csdn.net/qq351469076/java/article/details/80138342

声明式流水线通过其post部分支持健壮的失败处理,允许声明多个不同的“post条件”。 例如: alwaysunstablesuccessfailurechanged管道语法部分提供了更多关于如何使用各种post条件的详细信息。

changed
如果当前管道或阶段的运行与之前的运行有不同的完成状态,则只运行post中的步骤。
fixed
如果当前管道或阶段的运行成功,且前一次运行失败或不稳定,则只运行post中的步骤。
failure
只有在当前管道或阶段的运行有“失败”状态时才运行post中的步骤,通常在web UI中表示为红色。
success
只有当当前管道或阶段的运行具有“成功”状态时,才运行post中的步骤,通常在web UI中以蓝色或绿色表示。
unstable
如果当前管道或阶段的运行状态为“不稳定”状态,通常是由测试失败、代码违规等引起的,那么只在post中运行这些步骤。

【Jenkins】Linux搭建Jenkins平台的更多相关文章

  1. Linux 搭建 Jenkins

    环境准备 安装JDK 安装 JDK 之前写过一篇文章,本文就不具体讲了: Linux 安装 JDK 注意:Java版本不能是gcj,会导致Jenkins有问题,centos7搭建jenkins小记文章 ...

  2. 一、linux搭建jenkins+github详细步骤

    事情缘由: 现在在做的主要工作是通过jenkins+postman实现api的自动化测试,想要达到的效果是,api自动化测试定时跑脚本的同时,github有新的代码提交,jenkins会自动检测部署新 ...

  3. linux搭建jenkins+github详细步骤

    事情缘由: 现在在做的主要工作是通过jenkins+postman实现api的自动化测试,想要达到的效果是,api自动化测试定时跑脚本的同时,github有新的代码提交,jenkins会自动检测部署新 ...

  4. linux 搭建jenkins+创建maven工程JOB

    1.linux 安装jenkins 网上搜到这样安装 sudo wget -O /etc/yum.repos.d/jenkins.repo http://pkg.jenkins-ci.org/redh ...

  5. linux 搭建jenkins

    一.什么是持续集成? (1)Continuous integration(CI) 持续集成是一种软件开发实践,即团队开发成员经常集成他们的工作,通常每个成员至少集成一次,也就意味着每天可能会发生多次集 ...

  6. Linux搭建Jenkins

    1.添加存储库 yum的repo中默认没有Jenkins,需要先将Jenkins存储库添加到yum repos,执行下面的命令: 使用wget -O下载并以不同的文件名保存 [root@besttes ...

  7. linux 搭建 jenkins 前端自动构建时,老是提示 sh: vue-cli-service: command not found

    如题. 在 shell 里面执行  env 发现一个   NODE_ENV=production  的环境变量,是这个东西的原因. 通过  unset NODE_ENV  命令去掉这个环境变量就可以了 ...

  8. 持续集成基础-Jenkins(二)-搭建Jenkins环境和配置第一个Job

    安装方式一(直接启动): 1.下载最新的版本(一个 WAR 文件).Jenkins官方网址: http://Jenkins-ci.org/ 2.运行 java -jar jenkins.war(需要运 ...

  9. jenkins - docker搭建jenkins

    jenkins镜像拉取 docker pull jenkins/jenkins 为jenkins镜像分配容器 docker run -d --name jenkins \ -p 8080:8080 \ ...

随机推荐

  1. csu 1312 榜单(模拟题)

    http://acm.csu.edu.cn/OnlineJudge/problem.php?id=1312 1312: 榜单 Time Limit: 1 Sec  Memory Limit: 128 ...

  2. c++ 链接

    header.h #ifndef HEADER_H #define HEADER_H unsigned long getFac(unsigned short num); ; #endif // HEA ...

  3. [转载]JS对URL的编码

    虽然escape().encodeURI().encodeURIComponent()三种方法都能对一些影响URL完整性的特殊字符进行过滤.但后两者是将字符串转换为UTF-8的方式来传输,解决了页面编 ...

  4. OpenSSL重大漏洞-Heartbleed之漏洞利用脚本POC讲解

    OpenSSL Security Advisory [07 Apr 2014] ======================================== TLS heartbeat read ...

  5. uva 11461

    简单 打个表 case数不超过200 数据比较水  木有超时的风险~~ /*************************************************************** ...

  6. python中unicode、utf8、gbk等编码问题

    转自:http://luchanghong.com/python/2012/07/06/python-encoding-with-unicode-and-gbk-and-utf8.html 概要:编码 ...

  7. c++实现文本中英文单词和汉字字符的统计

    源代码下载:http://download.csdn.net/detail/nuptboyzhb/4987141 1.统计文本中汉字的频数,为后续的文本分类做基础.对于汉字的统计,需要判断读取的是否为 ...

  8. Topo图

    http://blog.csdn.net/youfangyuan/article/details/8367398 http://joshuaxiao.iteye.com/blog/2224120 ht ...

  9. HDU1548——A strange lift(最短路径:dijkstra算法)

    A strange lift DescriptionThere is a strange lift.The lift can stop can at every floor as you want, ...

  10. Extension Method[下篇]

    四.Extension Method的本质 通过上面一节的介绍,我们知道了在C#中如何去定义一个Extension Method:它是定义在一个Static class中的.第一个Parameter标 ...