使Jenkins元数据可用于项目

时间:2014-10-22 10:49:49

标签: linux jenkins jenkins-plugins

我已经设置了Jenkins服务器+元数据插件(https://wiki.jenkins-ci.org/display/JENKINS/Metadata+plugin)。

我无法理解如何在项目中使用此元数据。我使用SOME_METADATA_KEY页面添加了一些默认值(例如FOO,默认值Jenkins -> MetadataConfiguration为字符串)的键。还会检查Expose to environment

现在,如果我创建一个新项目,在“元数据”部分中,我可以看到SOME_METADATA_KEY预设值

我该如何使用它?我希望它最终在我的构建环境中;只运行带有env的shell脚本不会显示变量。

在项目中,我尝试过:

  • 创建了一个与预定义变量同名的新字符串值,没有设置值(我希望将预定义值作为默​​认值) - >失败,变量根本没有设定。

  • 使用不同的名称(即SOME_FOOBAR_KEY)和值$SOME_METADATA_KEY - >创建新的字符串值FAIL,变量的值为“$ SOME_METADATA_KEY”而不是FOO

我的目标是能够在一个地方定义“全局”值,并将它们作为环境变量用于多个项目。

2 个答案:

答案 0 :(得分:0)

元数据很奇怪。如果您希望像全球环境变量一样使用它,它就不会按照您想要的方式运行。

来自Metadata plugin page

  

我们区分MetadataDefinitions和MetadataValues。这个想法来自Jenkins的参数设置。   MetadataValue是在项目或从属的配置页面上设置的,也是为构建保存的内容。

     

管理员使用MetadataDefinitions来确保所有项目中都存在某些元数据。   MetadataDefinition通过特殊配置页面设置,为定义配置名称和默认值。   设置完成后,MetadataDefinition将最终出现在服务器上的所有项目中,提示用户在配置项目时为其设置值。   然后将MetadataDefinitions转换为MetadataValues。

据我了解,您目前拥有元数据定义(来自全局元数据配置),您需要将其更改为元数据值,以便在项目中可用。

关于如何将定义转换为值的规则没有得到很好的解释。根据我的经验,编辑项目的配置并选择或编辑特定的预设值似乎将定义作为值导入项目中。因此,如果您按照这些步骤操作,则可以在项目的构建环境中看到您的元数据:

  1. 在全局元数据配置中定义密钥(MY_KEY)和值,确保选中 Expose to Environment
  2. 编辑项目的配置。元数据键和默认值应出现在预设下。选择或编辑您想要的预设值"导入"进入项目。保存。
  3. 运行构建并检查MD_MY_KEY
  4. 的环境

    基于所有这些,我担心尝试在许多项目中使用全局定义中的值。我怀疑当项目将定义转换为值时,项目的值可能与全局定义值分离。元数据文档意味着定义用于确保元数据存在于项目中,而不一定用于跨项目管理相同的值。

答案 1 :(得分:0)

我想最终会想到这一点。您需要转到Jenkins -> Configure System -> Global properties,检查Metadata并在其中添加值,然后检查Expose to environment

我不知道Metadata Configuration是如何相关的,一个是破碎的还是非常违反直觉的:(

稍后编辑:好的,我错了。它不起作用。但我想出了一种方法来实现我想要的,Jenkins -> Configure System -> Global properties -> Environment Variables,设置一切。