热门标签 | HotTags
当前位置:  开发笔记 > 后端 > 正文

如何在Jenkinspipeline中获取当前SVN版本号?

我正在使用Jenkins1.596,Workflow1.3和Svn插件2.5。我正在尝试在工作流程脚本中获取svn修订版号。我的工作流脚本部分为:node{checkoutscm:

我正在使用Jenkins 1.596,Workflow 1.3和Svn插件2.5。 我正在尝试在工作流程脚本中获取svn修订版号。

我的工作流脚本部分为:

node {
checkout scm: [
$class:"SubversionSCM", locations: [[ remote:'https://secure3.svnrepository.com/somerepo/trunk', credentialsId: cid]] ]
stage 'build'
dir('trunk') {
def revision
= 'svn info'.execute().in.text.split('\
'
).find { it.startsWith('Revision') }.split(':')[1].trim()
println revision
def svnHome
= tool 'Svn'
sh
"$svnHome/bin/svn info"
def mvnHome
= tool 'Maven'
sh
"export JAVA_HOME=/var/jenkins_home/java; $mvnHome/bin/mvn --version"
sh
"export JAVA_HOME=/var/jenkins_home/java; $mvnHome/bin/mvn clean deploy"
}

在这里,您会看到两次尝试:

第一个尝试打印" java.io.IOException:无法运行程序" svn":error = 2,没有这样的文件或目录",

第二个提示"没有找到名为Svn的工具"(我也尝试了" 颠覆")。 尝试def revision = System.getenv('SVN_REVISION')打印"空"。

知道我该怎么做吗?



这是一个已知的错误:https://issues.jenkins-ci.org/browse/JENKINS-32744。

我遇到了同样的问题(未加载环境变量)。
您可以从路径中名为" revision.txt"的文件获取修订号:" C:\ Program Files(x86)\ Jenkins \ jobs \ $ {pipelineTaskName} \ builds \ $ {buildNumber}"。



由于我在Internet上找到了一个不错的脚本(我不记得在哪里),并且我们使用了Groovy脚本,因此我想分享这个对我非常有用的解决方案:

def url ="ENTER HERE YOUR SVN URL"
def SVN_REVISION
="svn info --show-item last-changed-revision $url".execute().text
echo "$SVN_REVISION" /*should work now*/

如果是已经在版本控制的目录里了,如:D:\_job\TestJava\trunk\,可以直接使用:

很抱歉,您无法使用此线程,但我希望这对某些人有用。

使用这些变量时,请不要忘记使用双引号。这对我来说很难找到。 :-/



有一种方法可以使用每个SVN模块的变量来完成。请参阅下面的答案
https://stackoverflow.com/a/24956967/5842403
基本上,您使用$ SVN_REVISION_x变量,其中" x"是svn URL模块的计数器。您可以回显该变量并将其作为工件放入文件中。



No such file or directory错误表示错误的含义:Subversion未安装在您的构建从站上。

您似乎已经明白了,并尝试使用tool安装Subversion来解决此问题。但是Jenkins Subversion插件没有Subversion的工具定义。它始终使用SVNKit(一个进程内(Java)库)。所以这行不通。

(通过Mercurial插件始终运行hg可执行文件的方式,Git插件可以使用git可执行文件或嵌入式JGit库。这两种方法都可以用来定义工具安装,但不能定义特殊的(自动)安装程序,因此对于这种情况,它们不会有太大帮助。您也可以运行sh 'sudo apt-get install subversion'。)

假设您安装Subversion以便svn位于您的$PATH中,那么下一个问题是,从GDK中使用String.execute()通常也不能在工作流中使用。这是因为流脚本是在Jenkins主进程内部运行的,而不是在从属进程上运行的。您必须使用sh步骤(或Windows从属服务器上的bat)运行外部命令。至于从他们那里获得输出,JENKINS-26133描述了当前的习惯用法。

JDK中的String.find当前将不起作用:JENKINS-26481。请改用Java Platform方法,或者使用任何不需使用闭包的方法。

出于与String.execute()不适当的原因类似的原因,System.getenv将无法获得为工作流构建定义的"环境变量":这只会加载在Jenkins主进程上设置的环境变量,固定于Jenkins启动时。您正在考虑的变量仅在分叉进程(sh / bat)上设置;或者您可以使用env.VARIABLE语法从Groovy访问它们。

您真正想开始的是直接访问SVN_REVISION,而不必自己运行svn info。跟踪为JENKINS-26100。

 

 

 

出处:https://www.codenong.com/29191399/

您的资助是我最大的动力!
金额随意,欢迎来赏!

款后有任何问题请给我留言。

如果,您认为阅读这篇博客让您有些收获,不妨点击一下右下角的【推荐】按钮。

如果,您希望更容易地发现我的新博客,不妨点击一下绿色通道的【关注我】。(●'◡'●)

如果对你有所帮助,赞助一杯咖啡!打



           

付款后有任何问题请给我留言!!!

因为,我的写作热情也离不开您的肯定与支持,感谢您的阅读,我是【Jack_孟】!



推荐阅读
  • 本文介绍了如何清除Eclipse中SVN用户的设置。首先需要查看使用的SVN接口,然后根据接口类型找到相应的目录并删除相关文件。最后使用SVN更新或提交来应用更改。 ... [详细]
  • intellij idea的安装与使用(保姆级教程)
    intellijidea的安装与使用(保姆级教程)IntelliJ在业界被公认为最好的java开发工具,尤其在智能代码助手、代码自动提示、重构、JavaEE支持、各类版本工具(gi ... [详细]
  • svnWebUI:一款现代化的svn服务端管理软件
    svnWebUI是一款图形化管理服务端Subversion的配置工具,适用于非程序员使用。它解决了svn用户和权限配置繁琐且不便的问题,提供了现代化的web界面,让svn服务端管理变得轻松。演示地址:http://svn.nginxwebui.cn:6060。 ... [详细]
  • 开源Keras Faster RCNN模型介绍及代码结构解析
    本文介绍了开源Keras Faster RCNN模型的环境需求和代码结构,包括FasterRCNN源码解析、RPN与classifier定义、data_generators.py文件的功能以及损失计算。同时提供了该模型的开源地址和安装所需的库。 ... [详细]
  • 腾讯安全平台部招聘安全工程师和数据分析工程师
    腾讯安全平台部正在招聘安全工程师和数据分析工程师。安全工程师负责安全问题和安全事件的跟踪和分析,提供安全测试技术支持;数据分析工程师负责安全产品相关系统数据统计和分析挖掘,通过用户行为数据建模为业务决策提供参考。招聘要求包括熟悉渗透测试和常见安全工具原理,精通Web漏洞,熟练使用多门编程语言等。有相关工作经验和在安全站点发表作品的候选人优先考虑。 ... [详细]
  • Python使用Pillow包生成验证码图片的方法
    本文介绍了使用Python中的Pillow包生成验证码图片的方法。通过随机生成数字和符号,并添加干扰象素,生成一幅验证码图片。需要配置好Python环境,并安装Pillow库。代码实现包括导入Pillow包和随机模块,定义随机生成字母、数字和字体颜色的函数。 ... [详细]
  • 本文介绍了在Windows系统下安装Python、setuptools、pip和virtualenv的步骤,以及安装过程中需要注意的事项。详细介绍了Python2.7.4和Python3.3.2的安装路径,以及如何使用easy_install安装setuptools。同时提醒用户在安装完setuptools后,需要继续安装pip,并注意不要将Python的目录添加到系统的环境变量中。最后,还介绍了通过下载ez_setup.py来安装setuptools的方法。 ... [详细]
  • Java源代码安全审计(二):使用Fortify-sca工具进行maven项目安全审计
    本文介绍了使用Fortify-sca工具对maven项目进行安全审计的过程。作者通过对Fortify的研究和实践,记录了解决问题的学习过程。文章详细介绍了maven项目的处理流程,包括clean、build、Analyze和Report。在安装mvn后,作者遇到了一些错误,并通过Google和Stack Overflow等资源找到了解决方法。作者分享了将一段代码添加到pom.xml中的经验,并成功进行了mvn install。 ... [详细]
  • 本文总结了使用不同方式生成 Dataframe 的方法,包括通过CSV文件、Excel文件、python dictionary、List of tuples和List of dictionary。同时介绍了一些注意事项,如使用绝对路径引入文件和安装xlrd包来读取Excel文件。 ... [详细]
  • python中安装并使用redis相关的知识
    本文介绍了在python中安装并使用redis的相关知识,包括redis的数据缓存系统和支持的数据类型,以及在pycharm中安装redis模块和常用的字符串操作。 ... [详细]
  • Python已成为全球最受欢迎的编程语言之一,然而Python程序的安全运行存在一定的风险。本文介绍了Python程序安全运行需要满足的三个条件,即系统路径上的每个条目都处于安全的位置、"主脚本"所在的目录始终位于系统路径中、若python命令使用-c和-m选项,调用程序的目录也必须是安全的。同时,文章还提出了一些预防措施,如避免将下载文件夹作为当前工作目录、使用pip所在路径而不是直接使用python命令等。对于初学Python的读者来说,这些内容将有所帮助。 ... [详细]
  • 云原生应用最佳开发实践之十二原则(12factor)
    目录简介一、基准代码二、依赖三、配置四、后端配置五、构建、发布、运行六、进程七、端口绑定八、并发九、易处理十、开发与线上环境等价十一、日志十二、进程管理当 ... [详细]
  • 本文介绍了协程的概念和意义,以及使用greenlet、yield、asyncio、async/await等技术实现协程编程的方法。同时还介绍了事件循环的作用和使用方法,以及如何使用await关键字和Task对象来实现异步编程。最后还提供了一些快速上手的示例代码。 ... [详细]
  • Python中的PyInputPlus模块原文:https ... [详细]
  • 20209测试通过:eclipse安装svn插件
    网址不能用了,新的办法参考:https:quantum6.blog.csdn.netarticledetails117250800下载了最新的ecli ... [详细]
author-avatar
郭辛奇木书可卿
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有