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

时间:2018-08-10 15:10:30

标签: amazon-web-services aws-codebuild

我想根据我的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

3 个答案:

答案 0 :(得分:0)

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

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

答案 1 :(得分:0)

根据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”)。

答案 2 :(得分:0)

以下为您工作吗?

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