我正在使用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('\n').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')
打印“空”。
知道我该怎么做吗?
该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
,接下来的问题是,利用String.execute()
从GDK将无法在工作流程一般工作无论是。这是因为流脚本是在Jenkins主进程内部运行的,而不是在从属进程上运行的。您必须使用该sh
步骤(或bat
在Windows从属服务器上)运行外部命令。至于从他们那里获得输出,JENKINS-26133描述了当前的习惯用法。
String.find
来自JDK的代码目前无法使用:JENKINS-26481。请改用Java Platform方法,或者使用任何不需使用闭包的方法。
出于类似于“为什么String.execute()
不合适”的原因,System.getenv
将无法获得为工作流程构建定义的“环境变量”:这只会加载在Jenkins主流程上设置的环境变量,并在Jenkins启动时进行固定。您正在考虑的变量仅在分支进程(sh
/
bat
)上设置;或者您可以使用env.VARIABLE
语法从Groovy访问它们。
您真正想开始的是直接访问而SVN_REVISION
无需运行svn info
自己。跟踪为JENKINS-26100。
问题内容: 我正在尝试制作一个Jenkins插件。您如何从插件获取工作信息?我知道 但是,我不知道如何调用此方法。 问题答案: 我编写了以下常规脚本,以从工作中获取所有内部版本号。 该工作詹金斯API可以给你额外的手柄,以获取有关作业的信息
Jenkins有一个$CAUSE变量可用于freestyle构建作业。 我如何在工作流程中访问这个或类似的东西? 我的团队在现有临时构建的电子邮件输出中使用它。我们希望在基于工作流的新作业中继续这样做。
问题内容: 在安装了“版本号插件”的Jenkinsfile中尝试此步骤: 并得到此错误: 在Jenkinsfile中使用此插件的正确方法是什么? 问题答案: 您需要使用它作为步骤。 看一看https://your_jenkins_url.com/pipeline- syntax/ 并检查已剪切生成器中VersionNumber步骤的所有选项。
在Vaadin 8中,我能够检索版本信息 在Vaadin Flow中,我找不到获得当前版本的方法,至少不是我期望的版本。我找到了这个 但是返回值是,而不是预期的。我猜是服务器版本还是别的什么。。 如何在vaadin流中正确获取使用过的vaadin框架版本?
问题内容: 我创建了一个管道作业,并希望获得svn版本号,以在调用Shell脚本时启用进一步的下游处理。我正在使用类似于以下内容的管道脚本: 是否有有关结帐功能的文档?是否可以保留svn修订号?我可以看到修订已输出到日志。 问题答案: 我遇到了同样的问题,但是您可以使用调用SCM checkout 返回的映射来解决。它包含SVN_REVISION的值。
问题内容: 我想使用 版本号插件 来格式化BUILD_NUMBER变量。 我在下面的方式进行配置的: 图片 环境变量名称:FORMATTED_BUILD_NUMBER版本号格式字符串:$ {BUILD_NUMBER,XXX} 但是,当我使用FORMATTED_BUILD_NUMBER变量($ {FORMATTED_BUILD_NUMBER})时,它将返回未格式化的内部版本号。 所以我想看到类似的东