在Cloudbees Jenkins文件夹中设置环境变量

在Cloudbees Jenkins文件夹中设置环境变量,jenkins,cloudbees,Jenkins,Cloudbees,在我重新安装Jenkins和Cloudbees免费企业插件后,Jenkins文件夹中设置的环境变量停止工作,并从配置UI中消失。但是,它仍然存在于文件系统的config.xml中,如下所示: <properties> <com.cloudbees.hudson.plugins.folder.properties.EnvVarsFolderProperty> 我现在应该如何创建应用于整个文件夹的环境变量?功能已经应用于文件夹加插件,它需要Jenkins Enterp

在我重新安装Jenkins和Cloudbees免费企业插件后,Jenkins文件夹中设置的环境变量停止工作,并从配置UI中消失。但是,它仍然存在于文件系统的config.xml中,如下所示:

<properties>
 <com.cloudbees.hudson.plugins.folder.properties.EnvVarsFolderProperty>


我现在应该如何创建应用于整个文件夹的环境变量?

功能已经应用于文件夹加插件,它需要Jenkins Enterprise付费许可证。

经过深思熟虑,由于我不得不处理这一需求一段时间,我已经做了一些工作来定义自己的插件来满足这一需求。它允许您为文件夹定义字符串属性列表,然后文件夹中的作业可以继承这些属性,从而无需为文件夹中的所有作业反复指定相同的属性

我希望这对其他人有用。一旦我有时间更好地记录它并编写一些测试脚本,我计划将它提交给Jenkins CI Org

更新:

JenkinsCI组织中该插件的新官方回购协议如下:


@Mig82提供了一个很好的解决方案。不过,它有一个限制,即它提供的文件夹环境变量在自由式构建的SCM部分中不可用,也可能在其他部分中不可用

我发现我可以使用groovy的一段代码来解决这个问题:

  • 在您的自由式作业中,启用“为项目准备环境” “运行”部分
  • 在“为运行准备环境”部分,添加 “已评估Groovy脚本”字段的以下代码:
  • 导入com.mig82.folders.wrappers.ParentFolderBuildWrapper 导入jenkins.tasks.SimpleBuildWrapper //创建一个临时上下文对象,我们可以将文件夹属性加载到其中。 myContext=新的SimpleBuildWrapper.Context() //创建类“ParentFolderBuildWrapper”的对象。 //这是文件夹属性插件的核心类, //它实现了从文件夹中获取属性的代码。 parentFolderBuildWrapper=新的parentFolderBuildWrapper() //将文件夹属性加载到上下文对象中。 parentFolderBuildWrapper.loadFolderProperties(currentJob,myContext) //返回包含属性的映射。 返回myContext.getEnv()
    嗨@Robin Green,有没有一个地方可以让我得到仍然具有该功能的旧插件?我需要它来维护Jenkins的遗留部署。hpi或源代码。谢谢,很好的解决方法。你会很高兴知道我最近将PR合并到插件中,该插件现在可以为自由式作业中的SCM步骤提供属性。你能为自由式作业提供属性吗?@Heinz it对自由式作业很有效。我发布这篇文章已经有几年了,新的官方回购协议是JenkinsCI集团的一部分。您可以找到自由式作业文档,谢谢!它工作得很好!我遗漏的是未选中生成作业中的“文件夹属性”,因此在父文件夹中定义的文件夹属性不会传播到该文件夹下的作业。这是一个伟大的功能,将节省我很多时间。 import com.mig82.folders.wrappers.ParentFolderBuildWrapper import jenkins.tasks.SimpleBuildWrapper // Create a temporary Context object into which we can load the folder properties. myContext = new SimpleBuildWrapper.Context() // Create an object of the class "ParentFolderBuildWrapper". // This is the class at the heart of the Folder Properties plugin, // and it implements the code that gets the properties from the folder. parentFolderBuildWrapper = new ParentFolderBuildWrapper() // Load the folder properties into our Context object. parentFolderBuildWrapper.loadFolderProperties(currentJob, myContext) // Return the map containing the properties. return myContext.getEnv()