Я развертываю новый проект в Azure Pipeline, у меня есть модульные тесты в этих проектах. Модульные тесты должны иметь доступ к конфигурации приложения Azure. Каков наилучший способ аутентификации моего проекта для доступа к конфигурации приложения Azure?
Я не знаю, как оттуда использовать управляемое удостоверение...
Я не знаю, как использовать оттуда управляемое удостоверение.
Чтобы использовать управляемое удостоверение, вы можете использовать azure VM
в качестве агента self-hosted
, чтобы включить managed identity
на агенте.
Назначьте управляемое удостоверение конфигурации приложения Azure и присвойте управляемому удостоверению роль App Configuration Data Reader
.
Пожалуйста, проверьте документ, чтобы использовать управляемое удостоверение в своем проекте модульного тестирования.
Пожалуйста, обратитесь к ссылкам ниже для более подробной информации:
Используйте управляемые удостоверения для доступа к конфигурации приложения
Запуск проектов модульного тестирования с конфигурацией приложений Azure в Azure DevOps Pipeline
Я прочитал немного больше, и оказалось, что управляемое удостоверение используется только для виртуальных машин, которые мне не нужны.
Чтобы иметь возможность пройти аутентификацию в Azure AppConfiguration из моего модульного теста, запущенного моим конвейером, я использовал задачу Azurecli, которая имеет контекст ServiceConnection, и выполнил команду dotnet test, затем экспортировал результаты теста и покрытие кода, чтобы у Azure DevOps было все. это нужно
- task: AzureCLI@1
inputs:
azureSubscription: 'devops-serviceconnection-dev'
scriptLocation: 'inlineScript'
inlineScript: |
cd .\SharepointFileTransfer.Test\
dotnet add package coverlet.collector
dotnet test --logger "trx;LogFileName=TestResults.trx" --results-directory $(Build.ArtifactStagingDirectory)/TestResults --collect:"XPlat Code Coverage"
- task: PublishCodeCoverageResults@2
inputs:
summaryFileLocation: '$(Build.ArtifactStagingDirectory)/**/*coverage.cobertura.xml'
failIfCoverageEmpty: false
- task: PublishTestResults@2
inputs:
testResultsFormat: 'VSTest'
testResultsFiles: '$(Build.ArtifactStagingDirectory)/TestResults/*.trx'
mergeTestResults: true
failTaskOnFailedTests: true
а затем я использовал AzureCliCredential для своего модульного теста для доступа к Azure AppConfiguration.
var builder = new ConfigurationBuilder();
builder.AddAzureAppConfiguration(options =>
{
var visualStudioCredential = new VisualStudioCredential(new VisualStudioCredentialOptions() { TenantId = TenantId });
var tokenCredential = new ChainedTokenCredential(visualStudioCredential, new AzureCliCredential(), new ManagedIdentityCredential());
options.Connect(new Uri(AppConfigurationEndpoint), tokenCredential)
.Select("SharepointFileTransfer:*", "dev");
});
Configuration = builder.Build();