我们今天使用版本管理(客户端/服务器)进行部署,我们同时拥有基于代理和vNext版本的模板,并且我们有PowerShell代码来处理这些部署。现在,我们正在迁移到tfs 2015中的发布管理的Web版本,我们希望使用“powershell on target Machine”任务来调用我们的基本脚本(然后导入其他PS模块)来负责部署。我们面临的问题是变量,我们需要将大量变量传递给我们的代码,然后这些变量将在我们的配置文件中进行转换和替换。这些变量有特殊的字符和空格等,当我们在Session变量中传递这些变量时,由于spl char或space等,部署失败了。有没有办法可以将变量传递给我们的代码而不会失败。
我们在我们的发布中添加了一个内联powershell任务,它将所有变量添加到xml文件中,这个文件将位于构建服务器上,然后我们将添加Windows文件复制任务以将此文件移动到目标服务器另一个任务PowerShell on调用我们已更新的基本脚本的目标机器,用于从xml文件中读取变量。但问题是我们最终在我们的版本中添加了4个任务来处理Release Management中的一个组件,而且我们的一些版本非常复杂,我们有20个组件,如果我们必须将其迁移到基于Web的版本管理我们必须添加约80个步骤,这将增加很多混乱。有更好的方法吗?如果我有任何意义或者如果需要更多细节,请告诉我Variables screeshot
附上我试图传递给目标机器任务上的powershell中的会话变量的变量的屏幕截图。这些变量中包含'=',当这些变量传递给任务时,我得到以下错误“2019-02-11T17:11:19.9812595Z ## [错误]运行命令停止,因为首选变量”ErrorActionPreference“或常见参数设置为停止:找到值'源'没有相应的键“
我们通过会话变量向错误的方向读取变量,我们发现有一个api可以使所有的释放变量可用。
HTTPS:// {tfsurl} / {收集} / {}项目/ _apis /发行/发行/ {} releaseId API版本= 3.0 preview.1
然后我们更新了代码以根据环境获取变量