jenkins 入门教程(下)

上回继续学习jenkins,这次主要来看一些疑难杂症:

一、yum install安装方式

除了直接java -jar jenkins.war方式,还可以用yum安装,这种方式下提供了更多的可配置选项,更适合生产环境控制jenkins的行为。

sudo yum update -y (可选)
sudo wget -O /etc/yum.repos.d/jenkins.repo http://pkg.jenkins-ci.org/redhat/jenkins.repo
sudo rpm --import http://pkg.jenkins-ci.org/redhat/jenkins-ci.org.key
yum install deltarpm (可选)
sudo yum install jenkins

安装完成后,可用 

sudo service jenkins start/stop/restart

不过,我在centos 7环境上测试下来,/etc/rc.d/init.d/jenkins这个脚本写得有点小问题,如果java不在默认目录下,会导致启动失败

sudo vi /etc/rc.d/init.d/jenkins

定位到67行,会发现该脚本会从以下位置找java可执行文件

  candidates="
  /etc/alternatives/java
  /usr/lib/jvm/java-1.6.0/bin/java
  /usr/lib/jvm/jre-1.6.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-1.8.0/bin/java
  /usr/lib/jvm/jre-1.8.0/bin/java
  /usr/bin/java
  "

如果java没安装在这些目录下,启动就会失败,解决办法:把java所在的正确位置加入其中即可,比如:

candidates="
/opt/app/jdk1.8.0_65/bin/java
"

注:这样处理后,还要执行一下sudo systemctl daemon-reload,然后就可以service jenkins start了,如果还出错,尝试 cd /etc/rc.d/init.d,然后sudo ./jenkins start 进一步排查。建议同学们把这个启动脚本仔细阅读一下,可以发现很多有用的信息,比如:

JENKINS_WAR="/usr/lib/jenkins/jenkins.war"
JENKINS_CONFIG=/etc/sysconfig/jenkins
JENKINS_PID_FILE="/var/run/jenkins.pid"
PARAMS="--logfile=/var/log/jenkins/jenkins.log --webroot=/var/cache/jenkins/war --daemon"
--simpleAccessLogger.file=/var/log/jenkins/access_log

上面这些参数定义了配置文件、war包、pid文件、日志的位置,出问题时,我们可以直接到这些位置去查看详情。

比如:端口8080被占用了,需要更改启动端口,直接查看/etc/sysconfig/jenkins这个文件,找到

JENKINS_PORT="8080"

修改一下即可。

/etc/sysconfig/jenkins这个文件也建议通篇阅读,里面有一些很关键的信息,比如:

JENKINS_HOME="/var/lib/jenkins"
JENKINS_USER="jenkins"
JENKINS_AJP_PORT="8009"
JENKINS_DEBUG_LEVEL="5"
JENKINS_ENABLE_ACCESS_LOG="no"

 

二、jenkins的启动身份问题

以 java -jar jenkins.war 这种方式启动时,默认会在当前用户根目录下,创建.jenkins目录,所有与jenkins相关的内容,包括配置文件,用户创建的数据都在该目录下,如果你切换另一个账号登录linux,然后重新启动,会发现之前所有创建的项目包括用户全没了,因为此时jenkins的工作目录切换到新用户的~/.jenkins下了,所以一般情况下,不要随意切换启动身份。

以 yum install安装的jenkins,由于工作目录是在/etc/sysconfig/jenkins里写死的,所以不存在这个问题,但是这种方式下,很多目录都是放在/var打头的位置,权限较少,如果出现无法写文件之类的错误,注意调整jenkins用户或目录的权限。

 

三、安全策略配置错误,导致无法使用jenkins的问题

有时候自己瞎折腾,把匿名用户的管理权禁止了,然后能登录的用户又忘记了勾选管理权限,这时就懵了,不要着急,进入~/.jenkins或/var/lib/jenkins,编辑config.xml 找到

<useSecurity>true</useSecurity>

大致是第7行,然后把下面的二个节点改成:

<authorizationStrategy class="hudson.security.AuthorizationStrategy$Unsecured"/>
<securityRealm class="hudson.security.SecurityRealm$None" />

保存,然后重启jenkins,就ok了。

如果没有什么重要数据的话,也可以更暴力一点,把~/.jenkins或/var/lib/jenkins下把除plugins之外的目录全干掉即可,相当于除插件之外,所有内容全初始化。

 

四、代码提交后,jenkins如何自动构建?

有二种做法,以bitbucket这一类git代码托管的项目为例:

a)Trigger Builds remotely

这种方式适合jenkins系统能公网访问的场景,大致原理是jenkins的每个项目,都有一个对外公开的url,然后在bitbucket的项目里配置一个所谓的webHook勾子,勾子里填写的url就是jenkins的这个url,每次有代码提交到bitbucket时,bitbucket会回调整这个url,通知jenkins触发build

参考上图,在jenkins中填写一个token(最好是一个唯一随机字符串),然后到bitbucket上进入项目的setting

添加一个Webhooks,如下图,URL填写的就是jenkins对外公开的回调url

这种方式是实时的,一旦有代码push到bitbucket上,就会触发jenkins发布。

b) Poll SCM

如果没有公网URL,就只能用下面这种方式了,大概意思是,每隔固定的时间去主动拉取代码,如果有变化,则触发build

图中的*/1 * * * * 表示每分钟拉一次代码

 

五、如何与bitbucket账号集成

jenkins可以与bitbucket上的某个账号认证集成,这样就省去了登录的过程,操作步骤:

a)bitbucket中生成key/screct,参考下图

b)jenkins中修改认证方式

几个关键地方,ClientId即为bitbucket中的Key, Client Screct即为bitbucket中的Screct,然后在下面的User/Group中切记要添加一条记录,用户名为bitbucket里的用户名,然后勾选Administer框(或其它你希望的权限),否则登录后没有任何权限。

这样设置后,不用输入用户名、密码就能直接进入jenkins了,但这种认证方式只能绑定一个bitbucket账号,个人感觉在公司里用处不大,除非整个开发团队共用一个bitbucket账号,然后每个人负责独立的一个项目,这显然不太现实。 

时间: 2024-11-10 05:34:43

jenkins 入门教程(下)的相关文章

jenkins 入门教程(上)

jenkins是一个广泛用于持续构建的可视化web工具,持续构建说得更直白点,就是各种项目的"自动化"编译.打包.分发部署.jenkins可以很好的支持各种语言(比如:java, c#, php等)的项目构建,也完全兼容ant.maven.gradle等多种第三方构建工具,同时跟svn.git能无缝集成,也支持直接与知名源代码托管网站,比如github.bitbucket直接集成. jenkins官网地址为http://jenkins-ci.org/,jenkins本身是用java语言

jenkins 入门教程(中)

接上回继续,本文以我托管在bitbucket上的一个开源项目spring-boot-rest-framework做为演示,讲解如何创建自动化部署. 一.创建item 点击ok继续,item的详情页面很长,我们分成一段段来讲解,最上面这部分,除了名字要填写外,其它全留空即可 然后是源代码管理部分,这是一个git项目,先在Repository URL这里填写上项目的git地址(即:红字1的位置),bitbucket是需要用户名密码才能访问的,所以Credentials这里要选择相应的用户名.密码(即

Odoo进销存(采购、销售、仓库)入门教程 - 下

转帖地址:http://blog.csdn.net/wangnan537/article/details/46475105 2. 进销存实务 2.1 销售产品 李逍遥接到客户苏州美尚邻里超市购买10只乐扣乐扣拉杆箱的请求后,登录系统,点击菜单 [销售->销售->报价单],点击新建,将客户设为"苏州美尚邻里超市",在订单明细选项卡点击添加一个项目,产品设为"乐扣乐扣拉杆箱",数量设为10,此时会提示没足够的库存,这是因为仓库中并没有存货(如果产品的路线已勾

从零开始码一个皮卡丘检测器-CNN目标检测入门教程(上)

本文先为大家介绍目前流行的目标检测算法SSD (Single-Shot MultiBox Object Detection)和实验过程中的数据集.训练.测试过程及结果参见<从零开始码一个皮卡丘检测器-CNN目标检测入门教程(下)> 目标检测通俗的来说是为了找到图像或者视频里的所有目标物体.在下面这张图中,两狗一猫的位置,包括它们所属的类(狗/猫),需要被正确的检测到. 所以和图像分类不同的地方在于,目标检测需要找到尽量多的目标物体,而且要准确的定位物体的位置,一般用矩形框来表示. 在接下来的章

入门教程:JSP标准模板库(下)

js|标准|教程|模板|入门教程 JSTL标签库JSTL通常被认为是一种单标签库.但JSTL实际上有4个标签库.这些标签库被概括为如下: 核心标签库?包含一些Web应用的必要的标签.核心标签库的实例包括循环,表达式赋值和基本输入输出.. 格式化/国际化标签库?包括被用来解析数据的标签库.这种标签会解析数据,比如日期,不同的场所区域等. 数据库标签库?包含被用来访问SQL数据库的标签.这些标签通常仅仅只创建原形(prototype)程序.这个是因为大多数程序不会直接从JSP页面中来处理数据库访问.

Windows系统下Node.js的简单入门教程

  这篇文章主要介绍了Windows系统下Node.js的简单入门教程,Node.js是用于后端编程的JavaScript框架,需要的朋友可以参考下 随着近日Paypal和Netflix宣告 迁移到Node.js, 服务器端Javascript平台已经证明其自身在企业领域的价值. 这对于Node来说是一小步,对于Javascript而言却是一大跨越啊! 来自.NET, Java, PHP, Ruby on Rails和更多技术领域的程序员, 所有游走于服务器端的编码者都会聚集到这个平台上. 作为

Windows系统下Node.js的简单入门教程_node.js

随着近日Paypal和Netflix宣告 迁移到Node.js, 服务器端Javascript平台已经证明其自身在企业领域的价值. 这对于Node来说是一小步,对于Javascript而言却是一大跨越啊! 来自.NET, Java, PHP, Ruby on Rails和更多技术领域的程序员, 所有游走于服务器端的编码者都会聚集到这个平台上. 作为像 Yahoo, Walmart, 和 Oracle 这样的大玩家入局,, Node 正在甩掉其一直就存在的不成熟和不稳定的坏名声. 在这篇文章中,我

DNN快速入门教程3

看过了入门教程1和2相信大家已经基本了解DNN是个什么系统以及它的功能,但是我怎么才能用DNN创建一个网站?学习DNN很多人仍然没有头绪,现在我就以一个初学者的观点来看看我们应该做些什么. 创建普通网站的基本流程 试想下我们创建普通网站的流程,我想基本就是以下5步 规划网站页面结构:根据用户需求规划出网站的页面结构,例如首页,关于,联系,新闻 .... 网页设计: 用photoshop或者firework设计网页 制作网页模板:根据设计制作网页模板或者更原始点把设计转换成一页一页的html网页,

如何在Python的Flask框架中使用模版的入门教程

  如何在Python的Flask框架中使用模版的入门教程?          概述 如果你已经阅读过上一个章节,那么你应该已经完成了充分的准备工作并且创建了一个很简单的具有如下文件结构的Web应用: microblog |-flask文件夹 |-<一些虚拟环境的文件> |-app文件夹 | |-static文件夹 | |-templates文件夹 | |-__init__.py文件 | |-views.py文件 |-tmp文件夹 |-run.py文件 以上给你介绍了在Python的Flask