相关疑难解决方法(0)

将System Env变量传递给Jenkins Slave

这开始让我发疯了......但似乎我不幸自己想出来:/

我需要设置一个机构共享两个从机之间的字符串值,例如,名为从属和从.

目前我发现的最接近的是这个问题: Jenkins Slave Environment Variable Refresh

但它仍然旨在启用buildcripts中的访问,而不是Slaves环境变量本身.(相关SO问题:如何在Jenkins中使用Windows批处理命令使用环境变量?)

目前我有这个设置:

1)在A上工作A被触发.

它执行这个Windows批处理代码(显然,实际路径被替换为'<>'):

cmd /c start java -jar <path_of_slave>\slave.jar -jnlpUrl  <url_of_slave>/slave-agent.jnlp

setenv.exe /m HOR_BUILD_ID -delete
setenv.exe /m HOR_BUILD_ID %BUILD_NUMBER%
setenv.exe /m HOR_UPSTREAM_ID -delete
setenv.exe /m HOR_UPSTREAM_ID %JOB_NAME%
Run Code Online (Sandbox Code Playgroud)

相当不言自明和直截了当的imho.

2)A上的作业具有上游作业B,即成功构建时触发.因此,在从属B中,B构建执行此批处理代码(显然,实际路径被替换为'<>'):

SetLocal EnableDelayedExpansion

@echo off
@echo --- Refreshing Environemnt variables... 
@echo on
set prgfil=%ProgramFiles(x86)%
call "%WORKSPACE%\..\..\..\tools\misc\resetvars.bat"
@echo --- Reading environment variables... 
copy /y "<path_containing_%HOR_UPSTREAM_ID%_variable" "<path_containing_%HOR_BUILD_ID%_variable" …
Run Code Online (Sandbox Code Playgroud)

continuous-integration environment-variables slave jenkins

7
推荐指数
1
解决办法
8709
查看次数

Jenkins - 将更新的修订版传递给下游工作

我们已将构建系统从CruiseControl迁移到jenkins以获得多平台产品.这是一个单一的工作:
1.检查更改
2.更新属性文件中的产品构建号
3.将文件提交到subversion
4.将svn修订号传递给其他平台进行本地检出(性能原因)
5.构建(C++,Java )
6.测试

在Jenkins中,我们将构建和测试分成两个作业,构建触发测试.所有平台构建都必须成功运行测试.无论平台B上的构建失败如何,我都希望在平台A上运行测试,但这是一个不同的问题.

我现在要解决的问题是构建阶段.当Jenkins启动时,它会在作业开始时知道存储库的SVN_REVISION.我们在作业期间在编译之前增加构建号,这是我们需要传递给下游作业的svn修订版.我们需要确保在所有平台上检查相同的修订版本,并且测试作业也检查相同的修订版本.编译需要2-3个小时并且测试大约需要7个小时,因此在构建期间发生的一些新提交是正常的,这些提交将包含在测试作业中.我们还在构建阶段提交了由于不同的结账速度而被包含在一个平台中而不是其他平台的提交.

我们已经尝试过参数化触发插件,它可以传递SVN_REVISION - 时间作业开始时的修订,但是没有通过带有内部版本号的修改文件的修订版.我们在其他情况下使用参数化触发器,它可以满足我们的需求.

我正在考虑将svn版本号添加到属性文件中.我可以在其他作业中从属性文件中读取修订版,假设文件没有被更改,这可能有风险.svn使用':'分隔属性,IIRC,其他属性使用'='表示key = value,因为我们还读取了在shell脚本中使用的属性.还有其他依赖项目,所以当我回到办公室并设置一个沙箱(半天的工作)时,我会尝试这个.

有人有任何建议或意见吗?

svn jenkins

5
推荐指数
2
解决办法
7023
查看次数

如何在 Jenkins Shell 命令中设置变量

我有一份 Jenkins 构建工作。它有 shell 命令部分,我在其中读取了我正在构建的当前应用程序的“版本”。现在,我想在同一 shell 命令部分中设置 Jenkins 自定义变量“VERSION”和“version”。我需要将此值作为参数传递给成功构建此作业后触发的其他作业。

在此输入图像描述

现在,我会将 Jenkins 变量 VERSION 传递给其他作业。

在此输入图像描述

请建议我该怎么做。

jenkins

5
推荐指数
1
解决办法
2万
查看次数