GVKun编程网logo

配置Hudson / Jenkins进行登台和生产(jenkins配置用户权限)

19

对于想了解配置Hudson/Jenkins进行登台和生产的读者,本文将提供新的信息,我们将详细介绍jenkins配置用户权限,并且为您提供关于git+jenkins/hudson+python构建环境

对于想了解配置Hudson / Jenkins进行登台和生产的读者,本文将提供新的信息,我们将详细介绍jenkins配置用户权限,并且为您提供关于git+jenkins/hudson+python构建环境、Hudson / Jenkins Git建立了所有分支、Hudson / Jenkins PMD配置、Hudson / Jenkins:禁用失败的构建的有价值信息。

本文目录一览:

配置Hudson / Jenkins进行登台和生产(jenkins配置用户权限)

配置Hudson / Jenkins进行登台和生产(jenkins配置用户权限)

如何将Hudson / Jenkins配置到生产环境并使用相同的配置进行部署?

我在Jenkins中配置了一个构建和部署工作流来进行生产推送。现在,我需要使用相同的配置来进行暂存推送,希望这两个文件夹和数据库名称将更改以反映阶段。即从/var/prod/htmlto
/var/stage/html和db from companyname_tablecompanyname_table_stage

我不想复制配置,因为可能必须在一个地方更改配置,然后我必须对每个副本进行重复更改。理想情况下,我想通过传递一些参数来尝试

答案1

小编典典

您可以配置要参数化的项目,并添加一个参数,该参数指定要部署到的位置(即阶段或生产)。如何执行此操作取决于所使用的构建系统。例如,如果您使用的是蚂蚁,该参数将被暴露成一个环境变量,所以你可以只是一个变量说法究竟其分期与生产,然后在ant脚本中,您需要设置属性/var/prod/htmlcompanyname_table/var/stage/htmlcompanyname_table_stage取决于什么参数是。

如果由于某种原因您有无法根据参数更改属性值的构建逻辑,则需要为不同的值使用单独的参数(例如,一个用于db表的参数和一个用于html位置的参数)

如果您需要用于暂存和部署的单独项目,则可以具有如下项目结构:

Project X:包含所有配置和构建/部署逻辑Project Stage-X:触发参数化的Project X构建,参数设置为暂存值Project
Deploy-X:触发参数化的Project X构建,参数设置到生产价值

这还具有易于添加其他登台服务器或部署配置的优点,仅需更改那些参数值即可。

git+jenkins/hudson+python构建环境

git+jenkins/hudson+python构建环境

环境准备

要能做好持续整合,首先就要先准备好 CI 服务器。这个服务器的环境,要尽可能接近上线系统的环境;这样我们在做完建置和测试并发布程序后,才能确保它在正式上线时不会出问题。

CI 服务器也需要能够执行 Java ,因为接下来提到的 CI 平台软件需要透过 Java 来执行,所以也请大家先在 CI 服务器上安装好 JDK 。

JDK安装
先下载JDK1.6 
我选择安装在/opt目录里
装好之后,添加环境变量:
vi /etc/profile
在 export PATH USER ..... 这句代码之前添加以下代码

#=================
JAVA_HOME=/opt/jdk1.6.0_27
PATH=$JAVA_HOME/bin:$PATH
CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
export JAVA_HOME PATH CLASSPATH
#=============

然后 source /etc/profile

还有我们也需要GIT。

CI 平台

CI 服务器最重要的角色就是 CI 平台了,两个较为有名的 CI 平台: CruiseControl 及 Hudson 。而在多方比较及网络上前辈的推荐之下,我选择了 Hudson 这个建置容易而且设定也容易的 CI 平台。

因为 Oracle 申请了 Hudson 的商标,让 Hudson 开发者决定把名称改为 Jenkins

这里提供两种安装及执行的方式:

一、透过支持 Servlet 的 Web Container 执行:

  1. 安装支持 Servlet 的 Web Container (例如 Apache Tomcat) 。
  1. 下载最新版 jenkins.war 地址:http://mirrors.jenkins-ci.org/war/latest/jenkins.war。
  1. 将 jenkins.war 放在 webapps 目录中并启动服务器。
  1. 在浏览器上开启网址 http://127.0.0.1:8080/jenkins 看到 jenkins 的起始画面时即安装成功。

二、 不使用容器,直接执行
在OPT下建立 jenkins目录,chown将目录拥有者改为当前桌面用户,将jenkins.war 放进去,然后建立一个启动脚本start.sh
vi start.sh: 写入: nohup java -jar jenkins.war --httpPort=8080 &
另其可执行: chmod 755 start.sh
然后就可以启动了: ./start.sh
关闭时:ps aux|grep java 找到当前进程 kill掉
注意:如果当前有任务正在构建中,而你不愿意等到构建结束就想kill,请先进入 系统管理->准备关机,然后再kill

启动jenkins之前请确定启动jenkins的账号能够访问远程git

初始化设置: 1.进入 “系统管理”->“系统设置”
找到 “JDK 安装” -> 新增 ->去掉 自动安装的勾 -> 别名随便(如 jdk1.6) -> java_home填你自己的

加入 Plugin 安装好 Jenkins 后,其实它并不能马上为我们工作,因为我们必须先安装一些必要的 Plugin 才行。

在「 Manage Hudson (管理 Jenkins ) 」的画面上选择「Manage Plugins (管理插件) 」,并点选「 Available (有效的) 」页签 ;接着找到以下 plugin ,勾选后按下最下方的「 Install (安装) 」。

GIT plugin
Violations
Cobertura Plugin
envinject Plugin

安装最后一个插件时,勾选 “当安装成功并且没有运行中的任务时重启Jenkins”来使插件生效

如果连接插件库失败则插件列表就是一篇空白,就只好手工下载插件然后在“高级”里面传上去安装

插件镜像地址: http://mirrors.jenkins-ci.org/plugins/  
我们上面的几个插件:
1.http://mirrors.jenkins-ci.org/plugins/git/latest/git.hpi
2.http://mirrors.jenkins-ci.org/plugins/violations/latest/violations.hpi
3.http://mirrors.jenkins-ci.org/plugins/cobertura/latest/cobertura.hpi
4.http://mirrors.jenkins-ci.org/plugins/envinject/latest/envinject.hpi

装完之后还需要装一些命令行的支持程序,注意,需要装在你的runtime的env里:

pip install coverage  //测试覆盖率检查
pip install unittest-xml-reporting    //xml测试报告
pip install nose   //测试相关
pip install pylint    //代码风格检查
pip install clonedigger //重复代码检测

编写测试用例模板
在setup.py所在目录新建 tests 目录(此处演示项目为paster创建的一个python模块,setup.py所在目录即为项目根路径)
然后参考xclubs.pubsrv项目的tests,把里面的两个py文件复制过来修改(我把代码贴在下面好了。。),把相应的模块名替换为你自己的

# -*- coding: utf-8 -*-
#文件路径tests/run.py
"""
xclubs.pubsrv unit test suite.
Usage:
    python run.py
"""

import sys, os

os.chdir(os.path.dirname(__file__))

_EXIT_FAILED = 1
_MODULE_NAME = ''xclubs.pubsrv'' #xclubs.pubsrv这里要改

try:
    import nose
except ImportError:
    print (''nose is required to run the test suite'')
    sys.exit(_EXIT_FAILED)

try:
    sys.path.insert(0, ''..'')
except ImportError:
    print (''can not find %s to test: %s'' %
           (_MODULE_NAME, sys.exc_info()[1]))
    sys.exit(_EXIT_FAILED)
else:
    print (''%s test suite running (python %s)...'' %
           (_MODULE_NAME, sys.version.split()[0]))

nose.main()
# -*- coding: utf-8 -*-
#文件路径tests/test_smssrv.py
import unittest
#from xclubs.pubsrv import sms #这里要改,引用你需要测试的功能,现在已经注释掉了,因为目前没有任何可加载的包

class SmsTest(unittest.TestCase):
    def setUp(self):  #初始化
        self._phone = 15000000000
        self._msg = ''test msg''

    #测试某一个具体的功能
    def test_send(self):  #测试发送短信的功能,目前没有模块,直接注释掉
        pass
        #there is no sms and send() ,so disable related line
        #self.assertEquals(sms.send(self._phone, self._msg),1)

#  测试另一个函数
#    def test_another_method(self):
#        pass
#

其中run.py用来运行所有测试脚本的,test_smssrv.py是具体测试某一组功能的,以后新建的测试用例均以test_开头

然后把tests目录的更改push到git

新建项目
点击 “新job” ->填写项目名称->选择 “自由风格...”
“源码管理”栏目:选“git”-> Repositories填入地址,如:

git@xcgti.com:xclubs.pubsrv.git

Branches to build填入你的feature分支,如:

origin/xclubs.pubsrv_20120607_sendsms

“构建环境” 栏目: 勾选 “Inject environment variables to the build process” -> Properties Content 里加入:

PATH=/opt/pyenv/xclubs/bin:$PATH
#/opt/pyenv/xclubs/bin即为装了flask等项目依赖包和刚刚装了coverage等插件的env
#如果你没有使用virtualenv那就跳过此步骤

以下就是插件需要做的检测,由shell实现 “构建” 栏目: 增加构建步骤 ->execute shell
第一个:运行测试用例,并生成报告

#!/bin/bash
coverage run tests/run.py --with-xunit
coverage xml
echo "run unit test complete"

再添加一个:检测代码风格
其中xclubs.pubsrv 是某一个具体的包名,改为你自己的

#!/bin/bash
pylint --rcfile scripts/pylintrc -f parseable --max-line-length=120 xclubs.pubsrv > pylint.txt
echo "run pylint complete"

第三个:检测重复代码
xclubs是总的包名,改为你自己的

#!/bin/bash
clonedigger --cpd-output -o clonedigger.xml xclubs
echo "run clonedigger complete"

构建后操作
即构建之后,将检测结果导出给jenkins使用
点击 “add post-build action”->“Publish JUnit tests result report”->填入: **/tests/nosetests.xml ->勾选 “保留长的标准输出/错误”
再点击 “add post-build action” -> “Publish Cobertura Coverage Report” ->

Cobertura xml report patter 填写:**/coverage.xml
Source Encoding选择 “UTF-8”

再点击 “add post-build action” -> “Report Violations” ->

cpd栏填写:**/clonedigger.xml
pylint栏填写:**/pylint.txt
Source encoding选择:UTF-8

点击保存

点击你刚刚建的项目, 左侧点 “立即构建”
左侧的Build History里出现如下的一次构建历史
#1 2012-6-6 19:54:53
若构建结果为蓝色表示全通过,否则就有问题,具体可点进去查看“控制台输出”

Hudson / Jenkins Git建立了所有分支

Hudson / Jenkins Git建立了所有分支

我们有很多开发人员正在创建我要构建的功能分支。每晚,我们运行一个需要在每个分支上运行的代码质量工具。我也不希望使用静态配置,因为分支的数量每几周更改一次。

答案1

小编典典

在Git配置中,有一个字段“分支指定符(默认为空白):”(如果您放置在其中**),它将从所有遥控器构建所有分支。

有了它,您可以使用环境变量$ {GIT_BRANCH}例如使用https://wiki.jenkins-
ci.org/display/JENKINS/Build+Name+Setter+Plugin或其他目的为构建设置标题

Hudson / Jenkins PMD配置

Hudson / Jenkins PMD配置

我是Jenkins的新手,刚刚开始配置它。这是我到目前为止所做的:

  1. 安装并配置了Jenkins以显示主页。添加了PMD插件。
  2. 将设置HUDSON_HOME为特定目录> C:\ Work \ Jenkins
  3. 配置了一个测试版本以运行简单的no-thing ant脚本。运行成功

  4. 编写了一个独立程序,pmdbuild.xml以对C:\ myview中的一组文件运行检查(我正在使用clearcase)。此xml还将输出pmd_results.xml复制到以下位置的工作区目录中:$HUDSON_HOME/[job-name]/workspace

  5. 现在,我pmdbuild.xml在主要构建中添加了。因此,我的构建有2个步骤:运行一个简单的脚本,什么都不做。b。运行p mdbuild.xml生成pmd_results.xml并将其放入$HUDSON_HOME/[job-name]/workspace(HARD-CODED,因为Jenkins PMD插件希望该文件在那里)

  6. 詹金斯(Jenkins)会pmd_results.xml通过插件自动提取并显示警告和所有内容。

现在的问题是:

  • 如果我单击PMD结果中的文件名,则filenotfound它将在查找源文件时出现异常$HUDSON_HOME/[job-name]/workspace

  • 我的Java代码文件位于C:\ myview(一个清晰的快照视图)中

我的问题是,我是否需要所有代码文件都放在其中$HUDSON_HOME/[job-name]/workspace?我不能告诉詹金斯在C:\
myview或任何其他目录中查找PMD输入文件而不是$HUDSON_HOME/[job-name]/workspace??

抱歉,冗长的描述。

Hudson / Jenkins:禁用失败的构建

Hudson / Jenkins:禁用失败的构建

定期构建失败时,首选的禁用方式是什么?快速搜索显示有一个Prerequisite build
step插件,但是该构建失败,因此我需要完全禁用该构建,直到手动干预为止。

谢谢。

答案1

小编典典

好吧,我想我设法找到了解决方案。

  • 重试失败的构建插件无法正常工作,因为它无法覆盖默认的项目计划,因此失败的项目一次又一次地构建。
  • Naginator插件无法工作,因为延迟不可配置。
  • 先决条件构建步骤插件不适合。

解决方案是安装Groovy Postbuild插件,该插件在Jenkins
JVM下运行,并公开展示Jenkins实例。因此可以直接在项目配置中以编程方式禁用当前版本:

if (manager.build.result.isWorseThan(hudson.model.Result.SUCCESS)) {  manager.build.project.disabled = true}

关于配置Hudson / Jenkins进行登台和生产jenkins配置用户权限的问题就给大家分享到这里,感谢你花时间阅读本站内容,更多关于git+jenkins/hudson+python构建环境、Hudson / Jenkins Git建立了所有分支、Hudson / Jenkins PMD配置、Hudson / Jenkins:禁用失败的构建等相关知识的信息别忘了在本站进行查找喔。

本文标签: