热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

jenkins构建状态及参数传递

jenkins构建状态及参数传递一、获取构建状态之前做的jenkins每次发布更新项目版本号,是不管发布成功与否,版本号都会递增1,现在加多了判断,构建成功才递增。于是,需

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。  



 

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

任务一配置:

 

 

  

 

 



推荐阅读
  • 在 CentOS 7 上部署和配置 RabbitMQ 消息队列系统时,首先需要安装 Erlang,因为 RabbitMQ 是基于 Erlang 语言开发的。具体步骤包括:安装必要的依赖项,下载 Erlang 源码包(可能需要一些时间,请耐心等待),解压源码包,解决可能出现的错误,验证安装是否成功,并将 Erlang 添加到环境变量中。接下来,下载 RabbitMQ 的 tar.xz 压缩包,并进行解压和安装。确保每一步都按顺序执行,以保证系统的稳定性和可靠性。 ... [详细]
  • 基于Net Core 3.0与Web API的前后端分离开发:Vue.js在前端的应用
    本文介绍了如何使用Net Core 3.0和Web API进行前后端分离开发,并重点探讨了Vue.js在前端的应用。后端采用MySQL数据库和EF Core框架进行数据操作,开发环境为Windows 10和Visual Studio 2019,MySQL服务器版本为8.0.16。文章详细描述了API项目的创建过程、启动步骤以及必要的插件安装,为开发者提供了一套完整的开发指南。 ... [详细]
  • 网站访问全流程解析
    本文详细介绍了从用户在浏览器中输入一个域名(如www.yy.com)到页面完全展示的整个过程,包括DNS解析、TCP连接、请求响应等多个步骤。 ... [详细]
  • 包含phppdoerrorcode的词条 ... [详细]
  • Cookie学习小结
    Cookie学习小结 ... [详细]
  • HTTP(HyperTextTransferProtocol)是超文本传输协议的缩写,它用于传送www方式的数据。HTTP协议采用了请求响应模型。客服端向服务器发送一 ... [详细]
  • LDAP服务器配置与管理
    本文介绍如何通过安装和配置SSSD服务来统一管理用户账户信息,并实现其他系统的登录调用。通过图形化交互界面配置LDAP服务器,确保用户账户信息的集中管理和安全访问。 ... [详细]
  • 本文详细介绍了如何在 Linux 系统上安装 JDK 1.8、MySQL 和 Redis,并提供了相应的环境配置和验证步骤。 ... [详细]
  • Spring – Bean Life Cycle
    Spring – Bean Life Cycle ... [详细]
  • Spring Boot 中配置全局文件上传路径并实现文件上传功能
    本文介绍如何在 Spring Boot 项目中配置全局文件上传路径,并通过读取配置项实现文件上传功能。通过这种方式,可以更好地管理和维护文件路径。 ... [详细]
  • 本文详细介绍了在 Ubuntu 系统上搭建 Hadoop 集群时遇到的 SSH 密钥认证问题及其解决方案。通过本文,读者可以了解如何在多台虚拟机之间实现无密码 SSH 登录,从而顺利启动 Hadoop 集群。 ... [详细]
  • MicrosoftDeploymentToolkit2010部署培训实验手册V1.0目录实验环境说明3实验环境虚拟机使用信息3注意:4实验手册正文说 ... [详细]
  • 解决Bootstrap DataTable Ajax请求重复问题
    在最近的一个项目中,我们使用了JQuery DataTable进行数据展示,虽然使用起来非常方便,但在测试过程中发现了一个问题:当查询条件改变时,有时查询结果的数据不正确。通过FireBug调试发现,点击搜索按钮时,会发送两次Ajax请求,一次是原条件的请求,一次是新条件的请求。 ... [详细]
  • 利用Jenkins与SonarQube集成实现高效代码质量检测与优化
    本文探讨了通过在 Jenkins 多分支流水线中集成 SonarQube,实现高效且自动化的代码质量检测与优化方法。该方案不仅提高了开发团队的代码审查效率,还确保了软件项目的持续高质量交付。 ... [详细]
  • 我有一个从C项目编译的.o文件,该文件引用了名为init_static_pool ... [详细]
author-avatar
mobiledu2502926703
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有