热门标签 | 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_孟】!



推荐阅读
  • 1jdk去网站下载,然后拷贝到linux上;或直接wgethttp:download.oracle.comotn-pubjavajdk8u181-b1 ... [详细]
  • 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的方法。 ... [详细]
  • 本文总结了使用不同方式生成 Dataframe 的方法,包括通过CSV文件、Excel文件、python dictionary、List of tuples和List of dictionary。同时介绍了一些注意事项,如使用绝对路径引入文件和安装xlrd包来读取Excel文件。 ... [详细]
  • 本文讨论了如何使用GStreamer来删除H264格式视频文件中的中间部分,而不需要进行重编码。作者提出了使用gst_element_seek(...)函数来实现这个目标的思路,并提到遇到了一个解决不了的BUG。文章还列举了8个解决方案,希望能够得到更好的思路。 ... [详细]
  • python中安装并使用redis相关的知识
    本文介绍了在python中安装并使用redis的相关知识,包括redis的数据缓存系统和支持的数据类型,以及在pycharm中安装redis模块和常用的字符串操作。 ... [详细]
  • Python已成为全球最受欢迎的编程语言之一,然而Python程序的安全运行存在一定的风险。本文介绍了Python程序安全运行需要满足的三个条件,即系统路径上的每个条目都处于安全的位置、"主脚本"所在的目录始终位于系统路径中、若python命令使用-c和-m选项,调用程序的目录也必须是安全的。同时,文章还提出了一些预防措施,如避免将下载文件夹作为当前工作目录、使用pip所在路径而不是直接使用python命令等。对于初学Python的读者来说,这些内容将有所帮助。 ... [详细]
  • 通过Anaconda安装tensorflow,并安装运行spyder编译器的完整教程
    本文提供了一个完整的教程,介绍了如何通过Anaconda安装tensorflow,并安装运行spyder编译器。文章详细介绍了安装Anaconda、创建tensorflow环境、安装GPU版本tensorflow、安装和运行Spyder编译器以及安装OpenCV等步骤。该教程适用于Windows 8操作系统,并提供了相关的网址供参考。通过本教程,读者可以轻松地安装和配置tensorflow环境,以及运行spyder编译器进行开发。 ... [详细]
  • 本文介绍了协程的概念和意义,以及使用greenlet、yield、asyncio、async/await等技术实现协程编程的方法。同时还介绍了事件循环的作用和使用方法,以及如何使用await关键字和Task对象来实现异步编程。最后还提供了一些快速上手的示例代码。 ... [详细]
  • Window10+anaconda+python3.5.4+ tensorflow1.5+ keras(GPU版本)安装教程 ... [详细]
  • Python中的PyInputPlus模块原文:https ... [详细]
  • 在本教程中,我们将看到如何使用FLASK制作第一个用于机器学习模型的RESTAPI。我们将从创建机器学习模型开始。然后,我们将看到使用Flask创建AP ... [详细]
  • Django + Ansible 主机管理(有源码)
    本文给大家介绍如何利用DjangoAnsible进行Web项目管理。Django介绍一个可以使Web开发工作愉快并且高效的Web开发框架,能够以最小的代价构建和维护高 ... [详细]
  • Maven入门、什么是Maven、如何使用Maven、Maven的项目结构、简单的Mavenjava项目、Maven常用命令、Maven项目之间的引用、Maven依赖的传递、可选、排除day01
    目录第一节Maven入门1.1什么是Maven1.2如何使用Maven第一步:下载Maven第二步:配置Maven的环境变量第三步:了解什 ... [详细]
  • SVN安装配置和使用
    简介:SVN是Subversion的简称,是一个开放源代码的版本控制系统,相较于RCS、CVS,它采用了分支管理系统,它的设计目标就是取代CVS。互联网上很多版本控制服务已从CVS ... [详细]
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社区 版权所有