• jenkins设置远程触发构建


    触发构建有多种方式,今天主要记录,远程触发构建和轮询SCM。

    一 远程触发构建

    Build Triggers中的Trigger builds remotely即远程触发构建,选中后提示信息中会提示一个地址“JENKINS_URL/me/my-views/view/all/job/CITest/build?token=TOKEN_NAME”,其中的JENKINS_URL即jenkins的访问地址,如http://127.0.0.1:8080/jenkins/,末尾token=TOKEN_NAME即设置的用户令牌(请求中需要用到该值)。

    文本框中输入该用户的API_TOKEN_NAME-自定义(token生成方法:在 people中点击当前登陆用户-确定该用户可以执行目标job,点击configure,API Token项,如果没有,则点击API Token生成)

    如何触发构建:如在shell中访问该地址,可以借助网络工具curl或者在浏览器中访问

    如:GET http://127.0.0.1:8080/jenkins/job/CITest/build?token=jenkinstoken

    掌握了此触发机制,可以将该请求集成到其他系统中进行持续集成。

    二 轮询SCM,结合SVN实现提交后自动触发job 

    Build Triggers中的轮询SCM,需要配合svn的hook机制,在hook脚本中访问该url,进行jenkins任务触发。

    结合svn的hook使用步骤:

    1 在jenkins中下载jenkins-cli.jar包(http://jenkins_url:port/jenkins/jnlpJars/jenkins-cli.jar)-- 使用cli工具,需要打开相应设置,jenkins-->系统管理-->Configure Global Security-->勾选启用安全->TCP port for JNLP agents选择随机端口或者指定端口均可以。

    2 将jenkins-cli.jar放到svn服务器中,确保有执行权限

    3 在svn对应仓库的hooks目录下找到对应的脚本,post-commit.tmpl,去掉.tmpl后缀,修改脚本内容,使用jenkins-cli.jar执行命令:

    #!/bin/bash

    source /etc/profile

    java -jar /root/jenkins-cli.jar -s http://47.104.77.127:8080/jenkins/ -auth JENKINS_USERNAME:JENKINS_PASSWORD build JENKINS_JOB

    4 保存后,在svn中提交代码,查看是否触发了jenkins任务

    附:

    svn的hook介绍:

    svn的hook机制:hook即钩子,用户在管理数据仓库的时候,当特定的事件发生时,相应的hook会被调用,hook 其实就相当于特定事件的处理函数。

    当前 Subversion 提供了5种可以安装的 hook :

    事件名

    时机

    与hook交互

    一般用途

    start-commit

    事务创建之前。

    传给 hook 的 参数:

    -         参 数 1 , 代码库路径。

    -         参 数 2 , 试图提交的用户名。

    hook 的返回值:非 0 则 终止。

    判断用户是否有权限进行提交 操作。

    pre-commit

    事务完成,但未提交。

    -         参 数 1 , 代码库路径。

    -         参 数 2 , 事务名。

    hook 的返回值:非 0 则 终止提交,操作回滚。

    对提交内容进行检查。如要求 提交必须填写提交信息。

    post-commit

    事务提交完毕,新的修订版被 创建。

    传给 hook 的 参数:

    -         参 数 1 , 代码库路径。

    -         参 数 2 , 刚创建的修订版号。

    hook 的返回值被忽 略。

    发送邮件通知,或备份代码 库。

    pre-revprop-change

    修改修订版属性(如提交时提 供的信息 message )之前。

    由于修订版属性一旦修改就会 永久的丢失,除非安装这个事件的 hook, subversion 的 客户端不允许远程修改修订版属性。

    传给 hook 的 参数:

    -         参 数 1 , 代码库路径。

    -         参 数 2 , 要修改的修订版号。

    -         参 数 3 , 操作用户名。

    -         要 修改的属性。

    hook 的返回值:非 0 则 终止。

    保存修订版属性的改变记录。

    post-revprop-change

    修订版属性值被修改之后。

    如果没有安装 pre-revprop-change的 hook , 这个事件的 hook 不会被执行。

    传给 hook 的 参数:

    -         参 数 1 , 代码库路径。

    -         参 数 2 , 要修改的修订版号。

    -         参 数 3 , 操作用户名。

    -         要 修改的属性。

    hook 的返回值被忽 略。

    发送邮件通知。

    在当前仓库下面的hook目录,都会存在相应hook文件的模板,要让相应hook文件起作用,就必须复制当前模板并去掉后面的.tmpl,然后编写相应的逻辑。

  • 相关阅读:
    spring源码学习之容器的扩展(二)
    spring源码学习之容器的扩展(一)
    spring源码学习之bean的加载(三)
    spring源码学习之bean的加载(二)
    Linux find命令使用正则表达式
    Linux获取两个路径之间的相对路径
    利用linux sort命令比较版本号
    yum只下载不安装软件包
    tar命令排除某个文件夹
    ssh远程执行命令的符号转义问题
  • 原文地址:https://www.cnblogs.com/test-researcher/p/10627076.html
Copyright © 2020-2023  润新知