Jenkins中的动态属性文件,用于注入Env变量

时间:2018-01-22 10:14:41

标签: jenkins

所以这是我的整个用例: 我有一个参数化的构建作业,它接受文件参数。构建之后,我需要发送一个包含该文件和文件大小的邮件。为此,我尝试使用EnvInject插件将文件的名称和大小添加为Env变量。 但是EnvInject正处于构建环境步骤中。 file参数仅在Build步骤中存储在构建的Workspace中,而不是在Build环境中。因此,会出现“找不到文件”这样的错误。

由于这个原因,我试图在本地系统的某处定义一个属性文件。我在"属性文件路径"中提到了这个属性文件。注入环境变量。在构建步骤中,我在文件中添加FOO = BAR和其他值,以便我可以将这些值用作我的env变量,就像我在Post Build Actions中配置我的电子邮件模板一样。

这个过程可以轻松完成吗?我最初在JENKINS_HOME中创建属性文件。我只是知道我不允许这样做,因为在主代理架构中,JENKINS_HOME会有所不同,构建将失败。

PS-1。每次构建后都会删除工作区 2.可以使用的其他插件吗?如果可能的话,请建议不要安装一些新的插件,因为我不是Jenkins管理员

1 个答案:

答案 0 :(得分:0)

解决此问题的一种方法是通过创建3个不同的作业,如下所示-

职位1 ->应调用以下2个职位(职位2和职位3) 工作2: 构建->在其他项目上触发/调用构建->作业2(阻塞,直到触发的项目完成其构建) 从“添加参数”中选择“在同一节点上构建”。 工作3: 构建->在其他项目上触发/调用构建->作业2(阻塞,直到触发的项目完成其构建) 从添加参数中选择“在同一节点上构建”。

工作2 (如下创建此工作): 执行API->使用“ GET_FILE”选项,您可以将所需的详细信息下载到作业的当前工作目录中。 执行shell-> 现在,在“ Execute Shell”中,使用wget命令下载“ consoleText”。 使用unix命令处理“ consoleText”,准备一个键值对并将其存储在/ tmp文件夹下。即“ /tmp/env.prop”

工作3 (如下创建此工作): 绑定: 选择“将环境变量注入到构建过程中”,然后在“属性文件路径”下输入“ /tmp/env.prop” 现在,您可以在当前作业中使用在Job2中创建的变量,而不会出现任何问题。

请注意,在作业1中选择“在同一节点上构建”很重要,因为这将保留数据,并允许其他作业访问此信息。

让我知道是否不清楚。