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) в вашем коде ниже.

Другие вопросы по тегам