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'`
我想根据生成的时间来命名我的 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'`