• jenkins构建状态及参数传递


    jenkins构建状态及参数传递
    一、获取构建状态
      之前做的jenkins每次发布更新项目版本号,是不管发布成功与否,版本号都会递增1,现在加多了判断,构建成功才递增。
      于是,需要从原来一个任务拆分为两个任务:(1)仅发布;  (2)根据(1)的发布状态结果,进行更新版本号。
      一开始实现的时候,是利用python去调jenkins接口:获取任务(1)构建状态的结果,构建成功,再读取临时文件来记录的版本号,更新项目文件的.env和jenkins控制台显示的版本号(可能说的有点跳)。
      大家直接看效果:
    任务一:纯项目发布
      注意,新增了临时文件admin_version_tmp.txt,用于记录发布信息。下面的几行被我注释了(不管构建成功与否版本号都递增1),现在要改逻辑。
    (后面还有归档成品,然后ssh到远程机器发布,这里没截完全图)

     任务二:更新版本号

      根据任务一的构建状态为成功才执行(if 判断)

     其中获取任务一构建状态的脚本:get_build-stat.py,内容如下

    #!/usr/bin/python3.6
    #coding=UTF-8
    '''
    输入:jenkins服务器的地址,用户名和密码
    输出:某job最近一次构建状态
    '''
    
    import datetime, time
    import jenkinsapi
    import jenkins
    
    from jenkinsapi.jenkins import *
    from jenkinsapi.job import *
    from jenkinsapi.build import Build
    
    def Url_Get_Job_List(url='jenkins地址', username='jenkins登录用户', password='jenkins登录密码'):
        server = jenkins.Jenkins(url, username, password)
        name = "加一的测试任务"
        lastbuildNumber=server.get_job_info(name)['lastBuild']['number']
        
        #print(lastbuildNumber)
        build_state = server.get_build_info(name,lastbuildNumber)['result']
        print(build_state)
    
    Url_Get_Job_List()

     为啥name要用中文,而且首行写的是python3,因为按常理来说,很多jenkins任务名字都是中文的,python2.7的版本不能直接解析中文名

      所以要装python 3版本,且装相关jenkins模块

     pip3 install python-jenkins jenkinsapi

       后来我想想,其实这个get_build-stat.py 是有点多余的,因为任务一配置“构建其他工程”时其实已经设置有条件:构建稳定!等价于构建不成功就不触发这个任务执行。

    二、参数传递

      在上面实现中,我用到一个临时文件:admin_version_tmp.txt来记录当前发布版本号,让任务二根据任务一状态成功去读取,大家有没有想过其实这种做法是不太严谨的。有可能出于某种原因这个文件没有更新(读了上一条旧的记录),或者删掉找不到,以至于任务二无法更新版本号。

      于是就有我第二个需求的研究了:两个任务之间传递参数。任务一的参数(上一个版本号、当前版本号等)能被任务二读取到!

      需要用到参数化触发器插件:Parameterized Trigger Plugin。

      今天也挺折腾的,因为是在内网虚拟机jenkins测试,jenking版本比线上低,线上装参数化触发器插件需要重启jenkins,担心起不来不敢乱动,公司的人今天也需要频繁发布别的任务,所以只能尽可能把线上两个关于版本号更新的任务搬到线下。需要装回动态参数插件:Dynamic Parameter(jenkins控制台显示版本号),期间一直装不上,说有些依赖装不成功,又说要升级jenkins(备份了快照试了好几个版本的war更新包),后来改为用0.1.1的版本就解决了,线上版本则为0.1.2。

      这篇文章给我莫大的帮助:http://www.noobyard.com/article/p-uuboptrs-sa.html

      之前查的文章大部分都说该插件只能传递jenkins内置变量。。。。

    jenkins配置:

    任务一:发布分支和动态参数插件Dynamic Parameter,都不用动,分别还是branch,还有 old_version 和 new_version。  

     现在需要在任务二中获取这三个参数。

    任务一,jenkins配置:

    构建后操作,增加构建后操作步骤,选择“Trigger parameterized build on other projects”

     

     任务二,jenkins配置:

    用于获取上面任务一的四个参数的值,

     (1)General参数化构建过程,重新定义字符参数,跟上面的Predefined parameters保持一致

     (2)构建选择“执行shell”,打印看是否能获取到

     

     效果图:

    试着改掉任务一的发布分支:branch,也没有问题

     

  • 相关阅读:
    设计带构造函数的Dog类 代码参考
    动态生成Person类的对象 代码参考
    Fragment传值
    Fragment的创建
    显示Intent和隐式Intent
    Intent及其七大属性及intent-filter设置
    Activity传值的几种方式
    认识Activity
    GridView的基本使用
    Spinner的基本使用
  • 原文地址:https://www.cnblogs.com/windysai/p/16281724.html
Copyright © 2020-2023  润新知