Я только что столкнулся с этой проблемой, но в моем проекте не было файла NuGet.config, и я не хотел добавлять его. Использование NuGet.config требует от вас хранить личный токен доступа (PAT) в виде открытого текста, что, по меньшей мере, не идеально, особенно если оно передается в ваше хранилище вместе с вашим проектом.
После долгих исследований я нашел почти идеальное решение. Используя группы переменных в DevOps Azure, вы можете добавлять переменные (и секреты), которые можно сделать доступными для всех ваших конвейеров. Мне пришло в голову, что я могу поместить весь NuGet.config в секрет там (вместе с PAT), а затем передать его в настоящий файл NuGet.config как часть конвейера.
У вас уже есть файл NuGet.config, но в случае, если кто-то еще воспользуется этим и начнет с нуля, вам потребуется следующее:
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<packageSources>
<add key="nuget.org" value="https://api.nuget.org/v3/index.json" protocolVersion="3" />
<add key="MyPrivateFeed" value="*** PRIVATE FEED URL HERE ***" />
</packageSources>
<packageSourceCredentials>
<MyPrivateFeed>
<add key="Username" value="anything" />
<add key="ClearTextPassword" value="*** PAT HERE ***" />
</MyPrivateFeed>
</packageSourceCredentials>
</configuration>
Введите URL своего канала и PAT, а затем скопируйте все и вставьте в переменную с именем «NuGet.config» в группе переменных. Нажмите значок блокировки на переменной, чтобы сделать ее секретной. Переменная может быть названа как угодно, но вам нужно обновить ее в приведенном ниже коде, если вы используете что-то другое.
Затем вам просто нужно включить вашу группу переменных:
variables:
- group: my-variable-group
И добавьте следующее к своему конвейерному yaml перед любыми другими шагами, которые будут использовать частный канал (например, dotnet build
).
- bash: echo -e '$(NuGet.config)' > NuGet.config
displayName: Create NuGet.config