我已经设置了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
我的目标是能够在一个地方定义“全局”值,并将它们作为环境变量用于多个项目。
答案 0 :(得分:0)
元数据很奇怪。如果您希望像全球环境变量一样使用它,它就不会按照您想要的方式运行。
我们区分MetadataDefinitions和MetadataValues。这个想法来自Jenkins的参数设置。 MetadataValue是在项目或从属的配置页面上设置的,也是为构建保存的内容。
管理员使用MetadataDefinitions来确保所有项目中都存在某些元数据。 MetadataDefinition通过特殊配置页面设置,为定义配置名称和默认值。 设置完成后,MetadataDefinition将最终出现在服务器上的所有项目中,提示用户在配置项目时为其设置值。 然后将MetadataDefinitions转换为MetadataValues。
据我了解,您目前拥有元数据定义(来自全局元数据配置),您需要将其更改为元数据值,以便在项目中可用。
关于如何将定义转换为值的规则没有得到很好的解释。根据我的经验,编辑项目的配置并选择或编辑特定的预设值似乎将定义作为值导入项目中。因此,如果您按照这些步骤操作,则可以在项目的构建环境中看到您的元数据:
MY_KEY
)和值,确保选中 Expose to Environment 。MD_MY_KEY
。基于所有这些,我担心尝试在许多项目中使用全局定义中的值。我怀疑当项目将定义转换为值时,项目的值可能与全局定义值分离。元数据文档意味着定义用于确保元数据存在于项目中,而不一定用于跨项目管理相同的值。
答案 1 :(得分:0)
我想最终会想到这一点。您需要转到Jenkins -> Configure System -> Global properties
,检查Metadata
并在其中添加值,然后检查Expose to environment
。
我不知道Metadata Configuration
是如何相关的,一个是破碎的还是非常违反直觉的:(
稍后编辑:好的,我错了。它不起作用。但我想出了一种方法来实现我想要的,Jenkins -> Configure System -> Global properties -> Environment Variables
,设置一切。