我正在从https webhook触发Azure逻辑应用程序以获取Azure容器注册表中的docker映像。
工作流程大致如下:
When a HTTP request is received
Queue a new build
Delay until
FinishTime
的 Queue a new build
请参阅:工作流图像
该Delay until
操作不会在该queueried工作FinishTime
是0001-01-01T00:00:00
。
它抱怨格式错误,因此我Z
在FinishTime
关键字之后手动添加了一个。
现在时间戳是正确的格式,但是时间戳0001-01-01T00:00:00Z
显然没有意义,后续步骤将立即执行。
我有什么想念的吗?
编辑:Queue a new build
将Azure管道构建排队。即,该FinishTime
属性来自管道。
我一直在与Azure支持工程师联系,他已确认该Delay until
操作应按我打算使用的方式进行,但是该FinishTime
属性将不包含我可以使用的值。
同时,我找到了一种解决方法,其中使用了一些逻辑和许多其他步骤。不方便,但至少可以满足我的要求。
这是从Webhook触发工作流(Azure容器注册表中的docker基本映像更新)触发后执行的最重要步骤。
本质上,我正在初始化以下变量并查询新的构建:
buildStatusCompleted
:包含目标值的字符串值 completed
jarsBuildStatus
:包含初始值的字符串值 notStarted
jarsBuildResult
:包含默认值的字符串值 failed
然后,我正在使用一个Until
动作来监视jarsBuildStatus
的值何时切换为completed
。
在Until
操作中,我将重复以下步骤,直到jarsBuildStatus
将其值更改为buildStatusCompleted
:
Delay
15秒HTTP
向Azure DevOps构建的请求,使用个人访问令牌进行身份验证Parse JSON
和关键字的先前原始HTTP
输出的主体status
result
jarsBuildStatus = status
中断Until
动作(循环)后,将jarsBuildResult
设置为parsed result
。
所有这些步骤都是较大的编排流程的一部分,其中我针对多个不同的Azure DevOps生成管道重复执行给定的步骤。在工作流程中的最后动作是将所有的status
,result
以及其他相关数据作为构建总结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] 删除。
我来说两句