Jenkins入门教程之--构建软件项目

Jenkins可以用于执行典型的构建服务器工作,例如执行连续/官方/每晚构建,运行测试或执行一些重复的批处理任务。这在Jenkins被称为“自由式软件项目”。

设置项目

转到Jenkins首页,选择“New Job”,然后选择“Build a free-style software project”。此作业类型由以下元素组成:

可选SCM,如源代码所在的CVS或Subversion。
可选触发器来控制Jenkins将何时执行构建。
某种构建脚本,执行构建(ant,maven,shell脚本,批处理文件等),真正的工作发生在哪里
可选步骤从构建中收集信息,例如归档工件和/或记录javadoc和测试结果。
可选步骤以通知其他人/系统具有构建结果,例如发送电子邮件,IM,更新问题跟踪器等。

非源代码控制项目的构建

有时需要构建一个项目只是为了演示目的或访问SVN / CVS存储库不可用。通过选择在“源代码管理”下将项目配置为“无”,您将必须:

1.构建项目至少一次(它会失败),但Jenkins将创建结构jenkins/workspace/PROJECTNAME/
2.将项目文件复制到jenkins/workspace/PROJECTNAME/
3.再次构建并适当配置

Jenkins设置环境变量

当Jenkins作业执行时,它设置一些,您可以在shell脚本,批处理命令,Ant脚本或Maven POM中使用的环境变量。下表包含所有这些环境变量的列表。

环境变量描述
BUILD_NUMBER当前内部版本号,例如“153”
BUILD_ID当前版本号,例如“2005-08-22_23-59-59”(YYYY-MM-DD_hh-mm-ss,自1.597版本起已失效)
BUILD_URL可以找到此版本的结果的网址(例如http:// buildserver / jenkins / job / MyJobName / 666 /)
NODE_NAME当前构建正在其上运行的节点的名称。等于主节点的“主”。
BUILD_TAGjenkins字符串 - $ {JOB_NAME} - $ {BUILD_NUMBER}。方便放入资源文件,jar文件等,以方便识别
JENKINS_URL设置为运行构建的Jenkins主机的URL。例如,此值由Jenkins CLI使用
EXECUTOR_NUMBER标识执行此构建的当前执行程序(在同一机器的执行程序中)的唯一编号。这是在“build executor status”中看到的数字,除了数字从0开始,而不是1。
JAVA_HOME如果作业配置为使用特定的JDK,则此变量将设置为指定JDK的JAVA_HOME。设置此变量时,PATH也会更新为$ JAVA_HOME / bin。
WORKSPACE工作空间的绝对路径。
SVN_REVISION对于基于Subversion的项目,此变量包含模块的版本号。如果指定了多个模块,则不会设置。
CVS_BRANCH对于基于CVS的项目,此变量包含模块的分支。如果CVS配置为检出中继线,则不会设置此环境变量。
GIT_COMMIT对于基于Git的项目,这个变量包含提交检出的Git哈希的建立(像ce9a3c1404e8c91be604088670e93434c4253f03)(所有的GIT_ *变量需要git插件)
GIT_URL对于基于Git的项目,此变量包含Git url(如git@github.com:user / repo.git或[https://github.com/user/repo.git]
GIT_BRANCH对于基于Git的项目,此变量包含检出的构建(通常是origin / master)的Git分支,

推荐的构建插件环境变量

如果您使用的是Promoted Build Plugin,您将可以访问以下环境变量。 这允许您访问有关您的Jenkins构建的信息,因为上述某些环境变量(例如BUILD_TAG现在引用了推荐构建插件的作业。

环境变量替换描述
PROMOTED_URLBUILD_URL促销涉及的原始Jenkins作业的URL。 BUILD_URL现在是指宣传活动的网址
PROMOTED_JOB_NAMEJOB_NAME涉及促销的原始Jenkins作业的名称。 JOB_NAME现在是指宣传活动的工作名称
PROMOTED_NUMBERPROMOTED_NUMBER要升级的作业的构建号。 BUILD_NUMBER现在指的是促销号码
PROMOTED_IDBUILD_ID原始Jenkins作业的构建ID(例如“2005-08-22_23-59-59”(YYYY-MM-DD_hh-mm-ss))。 BUILD_ID现在参考宣传活动的版本ID。

Shell脚本和Windows批处理命令

如果您使用shell脚本来执行构建,那么可以将这些环境变量直接放入shell脚本中,或者将它们作为shell脚本中的参数调用。下面是一个示例如何可以做到:

这里写图片描述

如果您正在执行Windows批处理命令,则应使用%VARIABLE_NAME%模式引用变量。例如:

这里写图片描述

Ant脚本

如果您使用Ant脚本来执行构建,则可以在属性设置中包括环境变量。点击高级。 。 。按钮就在你放置Ant目标的地方。这将显示“属性”框。下面是一个例子如何使用属性框设置Ant属性与Jenkins环境变量:

这里写图片描述

或者,您可以使用Environmental前缀,将所有环境变量作为属性直接放入build.xml文件中。下面是如何设置属性“label”以包括项目名称和构建号的示例:

<property environment="env"/>
<property name="label" value="${env.JOB_NAME}-${env.BUILD_NUMBER}"/>

配置自动构建

Jenkins中的构建可以定期(按照计划,在配置中指定)或者在检测到项目中的源更改时触发,也可以通过请求URL自动触发

http://YOURHOST/jenkins/job/PROJECTNAME/build

这允许您将Jenkins构建钩入各种设置。有关更多信息(特别是在启用安全性的情况下),请参阅远程访问API

由源更改构建

您可以让Jenkins轮询您的版本控制系统以进行更改。您可以指定Jenkins使用与Unix / Linux上的crontab相同的语法轮询版本控制系统的频率。但是,如果您的轮询期短于轮询版本控制系统所需的时间,则每个更改可能会有多个构建。您应该将轮询周期调整为长于轮询版本控制系统所需的时间,或者使用提交后触发器。您可以检查每个构建的轮询日志,以查看轮询系统所需的时间。

或者,您可以使用URL触发器(如上所述),而不是在URL结尾处使用/ polling而不是/build,而不是在固定时间间隔上轮询。这使得Jenkins轮询SCM的更改,而不是立即建立。这可以防止Jenkins运行一个没有相关更改的构建,影响与作业无关的模块或分支。使用/轮询时,作业必须配置为轮询,但计划可以为空。

在CVS中使用提交后触发器

使用一些版本控制系统,如Subversion,轮询非常快。 Subversion可以在几秒钟内轮询您的项目,看看是否有任何更改。在某些版本控制系统(如CVS)中,轮询可能需要相当长的时间。

在这种情况下,你应该使用一个post-commit钩子触发构建。在CVS中,您可以向$ CVSROOT / loginfo文件添加后提交触发器。要编辑此文件,请签出CVSROOT项目,编辑文件,然后提交。不要直接编辑文件。

loginfo文件由两个条目组成。第一个是存储库,第二个是后提交钩子运行。如果将Jenkins项目命名为 - ,则可以使用以下shell脚本触发器:

#! /bin/bash
/usr/bin/sed -n '/^  *Tag:/s/.*: *//p' | while read branch
do
    #
    #  You need to set these
    #
    wgetCmd=/usr/bin/wget           #Location of wget command
    logName=/usr/home/cvs/log.txt   #Logfile name
    projectBase=jenkins             # First part of the Jenkins project name
    hudsonUrl="http://hudson:8080"  #URL to trigger Jenkins
    triggerString="BUILD"           #String to trigger builds

    hudsonJob="$cvsProject-$branch"

    #
    # Possible exceptions to Jenkins Name Rule
    #
    if [ "$branch" == "REL_1_0_2" ]
    then
        hudsonJob="$projectBase-DEV"
    fi

    $wgetCmd -q $hudsonUrl/job/$hudsonJob/build?token=$triggerString
    echo "$wgetCmd -q $hudsonUrl/job/$hudsonJob/build?token=$triggerString" >> $logName
    echo "---------------------------------------------------" >> $logName
done

通过电子邮件构建(sendmail)

如果你有你的系统的root帐户,并且你正在使用sendmail,我发现最容易调整/ etc / aliases并添加以下条目:

jenkins-foo: "|/bin/wget -o /dev/null http://YOURHOST/jenkins/job/PROJECTNAME/build"

然后运行“newaliases”命令让sendmail知道更改。每当有人向“jenkins-foo @ yoursystem”发送电子邮件时,这将触发新的构建。有关配置sendmail的更多详细信息,请参阅此

通过电子邮件建立(qmail)

使用qmail,您可以写如下所示的/var/qmail/alias/.qmail-jenkins:

|/bin/wget -o /dev/null http://YOURHOST/jenkins/job/PROJECTNAME/build"

Maven要求您将参数作为构建目标的一部分。 Maven“目标”字段的Jenkins配置示例:clean install -DBUILD_NUMBER = $ {BUILD_NUMBER}

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值