Nano Hash - криптовалюты, майнинг, программирование

Цель MSBuild должна отличаться при работе в конвейере Azure DevOps.

Я определил, что MSBuild запускает модульные тесты и метрики после сборки:

<Target Name="AfterBuild" DependsOnTargets="RunUnitTests;RunCodeMetrics;StageFiles"/>

но если сборка запускается из Azure DevOps (также известного как VSTS), тесты и метрики определяются как отдельные шаги. Как мне определить цели в зависимости от того, где будет запускаться MSBuild?


  • Если вы работаете в VSTS, я бы предпочел использовать встроенные задачи для запуска тестов вместо того, чтобы скрывать все это в одном скрипте msbuild. Встроенная задача автоматически собирает результаты тестов обратно в информацию о сборке для удобного просмотра. 28.11.2018
  • Помимо этого, в msbuild есть подход к переопределению целей, основанный на последнем определенном выигрыше. Вы можете создавать целевые файлы на основе вашей среды, которые переопределяют определенные цели. Итак, в dev вы можете импортировать dev.targets, который определяет цели для RunUnitTests, RunCodeMetrics и StageFiles. 28.11.2018
  • Другой вариант - запустить их как отдельные шаги msbuild в рамках выполнения VSTS. Используйте / t: RunUnitTests в одном, / t: RunCodeMetrics в другом и / t: StageFiles в другом. 28.11.2018

Ответы:


1

В конечном итоге в моем целевом файле было это условие:

<Target Name="AfterBuild" Condition="'$(AzureDevOps)' != 'true'" DependsOnTargets="RunUnitTests;RunCodeMetrics;StageFiles" />
<Target Name="AfterBuild" Condition="'$(AzureDevOps)' == 'true'" DependsOnTargets="StageFiles"/> 

Когда сборка запускается из облака, добавляется аргумент MSBuild:

/p:AzureDevOps=true
05.12.2018
  • Переменная окружения TF_BUILD доступна по умолчанию. Для этого не нужно передавать аргумент через команду сборки. docs.microsoft.com/en-us/azure/devops/pipelines/build/ 25.02.2021
  • Новые материалы

    Кластеризация: более глубокий взгляд
    Кластеризация — это метод обучения без учителя, в котором мы пытаемся найти группы в наборе данных на основе некоторых известных или неизвестных свойств, которые могут существовать. Независимо от..

    Как написать эффективное резюме
    Предложения по дизайну и макету, чтобы представить себя профессионально Вам не позвонили на собеседование после того, как вы несколько раз подали заявку на работу своей мечты? У вас может..

    Частный метод Python: улучшение инкапсуляции и безопасности
    Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

    Как я автоматизирую тестирование с помощью Jest
    Шутка для победы, когда дело касается автоматизации тестирования Одной очень важной частью разработки программного обеспечения является автоматизация тестирования, поскольку она создает..

    Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
    Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

    Понимание расстояния Вассерштейна: мощная метрика в машинном обучении
    В обширной области машинного обучения часто возникает необходимость сравнивать и измерять различия между распределениями вероятностей. Традиционные метрики расстояния, такие как евклидово..

    Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
    В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..