在build (关于变量选项卡)中,我试图使用简单表达式$[not(false)]定义一个自定义变量($[not(false)])。但是当我在构建过程中打印变量时--不管使用什么表达式-- Build.Repository.Clean值总是false。
奇怪的是,用类似于$(FullBuild) (其中FullBuild是另一个自定义变量)这样的东西来定义它很好。
我是不是遗漏了什么?
备注:
背景:
尝试根据自定义变量QuickBuild设置QuickBuild变量(用户在启动构建时可以设置该变量)。尝试指定$[not(variables.QuickBuild)] (以及其他相同表达式的变体) --没有运气。
下面是它现在的工作方式(但我宁愿使用QuickBuild而不是FullBuild --只是不知道如何否定变量):

发布于 2020-03-04 21:28:56
发布于 2020-02-27 08:06:44
更新3:
如果它在队列时间内更改干净操作,则忽略它。对于您正在寻找的内容,您可以尝试以下格式:
Build.Repository.Clean=$[not(eq(variables.QuickBuild,'True'))]
QuickBuild=True,Build.Repository.Clean=False,QuickBuild=False,那么Build.Repository.Clean.Clean=True例如,:
我已经在,Clean=true中设置了clean选项
Build.Repository.Clean=$(FullBuild)
FullBuild=false


现在,当我对构建进行排队时,请尝试在队列时间更改FullBuild=false。
您认为,Build.Repository.Clean应该更改为False,然后就不会执行干净操作。--但事实是,Build.Repository.Clean仍然是真的,并且执行了clean。

甚至在队列期间也不更新FullBuild=false的值,直接设置生成管道中的值FullBuild=false。这也不起作用。
相反,如果您在获取源步骤中设置了Clean=false。在队列构建期间,不管您在FullBuild或Build.Repostiory.Clean中输入了什么样的值。
在构建管道期间,它将不清洁。

结论:在排队时间内不能改变清洁操作。这与任何表达式都没有关联。无论您为Build.Repository.Clean设置了什么样的值。
更新2
再过一遍你的问题和所有的评论。似乎您真正的目标是在队列时分配干净的选项,这是基于另一个定制变量的。

因为您无法在队列时间更改Build.Repository.Clean。所以你想用这个解决办法。这不是支持。没有一种在队列时分配干净选项的方法。
您可能必须在构建管道中预定义此变量。
也请看一下这个问题:如何在排队时使用自托管代理清除生成
在您的场景中,您可以创建两个构建管道,作为一个丑陋的解决方案。一个用于增量构建( get源步骤中的禁用清洁选项,或使用变量Build.Repository.Clean = False),另一个则启用清洁选项。
希望这是清楚的。
https://stackoverflow.com/questions/60419438
复制相似问题