是否有可能从另一个构建变量的值构造一个vsts构建变量?

时间:2017-07-18 14:18:18

标签: xamarin.android azure-pipelines

我们要求将xamarin android应用程序构建为多个构建配置。我们有不同的KeyStore文件来播放来自不同构建配置的应用程序。这意味着在构建时我们需要选择正确的密钥库文件和密码。我们设法使用字符串插值引用密钥库文件的路径。关于密码,这很棘手。

考虑以下示例

多个构建配置       测试       开发       刺    下面的构建变量带有相应Keystore文件的密码       KeyStorePasswordTest       KeyStorePasswordDev       KeyStorePasswordProd

现在在构建变量部分,我们已经定义了另一个构建变量,其值如下所示       KeyStorePassword ------- $(“KeyStorePassword $(BuildConfiguration)”)

where valid BuildConfiguration is Test, Dev & Prod.

有人可以帮我吗?这可以从shell脚本完成,但我们想要一个安全的解决方案,因此决定使用VSTS构建服务器功能。

我们正在使用TFS 2015服务器,并且构建在Mac Mini构建代理上运行。

1 个答案:

答案 0 :(得分:0)

是的,您可以使用 shell脚本任务以不同的构建配置不同地分配密码。

shell脚本为:

#!/bin/bash

temp=$(echo "KeyStorePassword$BuildConfiguration")
if [ $temp = "KeyStorePasswordDev" ]
then
{ 
# what you want to set password
}
elif [ $temp = "KeyStorePasswordProd" ] 
then
{ 
# what you want to set password
}
elif [ $temp = "KeyStorePasswordTest" ] 
then
{ 
# what you want to set password
}
else 
{ echo "no such config or password" }
fi

shell脚本任务中的参数:

 "$(BuildConfiguration)" "$(KeyStorePasswordDev)" "$(KeyStorePasswordTest)" "$(KeyStorePasswordProd)"

注意: 由于$(BuildConfiguration)变量通常定义为debugrelease,因此您可以改为命名其他变量名称。