it-roy-ru.com

VSO (TFS) - получить текущую дату и время как переменную

Как я могу получить текущую дату и время и передать ее в качестве переменной для какой-либо задачи развертывания?

8
Skorunka František

Вы можете определить переменную с любым значением, а затем изменить переменную как текущую дату. Подробные шаги, как показано ниже:

Определите переменную в выпуске

Предположим, имя переменной time, и мы установили значение как none. Если вам нужно использовать переменную для среды, вы можете определить ее в переменных среды. Иначе вы должны определить это в переменных Tab .  enter image description here

Добавьте задачу Power 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. Вы можете использовать другие форматы даты .
  • Для последующей задачи развертывания, если вы хотите использовать текущую дату и время, вы можете напрямую использовать $(time).
20
Marina Liu - MSFT

Для тех, кто использует Linux на TFS:

Определить переменную

Убедитесь, что для него установлено значение «Устанавливается во время очереди»  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"

Другие варианты перечислены здесь .

Добавить скрипт Shell сразу после получения исходников

Введите bash, чтобы найти эту задачу.

 enter image description here

Готово, вы можете использовать переменную BUILD_DATE в последующих задачах :)

2
Kuba Ptak

Более простой способ 

$(Date:MMddyy)

Некоторые параметры доступны только в разделе «Параметры определения сборки». Форматирование даты является одним из них. Однако, если вы захотите перейти в раздел параметров, установите формат номера сборки как $ (Date: yyyyMMdd-HHmmss), вы можете использовать переменную $ (Build.BuildNumber) в своих задачах.

Более подробная информация здесь - https://docs.Microsoft.com/en-us/vsts/build-release/concepts/definitions/build/variables?tabs=batch

1
MrBeanzy

Теперь существует переменная, специфичная для стадии выпуска, с именем «Release.Deployment.StartTime», или, если вы используете ее в powershell, переменная среды будет «Release_Deployment_StartTime».

Это в UTC и формат "гггг-мм-дд чч: мм: ссз"
ex: "2018-11-09 21: 23: 27Z"

ПРИМЕЧАНИЕ. Эта переменная устанавливается в момент, когда этап развертывания запущен , поэтому, если у вас есть предварительные утверждения перед развертыванием, время будет установлено до завершения любых утверждений. Из моего тестирования, если у вас есть несколько этапов, которые выполняются одновременно, между ними будет одинаковым, даже если один этап ожидает другого из-за ограниченной доступности агента.

Я использую Azure DevOps в Интернете, не уверенный, будет ли это иметься в локальных установках TFS.

0
JeffR