在Azure Logic App中无法使用``延迟到''完成时间

安德烈亚斯(Andreas Hessenthaler)

我正在从https webhook触发Azure逻辑应用程序以获取Azure容器注册表中的docker映像。

工作流程大致如下:

  • When a HTTP request is received
  • Queue a new build
  • Delay until
    • FinishTimeQueue a new build

请参阅:工作流图像

Delay until操作不会在该queueried工作FinishTime0001-01-01T00:00:00

它抱怨格式错误,因此我ZFinishTime关键字之后手动添加了一个

现在时间戳是正确的格式,但是时间戳0001-01-01T00:00:00Z显然没有意义,后续步骤将立即执行。

我有什么想念的吗?

编辑:Queue a new build将Azure管道构建排队。即,该FinishTime属性来自管道。

安德烈亚斯(Andreas Hessenthaler)

我一直在与Azure支持工程师联系,他已确认该Delay until操作应按我打算使用的方式进行,但是该FinishTime属性将不包含我可以使用的值。

同时,我找到了一种解决方法,其中使用了一些逻辑和许多其他步骤。不方便,但至少可以满足我的要求。

这是从Webhook触发工作流(Azure容器注册表中的docker基本映像更新)触发后执行的最重要步骤。

本质上,我正在初始化以下变量并查询新的构建:

  • buildStatusCompleted:包含目标值的字符串值 completed
  • jarsBuildStatus:包含初始值的字符串值 notStarted
  • jarsBuildResult:包含默认值的字符串值 failed

然后,我正在使用一个Until动作来监视jarsBuildStatus的值何时切换为completed

Until操作中,我将重复以下步骤,直到jarsBuildStatus将其值更改为buildStatusCompleted

  1. Delay 15秒
  2. HTTP 向Azure DevOps构建的请求,使用个人访问令牌进行身份验证

http请求

  1. Parse JSON关键字的先前原始HTTP输出的主体statusresult
  2. jarsBuildStatus = status

中断Until动作(循环)后,将jarsBuildResult设置为parsed result

所有这些步骤都是较大的编排流程的一部分,其中我针对多个不同的Azure DevOps生成管道重复执行给定的步骤。在工作流程中的最后动作是将所有的statusresult以及其他相关数据作为构建总结Azure中的DevOps。

对我来说,这只是一个变通办法,我将保留此问题,以查看其他人是否也有建议,或者万一Azure支持工程师可以对该Delay until操作提供更多见解

这是最终工作流程的图像(至少是我执行Delay until操作的部分):在此处输入图片说明

编辑:事实证明,我可以简化工作流程,因为在Logic App中有一个名为的专用Azure DevOps操作Send an HTTP request to Azure DevOps,它不需要手动身份验证(Azure支持工程师指出了这一点)。现在,工作流程如下所示:

在此处输入图片说明

也就是说,我可以直接查询构建状态并将其设置jarsBuildStatus

@{body('Send_an_HTTP_request_to_Azure_DevOps:_jar''s')['status']}

上面的代码片段自动转换为该Set variable操作的值因此,无需使用其他Parse JSON操作。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章