VSO(TFS) - получить текущую дату и время как переменную
Как я могу получить текущую дату и время и передать ее как переменную в какую-либо задачу развертывания?
5 ответов
Вы можете определить переменную с любым значением, а затем изменить переменную как текущую дату. Подробные шаги, как показано ниже:
Определите переменную в выпуске
Предположим, имя переменной time
и мы устанавливаем значение как none
, Если вам нужно использовать переменную для среды, вы можете определить ее в переменных среды. Иначе вы должны определить это в переменных Tab.
Добавьте задачу Power Shell в начале задач развертывания:
Тип: встроенный скрипт.
Встроенный скрипт:
$date=$(Get-Date -Format g);
Write-Host "##vso[task.setvariable variable=time]$date"
Замечания:
- Я использую формат даты как
MM/DD/YYYY HH:MM AM/PM
Вот. Вы можете использовать другие форматы даты. - Для последующей задачи развертывания, если вы хотите использовать текущую дату и время, вы можете использовать
$(time)
,
Теперь существует переменная, специфичная для стадии выпуска, с именем "Release.Deployment.StartTime", или, если вы используете ее в powershell, переменная окружения будет "Release_Deployment_StartTime".
Это в формате UTC и формат "гггг-мм-дд чч: мм: ссз"
например: "2018-11-09 21:23:27Z"
ПРИМЕЧАНИЕ. Эта переменная задается во время запуска этапа развертывания, поэтому, если у вас есть утверждения перед развертыванием, будет установлено время до завершения любых утверждений. Из моего тестирования, если у вас есть несколько этапов, которые выполняются одновременно, между ними будет одинаковым, даже если один этап ожидает другого из-за ограниченной доступности агента.
Я использую Azure DevOps онлайн, не уверенный, будет ли это иметь место в локальных установках TFS.
Для тех, кто использует Linux на TFS:
Определить переменную
Убедитесь, что он имеет значение "Устанавливается во время очереди"
Создайте скрипт в корне вашего репозитория
set-build.date.sh:
#!/usr/bin/env bash
DATE=$(date '+%d/%m/%Y %H:%M:%S')
echo "##vso[task.setvariable variable=BUILD_DATE;]$DATE"
Другие варианты перечислены здесь.
Добавить скрипт оболочки сразу после получения исходников
Введите bash, чтобы найти эту задачу.
Готово, вы можете использовать BUILD_DATE
переменная в последующих задачах:)
Более простой способ
$(Date:MMddyy)
Некоторые параметры доступны только в разделе "Параметры определения сборки". Форматирование даты является одним из них. Однако, если вы захотите перейти в раздел параметров, установите формат номера сборки как $(Date:yyyyMMdd-HHmmss), вы можете использовать переменную $(Build.BuildNumber) в своих задачах.
Более подробная информация здесь - https://docs.microsoft.com/en-us/vsts/build-release/concepts/definitions/build/variables?tabs=batch
На основе ответа Марины Лю ( здесь ) для быстрого копирования и вставки.
Определите переменную сверху:
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)
в вашем коде ниже.