#tfs #azure-pipelines #azure-pipelines-release-pipeline
#tfs #azure-конвейеры #azure-pipelines-release-pipeline
Вопрос:
Я пытаюсь использовать маркировку управления выпусками XPath / Regular, и я продолжаю получать разные ошибки при попытке ответить на три записи
-
Исходное имя файла: $(System.DefaultWorkingDirectory) / XXXXX / Drop — Я знаю, что это находится на моем сервере сборки, этот файл должен быть xxxxxx.exe.config и находится в zip-файле
-
Имя файла назначения: я не знаю, должно ли это быть на сервере сборки или на сервере выпуска?
-
Имя файла конфигурации в формате Json: я действительно не знаю, куда это поместить, приведенный ниже код является файлом Json.
{ «РАЗРАБОТЧИК»: {
"ConfigChanges": [{ "KeyName": "/configuration/loggingConfiguration/listeners/add[@name='Email Trace Listener']", "Attribute": "emailListId", "value": 0 }, { "KeyName": "/configuration/loggingConfiguration/listeners/add[@name='Email Trace Listener']", "Attribute": "subjectLineStarter", "value": "[DEV]: Program Name" }, { "KeyName": "/configuration/loggingConfiguration/listeners/add[@name='Email Trace Listener']", "Attribute": "smtpServer", "value": "testsmtp.dns.com" }, { "KeyName": "/configuration/loggingConfiguration/listeners/add[@name='Email Trace Listener']", "Attribute": "toAddress", "value": "application.support.test@Yahoo.com" }] }
}
Моя ошибка
2019-04-01T16:40:08.4509133Z ##[section]Starting: Tokenizer: Transform Source filename
2019-04-01T16:40:08.4663688Z ==============================================================================
2019-04-01T16:40:08.4663688Z Task : Tokenize with XPath/Regular expressions
2019-04-01T16:40:08.4663688Z Description : Replaces __<variable>__ and/or XPath for XML documents with User Defined variables or configuration json document
2019-04-01T16:40:08.4663688Z Version : 2.1.0
2019-04-01T16:40:08.4663688Z Author : ms-devlabs
2019-04-01T16:40:08.4663688Z Help : [More Information](https://github.com/openalm/Extension-UtilitiesPack)
2019-04-01T16:40:08.4663688Z ==============================================================================
2019-04-01T16:40:10.6850718Z Environment: DEV
2019-04-01T16:40:10.8413250Z Updating emailListId of /configuration/loggingConfiguration/listeners/add[@name='Email Trace Listener']: 0
2019-04-01T16:40:10.9350669Z ##[error]Failure while updating emailListId of /configuration/loggingConfiguration/listeners/add[@name='Email Trace Listener']: 0
2019-04-01T16:40:10.9663179Z ##[section]Finishing: Tokenizer: Transform Source filename
в моем файле .proj я поместил это, чтобы я мог получить App.Config.Файл токена при выпуске вместо App.Config.
<ItemGroup>
<None Include="App.config" />
<None Include="App.Debug.config">
<DependentUpon>App.config</DependentUpon>
</None>
<None Include="App.config.Token">
<DependentUpon>App.config</DependentUpon>
</None>
</ItemGroup>
App.config и App.Debug.config идентичны.
App.Config.Токен
Комментарии:
1. Задача, для которой вы показываете сообщение об ошибке, не имеет ничего общего с токенизацией.
2. Что ж, ошибка может быть неверной, но это тот процесс, который я пытаюсь создать. У меня есть Auto.config, и я создал Auto. Конфигурация. Токен в том же каталоге. Когда я выполняю задачу сборки, мне нужен автоматический режим. Конфигурация. Необходимо выбрать токен, чтобы в program.exe.config были элементы, подлежащие замене.
3. В вашем вопросе говорится, что вы пытаетесь сделать одну вещь. Сообщение об ошибке, которое вы видите, относится к совершенно другой вещи , которая не связана с вашим вопросом. Никто не может помочь с вопросом без более подробной информации о том, что не работает с предметом вопроса .
Ответ №1:
Вот процесс токенизации, который мы используем в настоящее время (мы не заархивируем результаты сборки, смотрите Предложения по расширениям ниже):
СБОРКА:
Замените App.Config на App.Config.Маркер, например, с помощью команды копирования в командной строке -задача.
ВЫПУСК
Для каждой среды / этапа:
- Используйте расширение «Заменить токены» для .config. Это считывает переменные, зависящие от среды, из определения выпуска и заменяет токены в файле .config (который был заменен на .config.token в сборке)
- Выполните развертывание
Для замены токенов внутри архива требуется другое расширение, Токенизация в архиве может быть вариантом. Мы используем инструменты Колина для сборки и выпуска, в которых есть отличный токенизатор для json-файлов. Я предпочитаю токенизатор Колина, поскольку он довольно прост и не нужно возиться с XPATH и преобразованиями. Мы также используем Json для переменных для хранения переменных среды в VC, вместо того, чтобы хранить их в определениях выпуска. Я подозреваю, что последнее не будет работать в TFS 2017, но не пробовал.
Что касается первоначального вопроса, я подозреваю, что используемое вами расширение не может прочитать файл, который вы пытаетесь маркировать, из архива. Сам я не использовал это расширение, но я бы поместил JSON-файл в систему управления версиями, чтобы он попал в артефакт сборки. Имя файла назначения подразумевает, что расширение могло записать окончательный конфигурационный файл, вероятно, заменив исходный app.config.