AWS CodeBuild - 如何在 buildspec.yml 中分配动态变量值?

AWS CodeBuild - How to assign dynamic variable values in buildspec.yml?

我想根据生成的时间来命名我的 CodeBuild 生成的工件。

我尝试了以下方法,但是当工件上传到 S3 时,名称实际上是表达式,而不是我设置的表达式的评估值。

是否可以将 env:variables 设置为动态值,如果可以,如何设置?如果没有,是否有更好的方法来完成我在这里尝试的操作?

version: 0.2

env:
  variables:
    ARTIFACT_NAME: '[string]::Format("v{0}.zip", (Get-Date).ToString("yyyyMMdd-HHmmss"))'

... build commands ...

artifacts:
  Name:$Env:ARTIFACT_NAME

更新:根据下面的建议,我将工件部分调整为以下内容并完全省略了变量,但这样做时继续出现错误。

artifacts:
  files:
    - '**/*'
  discard-paths: no
  base-directory: publish/release
  name: version-$(date +%Y%m%d-%H%M%S).zip

错误结果:

[Container] 2018/08/10 15:59:26 Updating artifact name as  Get-Date : Cannot bind parameter 'Date'. 
Cannot convert value "+%Y%m%d-%H%M%S" to type "System.DateTime". 
Error: "String was not recognized as a valid DateTime."
At C:\codebuild\tmp\script.ps1:5 char:21
+ echo version-$(date +%Y%m%d-%H%M%S).zip
+                     ~~~~~~~~~~~~~~
+ CategoryInfo          : InvalidArgument: (:) [Get-Date], ParameterBindingException
+ FullyQualifiedErrorId : CannotConvertArgumentNoMessage,Microsoft.PowerShell.Commands.GetDateCommand

version-.zip

根据docs,您可以使用以下语法实现:

version: 0.2         
phases:
  build:
    commands:
     - rspec HelloWorld_spec.rb
artifacts:
  files:
   - '**/*'
  name: myname-$(date +%Y-%m-%d) ```

根据https://docs.microsoft.com/en-us/powershell/module/microsoft.powershell.utility/get-date?view=powershell-6 您可以在 PowerShell 中尝试 $(Get-Date -UFormat "%Y%m%d-%H%M%S")。

以下对你有用吗?

name: myname-`date '+%y%m%d-%H%M%S'`