Найти в Дзене
xUnit v3, Azure DevOps, и отчеты по тестам
Как всегда, ничего не предвещало. Я всего-то хотел встроить модульные тесты xUnit в конвейер сборки Azure DevOps. Тут-то все и началось.... Отличные тесты у xUnit, никаких вопросов. Все было замечательно, пока я не попробовал их гонять через dotnet test. Запускаем, для начала, в консоли, смотрим на отличный результат. Здорово! А теперь мне, пожалуйста, отчетик. Фиг тебе, сказал dotnet test. Точнее, просто молча проигнорировал все параметры на эту тему. Создал лог выполнения в каталоге TestResults, причем не там, где я просил, а в размещении по умолчанию. И на этом все. Ладно, я решил попробовать запустить dotnet test непосредственно для готовой сборки...
1 неделю назад
Git: branch & push
# создаем ветку локально git branch branch-name # передаем ее в удаленный репозиторий и связываем локальную ветку с удаленной git push origin -u branch-name
1 неделю назад
Git: кое-что про cherry-picking
Короче, вышло так: checkout branch-name # Смотрим, что тут у нас по общим коммитам git cherry -v branch-name other-branch-name # Выдергиваем себе нужный коммит git cherry-pick id-commit # Тут будет интерактивная работа, примерно как с rebase
2 недели назад
Git rebase / squash: Склеиваем коммиты в ветке в 1 коммит
Вот внезапно я решил в ветке убрать много мелких коммитов, возникших из-за разных ошибок. Делаем примерно так: git checkout branch-name # указываем коммит, в который все будет сливаться (остальные в истории должны быть расположены позже) git rebase -i commit-id # указываем в редакторе последовательность команд, сохраняем и выходим, следим за подсказками и сообщениями # можно и --force, но --force-with-lease вроде не позволит убить коммиты, что...
2 недели назад
Git: переименование ветки
Есть как минимум 2 немного различающихся способа. Что попроще, выглядит так: # Switch to the branch you want to rename git checkout old-branch # Rename the branch locally git branch -m new-branch # Delete the old remote branch git push origin --delete old-branch # Push the renamed branch to the remote repository git push...
2 недели назад
Azure DevOps YAML pipeline и вычисление с условиями значения переменной
Выглядит это, например, так: - name: branchTypeVersion value: $[iif(eq(variables['Build.SourceBranchName'], 'main'), 0, iif(eq(variables['Build.SourceBranchName'], 'development'), 1, 2))] Видите перенос строк в выражении $[]? Так вот - его быть в YAML не должно! Ну а так принцип, полагаю, понятен...
2 недели назад
Azure DevOps YAML pipeline и библиотечные переменные
Как говорится, пустячок - а нервы попортил. Было: variables: majorVersion: 1 minorVersion: 0 branchTypeVersion: 1 # 0 = production, 1 = development Стало: variables: - group: network-disks-access - name: majorVersion value: 1 - name: minorVersion value: 0 # 0 = production (main), 1 = development - name: branchTypeVersion value: 1 Стоило добавить ссылку на группу - и, вуаля, формат описания переменных поменялся...
2 недели назад
Azure DevOps YAML pipeline и сетевые диски
Немного неудобно, но в некоторых случаях весьма полезно. Итак: - task: CmdLine@2 displayName: 'Подключаем сетевой диск сборок' inputs: script: 'if not exist "O:" net use O: \\***\***** %GGITVALUE% /user:****' env: GGITVALUE: $(SecretValue) $(SecretValue) - "секретная" переменная, устанавливается, например, через кнопку "Variables" pipeline. Содержит пароль к сетевой папке, хранится зашифрованной...
2 недели назад
Azure DevOps YAML pipeline и номер версии (Build.BuildNumber)
Так сказать, простой рецепт этот номер установить (один из вариантов, на самом деле). Итак, берем и указываем переменные: variables: majorVersion: 1 minorVersion: 0 branchTypeVersion: 1 # 0 = production, 1 = development Теперь, небольшой, необязательный, но полезный фокус: revisionVersion: $[counter(format('{0}.{1}.{2}', variables['majorVersion'], variables['minorVersion'], variables['branchTypeVersion']), 1)] Получаем требуемый мне и самостоятельно работающий счетчик. Более подробно - где-то здесь: https://learn.microsoft.com/ru-ru/azure/devops/pipelines/process/expressions?view=azure-devops Теперь - обновим системную переменную $(Build...
2 недели назад
MS SQL, EF Core 8 и ошибка подключения из-за проблем с сертификатом
Первый раз вижу такой прикол при попытке подключения из Update-Database: A connection was successfully established with the server, but then an error occurred during the login process. (provider: SSL Provider, error: 0 - Цепочка сертификатов выпущена центром сертификации, не имеющим доверия.). Оно же полностью на английском: A connection was successfully established with the server, but then an error occurred during the login process. (provider: SSL Provider, error: 0 - The certificate chain was issued by an authority that is not trusted.) (.Net SqlClient Data Provider)...
1 месяц назад
.NET Core: метрики, встроенные метрики, и Open Telemetry
В общем, пытался я тут разобраться с работой метрик вообще и встроенных метрик в частности - в рамках .NET Generic Host (.NET Core 8) и с использованием HostApplicationBuilder. А, и с использованием Open Telemetry, с передачей метрик в Open Telemetry Collector. С логами-то у меня проблем было куда как меньше. А вот метрики.... .WithMetrics(metricsBuilder => metricsBuilder .AddMeter("System.Runtime"). ... Вот вообще ни одного примера на эту тему не нашел. 4. Зато отлично заработал метод из пакета OpenTelemetry...
4 месяца назад
Сбор и передача логов универсального узла Net Core (NET 8 Generic Host) с помощью Open Telemetry (OTLP)
Показываю пробную версию кода - он работает, но, скорее всего, его придется обернуть в какой-нибудь отдельный метод. Да и сервис Worker тут используется исключительно для ручного тестирования работоспособности кода. HostApplicationBuilder builder = Host.CreateApplicationBuilder(args); // настройка логирования и передачи метрик через Open Telemetry if ((!builder.Environment.IsDevelopment()) || Environment.GetEnvironmentVariable("DEV_HIDE_CONSOLE_OUTPUT") == "true") builder.Logging.ClearProviders();...
4 месяца назад