2016-09-09 3 views
4

Мы хотим использовать управление выпуском TFS 2015.3 для упаковки/развертывания нашего программного обеспечения. Для одной из наших задач по выпуску нам нужен доступ к Release Artifact Variables в одном из наших сценариев Powershell.Управление изменениями TFS Артефакты Переменная недоступна

Но каждый раз, когда мы пытаемся получить доступ к одной из этих переменных RELEASE_ARTIFACTS_ [источник-псевдоним] _BUILDNUMBER, например, мы получаем следующее сообщение об ошибке:

[Ошибка] Термин "Release_Artifacts_ [источник-псевдоним] _BUILDNUMBER 'не распознается как имя командлета, функции, файла сценария или исполняемой программы. Проверьте правильность написания имени или, если включен путь, проверьте правильность пути и повторите попытку.

Я уже пытался распечатать все доступные переменные среды, используя встроенный скрипт powershell со следующим утверждением: Get-ChildItem Env :. Но этих переменных не было в любом случае.

Существуют ли какие-либо известные проблемы при использовании переменных Release Artifact?

+1

Хм ... в соответствии с [это] (https://www.visualstudio.com/en-us/docs/release/author-release-definition/understanding-artifacts#variables), вы должны заменить строку '[source-alias]' правильной, ну, ваш псевдоним источника. Они приводят пример: «ASPNET4.CI», который превратится в «ASPNET4_CI» в имени переменной, чтобы сформировать полную вещь с именем «RELEASE_ARTIFACTS_ASPNET4_CI_BUILDNUMBER». –

ответ

4

Кажется, что переменные Release Artifacts недоступны для TFS on-prem; Я тестировал один и тот же скрипт с VSTS и TFS2015.3.

В версии VSTS вы можете видеть переменные высвобождения на этапе инициализации в то время как в на прем выпуске эти переменные отсутствуют:

enter image description here

enter image description here

+0

Благодарим вас за эту информацию. Знаете ли вы, как я могу копировать свои артефакты из моей сборки, скажем, $ (build.artifactstagingdirectory)? Итак, в основном вопрос заключается в том, как я могу получить правильный путь для артефактов сборки, чтобы потом работать с ними. (Zip/Deploy ...) – Mike1991

+0

@ Mike1991 Обычно я использую журнал этапа сборки MSBuild или VisualStudio для определения полного пути артефактов (например, C: \ B \ 1 \ 8 \ s \ bin \ debug \ foobar. dll), затем используйте задачу сборки Copy And Publish Build Artifact с $ (Build.SourcesDirectory) \ bin \ debug в поле CopyRoot – ds19

+3

Да, но что, если мне нужен BuildNumber всех моих связанных артефактов (более одного)? – Mike1991

3

Вы используете предопределенные переменные формы с артефактами управления Release:

RELEASE_ARTIFACTS_[source-alias]_[variable-name] 

Вам нужно заменить [source-alias] с именем псевдонима для источника артефактов, включенного в определении выпуска. Вы можете найти имя псевдонима в закладке Artifacts определения выпуска.

enter image description here

Тогда вы могли бы использовать его, как показано ниже:

  • При использовании в Инлайн Script параметра, периоды артефакта имена должны быть заменены подчеркиванием. env:RELEASE_ARTIFACTS_[ScrumProject]_[BUILDNUMBER]
  • Артефактные переменные также могут быть переданы как Аргументы к задачам. В этом случае, замените подчеркивание с периодом: Release.Artifacts.[source-alias].[variable-name]

Подробнее смотрите этот учебник страницы из MSDN: Artifacts in Microsoft Release Management

После некоторого испытания, получил тот же результат, как DS19. Похоже, что артефакты выпуска не поддерживают TFS2015 update3, теперь только работают с VSTS.


Update

Вам просто нужно указать build.artifactstagingdirectory в Publish Build Artifacts или Copy and Publish Build Artifacts шаг, TFS будет делать это для вас. Чтобы заархивировать артефакты, вы также можете использовать сценарий powershell для этого, более подробную информацию вы можете найти в этом блоге Manage Artifacts with TFS Build vNext

+1

Я знаю, что я должен заменить [source-alias], но если он действительно недоступен в помещении, тогда я должен найти другое обходное решение для этого ... – Mike1991

+1

@ Mike1991 Вам просто нужно указать 'build.artifactstagingdirectory' в Публиковать артефакты сборки (https://www.visualstudio.com/en-us/docs/build/steps/utility/publish-build-artifacts) или [Копировать и публиковать артефакты сборки] (https: //www.visualstudio .com/en-us/docs/build/steps/utility/copy-and-publish-build-artifacts) шаг, TFS сделает все для вас. Чтобы закрепить артефакты, вы также можете использовать сценарий powershell для этого, более подробную информацию вы можете отсылать в этом блоге [Управление артефактами с помощью TFS Build vNext] (http://www.codewrecks.com/blog/index.php/2015/ 06/30/manage-artifacts-with-tfs-build-vnext /) –