Исключение файлов / папок из публикации VSTS

Мы используем новую сборку в стиле VSO / VSTS в TFS on premise, 2015 Update 1 по состоянию на вчерашний день.

На этапе публикации артефактов сборки мы хотим скопировать все файлы / папки из двух подпапок корневой панели.

ie:

$\somefilestopublish1\...
$\somefilestopublish2\...
$\somefilestoexclude1\...
$\somefilestoexclude2\...

В настоящее время у меня есть **\* в качестве аргумента содержимого, который, очевидно, все опубликует. Я попытался добавить ;-:<exclude_pattern>, как было предложено поиском Google, но это просто остановило весь вывод и привело к пустой папке.

Есть ли способ использовать выражение минимального соответствия для исключения папок, или мне нужно будет вместо этого явно выбрать папки для публикации.


person themaninthesuitcase    schedule 02.12.2015    source источник


Ответы (5)


Минимальное использование "!" чтобы исключить данный шаблон. Вы можете указать его в следующем формате:

!(somefilestoexclude1|somefilestoexclude2)

Ниже приведен пример: С! (Bin | obj) папка bin и папка obj в папке WindowsFormsApplication1 не копируются в артефакт. введите описание изображения здесь

person Eddie Chen - MSFT    schedule 03.12.2015
comment
Не могли бы вы привести пример? Я до сих пор борюсь с этим: у меня есть: !(_build|$tf)/*, но я все еще копирую папки $ tf и _build в свой drop. - person themaninthesuitcase; 03.12.2015
comment
@themaninthesuitcase Я просто создаю образец и добавляю снимок экрана в ответ, пожалуйста, обратитесь к нему за подробностями. - person Eddie Chen - MSFT; 03.12.2015
comment
@ Eddie-MSFT Как это работает для игнорирования определенных типов файлов. Нравится .pdb и .xml? - person Schoof; 25.04.2016
comment
@Thomas См. Эту ссылку: msdn.microsoft.com/en-us/Library/vs/alm/Build/steps/utility/ - person Eddie Chen - MSFT; 06.05.2016
comment
@ Eddie-MSFT Спасибо! :) - person Schoof; 31.05.2016
comment
Использование ** \! ($ Tf) для копирования всего, кроме папки $ tf, не работает в tfs2017.1. - person Matthieu; 11.05.2017

! / $ tf / ** у меня работает. Я решил сократить это до! / $ * / **

Помогло http://www.globtester.com/. Символ $ не нужно экранировать, несмотря на противоречивые указания по msdn: https://msdn.microsoft.com/en-us/library/bb383819.aspx.

person Jason Vercellone    schedule 17.02.2016
comment
Вам не нужно @ping OP. Он все равно узнает, что есть ответ (и я думаю, что это работает только из комментариев). - person Teepeemm; 19.02.2016
comment
@Teepeemm Я собирался добавить комментарий, но мне не хватает репутации. - person Jason Vercellone; 22.02.2016
comment
@ piet.t Я не понимаю твоей точки зрения. Существенная часть ответа заключается в том, что /! ($ Tf) / ** у меня сработало. Две ссылки дополняют (но не являются существенными для) ответ. Тем не менее, как оказалось, /! ($ Tf) / ** не включает файлы в корневую папку, поэтому я все еще ищу лучший шаблон минимального соответствия. - person Jason Vercellone; 22.02.2016
comment
! / $ tf / ** - лучшее решение, которое я нашел, и я решил сократить его до:! / $ * / ** - person Jason Vercellone; 22.02.2016
comment
@JasonVercellone Вы должны объединить это с чем-то еще, чтобы скопировать все, кроме папки $ tf? - person Matthieu; 11.05.2017

Предположим, вы хотите собрать все файлы * .nupkg в своем решении (например, те, которые вы создаете во время сборки) и скопировать их в другую папку, но вы хотите исключить < / em> те, которые вы получаете при восстановлении пакета, вам необходимо указать следующее:

**\*.nupkg !packages\**

Важно указывать их именно в таком порядке. Если поместить исключение в папку пакетов наверху, в задаче «Копировать» будут скопированы все файлы * .nupkg.

person Emiel Koning    schedule 11.12.2017

Это сработало для меня для папки, попробуйте это! ** \ Uploads *** Для файла **! (Web.config)

Приведенный выше пример предназначен для исключения папки и файла, доступных в одном и том же пути к папке.

person KRH    schedule 17.02.2017

В TFS 2017 с обновлением 1, если вы используете задачу «Копировать файлы» и хотите скопировать все файлы из $ (Build.SourcesDirectory), но исключить папку $ tf, то, как я обнаружил, работало следующее.

В текстовом поле «Содержание» введите следующие две строки.

**\*
!$tf\**

Этот пост на social.msdn.microsoft.com помог мне разобраться в этом.

person Smoles    schedule 05.12.2017