VSO(TFS) - 获取当前日期时间作为变量

时间:2017-06-24 17:12:18

标签: deployment azure-devops

如何获取当前日期时间并将其作为变量传递给某个部署任务?

5 个答案:

答案 0 :(得分:26)

您可以使用任何值定义变量,然后将变量修改为当前日期。详细步骤如下:

在发布中定义变量

假设变量名称为time,我们将值设置为none。如果需要将变量用于环境,可以在环境变量中定义它。否则,您应该在变量选项卡中定义它。 enter image description here

在部署任务开始时添加电源shell任务:

类型:内联脚本。

内联脚本:

$date=$(Get-Date -Format g);
Write-Host "##vso[task.setvariable variable=time]$date"

enter image description here

注意:

  • 我在这里使用日期格式MM/DD/YYYY HH:MM AM/PM。您可以使用其他date formats
  • 对于后续部署任务,如果要使用当前日期时间,可以直接使用$(time)

答案 1 :(得分:3)

现在有一个特定于发布阶段的变量,名为“ Release.Deployment.StartTime”,或者,如果您在Powershell中使用它,则环境变量为“ Release_Deployment_StartTime”。

采用UTC,格式为“ yyyy-MM-dd HH:mm:ssZ”
例如:“ 2018-11-09 21:23:27Z”

注意:此变量在开始部署阶段 时设置,因此,如果您有部署前的批准,则将在完成所有批准之前设置时间。根据我的测试,如果您有多个同时执行的阶段,即使由于代理的可用性有限,即使一个阶段等待另一阶段,它们之间也是一样的。

我正在在线使用Azure DevOps,不确定本地TFS安装是否具有此功能。

答案 2 :(得分:2)

更简单的方法是

$(Date:MMddyy)

某些选项仅在“构建定义”选项部分中可用。日期格式是其中之一。但是,如果您要进入选项部分,将内部版本号格式设置为$(Date:yyyyMMdd-HHmmss),则可以在任务中使用$(Build.BuildNumber)变量。

此处有更多信息 - https://docs.microsoft.com/en-us/vsts/build-release/concepts/definitions/build/variables?tabs=batch

答案 3 :(得分:2)

对于那些在tfs上使用Linux的人:

定义变量

确保已设置“可在队列时间设置” enter image description here

在存储库的根目录中创建脚本

set-build.date.sh:

#!/usr/bin/env bash
DATE=$(date '+%d/%m/%Y %H:%M:%S') 
echo "##vso[task.setvariable variable=BUILD_DATE;]$DATE"

列出了其他选项here

在获取源代码之后立即添加shell脚本

键入bash以查找此任务。

enter image description here

完成,您可以在以后的任务中使用BUILD_DATE变量:)

答案 4 :(得分:1)

基于 Marina Liu (here) 的快速复制和粘贴回答。

在顶部定义变量:

variables:
  buildTimeStamp: # will be set by script
  # ...

将此添加为第一个任务(并根据需要更改格式):

- task: PowerShell@2
  displayName: set variable buildTimeStamp
  inputs:
    targetType: 'inline'
    script: |
      $date=$(Get-Date -Format yyyy-MM-dd_HH.mm);
      Write-Host "##vso[task.setvariable variable=buildTimeStamp]$date"

现在您可以在下面的代码中使用变量 $(buildTimeStamp)