可以通过脚本任务覆盖Bamboo变量吗?

时间:2017-05-15 15:17:31

标签: powershell continuous-integration environment-variables bamboo

我有兴趣使用脚本任务覆盖其中一个Bamboo plan variables以执行后续任务,但我不确定它是否可行或如何执行此操作。看起来Bamboo允许构建计划的各种级别的变量覆盖一直到特定分支,但是它们似乎都需要在Bamboo UI中定义值。这样做的问题是它需要管理员权限来修改这些变量,而其中一些需要由没有这种访问级别的开发人员修改。作为一种解决方案,我希望能够在源存储库本身中存在的文件中指定一些变量覆盖。

尝试1:覆盖环境变量

我尝试使用Powershell脚本设置Bamboo公开的环境变量,并指定类似$env:bamboo_xyz = 'ABC'之类的东西,但它似乎没有效果超过它所在的任务上下文据推测,Bamboo大概必须为每个任务单独重新设置环境变量,或者在自己的上下文中执行它们,但是我不完全从文档中清楚地了解它。

更新:从某些测试中可以看出,在同一个作业中的后续脚本任务中,一个脚本任务中设置的环境变量不可用。这使我没有明显的方法来覆盖基于Bamboo中硬编码值以外的任何变量。

尝试2:使用 Bamboo Inject Variables插件任务

我尝试使用Bamboo Inject Variables Plugin任务覆盖变量但是因为看起来似乎是必需的命名空间参数,它似乎只能定义新变量而不能覆盖现有变量。

1 个答案:

答案 0 :(得分:2)

环境变量仅在当前会话中有效。因此,如果Bamboo启动一个脚本(一个PowerShell会话)完成该脚本然后启动一个新的PowerShell脚本(新会话),则不会保留环境变量。

那么有几个选项,在每个脚本中设置变量。 或者在流程开始时使用注册表设置它。如果必要,在最后一步/脚本中将其设置回默认值。