我想根据我的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
答案 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'`