如何测试Azure解决方案模板中createUIDefinion.json文件的最简单方法?

8
我正在将我的解决方案模板发布到Azure市场。例如,我的mainTemplate.json文件很容易在不发布的情况下进行测试,因为我可以从Git部署。但是,我似乎无法通过Git部署测试UI文件。因此,问题在于及时测试我的createUIdefinition.json文件。每次更改createUIdefinition.json文件时,我都必须上传一个新的包到发布门户,这意味着我必须等待Microsoft认证才能进行测试。这是一个24小时的过程。有没有更简单的方法来测试我的createUIdefinition.json更改而不需要经历那个过程?例如,我在一个用户输入验证的正则表达式中有一个错误。
 {
        "name": "EmailUser",
        "type": "Microsoft.Common.TextBox",
        "label": "Email Address",
        "toolTip": "The email address for your account",
        "defaultValue": "",
        "constraints": {
          "required": true,
          "regex": "\\w+([-+.']\\w+)*@\\w+([-.]\\w+)*\\.\\w+([-.]\\w+)*",
          "validationMessage": "Must be a valid email address."
  }

(旁注:如果有人能发现我的错误——也许是在转义字符时?——请告诉我!没有一封电子邮件地址可以正确验证。)
这让我有些疯狂,因为我必须等待一天才能测试我的所谓修复。一定有更好的方法,谢谢!

1
你解决了正则表达式约束的问题吗?我也有类似的问题。 - Mark R
1
因此,正则表达式必须进行JSON编码,因此需要使用\。结果发现我还有另一个语法问题导致UI失败。我记不清那个问题是什么了,但使用Azure预览链接使跟踪变得更容易。我认为这可能是一些愚蠢的错误,比如在设置变量时UI脚本底部参数命名不正确。 - Rocky
FYI,我最终选择了以下内容作为电子邮件地址的约束条件:"constraints": { "required": true, "regex": "^\\S+@\\S+[\\.][0-9a-z]+$", "validationMessage": "必须是有效的电子邮件地址" } - Mark R
5个回答

6

我找到了答案。有一个特别制作的URL可以用来预览createUIDefinition.json。格式如下:

<a href="https://portal.azure.com/#blade/Microsoft_Azure_Compute/CreateMultiVmWizardBlade/internal_bladeCallId/anything/internal_bladeCallerParams/{"initialData":{},"providerConfig":{"createUiDefinition":"URL_ENCODED_LINK TO_createUiDefinition.json"}}">[Preview createUiDefinition.json]</a>

所以测试的步骤如下:
  1. 将createUIdefinition.json上传到公共可访问的URL(github或Azure blob存储都可以)。
  2. 使用你的文件的完整URL修改上述链接。
  3. 将其粘贴到浏览器中。
  4. 在提示时登录Azure,您将被重定向到您的UI页面。
  5. 使用F12在您的浏览器中打开脚本控制台,以查看填写UI值后的json格式输出。
请注意,您不能在此处进行完整部署,这些步骤仅用于测试您的UI、验证您的正则表达式等。您仍然需要测试输出并确保它与独立部署的mainTemplate.json文件一起正常工作。

1
Rocky,你能看一下我的问题吗?http://stackoverflow.com/questions/37862165/publish-arm-templates-in-azure-portal。似乎你已经知道如何在publish.azure.com上发布你的ARM模板部署了。 - Kenneth
@Rocky,如果我在createUiDefinition文件中修改了某些内容,即使启动新会话或将“任何东西”重命名为其他名称,我的UI刀片也不会立即反映出更改,只有经过一段时间后才会更新。你能帮忙解决这个问题吗? - Diepie
@Diepie 听起来像是缓存问题。我没有遇到过这个问题——也许尝试使用不同的浏览器? - Rocky
这个方法目前似乎无法工作。我尝试了它,它加载了UI然后显示了一个关于location()为空的错误。 - RobG

4
Azure门户现在有更直观的测试方法。前往aka.ms/createuidef/sandbox,粘贴您的createUiDefinition.json文件,然后单击“预览”以查看其外观。这样,您可以实时进行更改并查看其效果,而不必重新发布。

这非常难理解,但非常有用! - Rodney

1

0

我发现了一种最简单的方法来测试 Azure 解决方案模板的 createUiDefinition.json。

  1. 进入 http://old.armviz.io/#/
  2. 点击Portal UI Editor
  3. 将 createUiDefinition.json 文件中的内容粘贴到Portal UI Editor中。
  4. 点击预览按钮。它会带您进入 Azure 门户以测试 createUiDefinition.json 文件。

1
不要使用这个方法,它已经过时且存在兼容性问题。Sandbox 更好用。 - RobG

-1
但是在不发布软件包的情况下测试UI模板仍然是不可能的。有时候,在运行时才会评估UI定义中使用的ARM模板和逻辑函数。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接