Прочитать на английском

Поделиться через


DevOps с приложениями Unity

Разработка приложений для современных платформ включает в себя гораздо больше действий, чем просто написание кода. Эти действия, называемые DevOps (разработка и операции), охватывают полный жизненный цикл приложения и включают планирование и отслеживание работы, проектирование и реализацию кода, управление репозиторием исходного кода, выполнение сборок, управление непрерывными интеграции и развертываниями, тестирование (включая модульные тесты и тесты пользовательского интерфейса), выполнение различных форм диагностики в средах разработки и рабочей среды, а также мониторинг производительности приложения и поведения пользователей в реальном времени с помощью телеметрии и аналитика.

Visual Studio вместе с Azure DevOps Services и Team Foundation Server предоставляет различные возможности DevOps. Многие из них применимы к кроссплатформенным проектам, включая игры и иммерсивные графические приложения, созданные с помощью Unity, особенно при использовании C# в качестве языка сценариев. Однако, поскольку Unity имеет собственную среду разработки и подсистему выполнения, ряд функций DevOps не применяются так, как это было бы для других типов проектов, созданных в Visual Studio.

В следующих таблицах описано, как функции DevOps в Visual Studio применяются или не применяются при работе с Unity. Дополнительные сведения о самих функциях см. в связанной документации.

Гибкие инструменты

Справочная ссылка: о средствах Agile и управлении проектами с использованием Agile (с помощью Azure Boards или TFS, включая Team Explorer Everywhere)

Общие комментарии: все функции планирования и отслеживания не зависят от типов проектов и языков программирования.

Особенность Поддерживается с помощью Unity Дополнительные комментарии
Управление невыполненной работой и спринтами Да
Отслеживание работы Да
Совместная работа в комнате группы Да
Канбан-доски Да
Отчет и визуализация хода выполнения Да

Моделирование

Справочная ссылка: архитектура анализа и модели

Общие комментарии. Хотя эти функции проектирования являются независимыми от языка программирования или работают с языками .NET, такими как C#, они работают с традиционной парадигмой приложения с иерархиями объектов и связями классов. Проектирование игры в Unity включает в себя другую парадигму в целом, а именно отношения графических объектов, звуков, шейдеров, сценариев и т. д. По этой причине средства моделирования Visual Studio не особенно важны для всего проекта Unity. Они могут использоваться для управления связями в скриптах C#, но это только одна часть всего.

Особенность Поддерживается с помощью Unity Дополнительные комментарии
Схемы последовательностей Нет
Графы зависимостей Нет
Иерархия вызовов Нет
Конструктор классов Нет
Обозреватель архитектуры Нет
Схемы UML (вариант использования, действие, класс, компонент, последовательность и DSL) Нет
Схемы слоев Нет
Проверка слоя Нет

Код

Особенность Поддерживается с помощью Unity Дополнительные комментарии
использовать систему управления версиями Team Foundation (TFVC) или Azure Repos Да Проекты Unity — это просто коллекция файлов, которые можно поместить в системы управления версиями, как и любой другой проект, но в этой таблице описано несколько специальных рекомендаций.
Начало работы с Git в Azure Repos Да См. заметки после таблицы.
улучшение качества кода Да
Поиск изменений кода и другой истории Да
Использование карт кода для отладки приложений Да

Особые рекомендации по управлению версиями с помощью Unity:

  1. Unity отслеживает метаданные о игровых ресурсах в одной непрозрачной библиотеке, скрытой по умолчанию. Чтобы сохранить файлы и метаданные в синхронизации, необходимо сделать метаданные видимыми и хранить их в более управляемых блоках. Дополнительные сведения см. в статье Использование внешних систем управления версиями в Unity документация по Unity.

  2. Не все файлы и папки в проекте Unity подходят для управления версиями, как описано в приведенной выше ссылке. Папки Assets и ProjectSettings должны быть добавлены, но папки Library и Temp не должны быть. Дополнительный список созданных файлов, которые не будут использоваться в системе управления версиями, см. в разделе Как использовать Git для системы управления версиями Unity3D? в Stack Overflow. Многие разработчики также писали блоги на эту тему независимо.

  3. Двоичные ресурсы в проекте Unity (например, текстуры или звуковые файлы) могут занимать большое количество памяти на диске. Различные системы управления версиями, такие как Git, хранят уникальную копию файла для каждого изменения, даже если изменение влияет только на небольшую часть файла. Это может привести к тому, что репозиторий Git раздуется. Для решения этой проблемы разработчики Unity часто выбирают добавление только конечных ресурсов в свой репозиторий и используют разные средства хранения рабочей истории своих ресурсов, таких как OneDrive, DropBox или git-приложение. Этот подход работает, так как такие ресурсы, как правило, не нуждаются в версионировании вместе с изменениями исходного кода. Разработчики также обычно устанавливают режим сериализации активов редактора проекта для принудительного хранения файлов сцен в текстовом формате, а не в двоичном формате, что позволяет объединяться в системе управления версиями. Дополнительные сведения см. в параметрах редактора (документация по Unity).

Строить

Ссылка для справки: Azure Pipelines

Особенность Поддерживается с помощью Unity Дополнительные комментарии
Локальный сервер Team Foundation Server (TFS) Возможный Проекты Unity создаются через среду Unity, а не через систему сборки Visual Studio (сборка в Visual Studio Tools for Unity компилирует скрипты, но не создает исполняемый файл). Можно создавать проекты Unity из командной строки (документация по Unity), поэтому можно настроить процесс MSBuild на сервере TFS для выполнения соответствующих команд Unity, если на этом компьютере установлена сама Unity.

Unity также предлагает Unity Cloud Build, которая отслеживает репозиторий Git или SVN и выполняет периодические сборки. В настоящее время он не работает с TFVC или Azure DevOps Services.
Локальный сервер сборки, связанный с Azure DevOps Services Возможный Учитывая те же условия, что и выше, можно направлять сборки, инициированные с помощью Azure DevOps Services, для использования локального сервера TFS. См. агенты сборки и выпуска для инструкций.
Служба хостинга контроллера Azure DevOps Services Нет Сборки Unity в настоящее время не поддерживаются.
Создавайте определения с префиксами и постфиксами Да Настраиваемое определение сборки, использующее командную строку Unity для запуска сборки, также можно настроить для скриптов до и после сборки.
Непрерывная интеграция, включая входные входы Да Управляемые изменения только для TFVC, поскольку Git использует модель pull request вместо фиксирования изменений.

Тест

Особенность Поддерживается с помощью Unity Дополнительные комментарии
Планирование тестов, создание тестовых вариантов и организация наборов тестов Да
Тестирование вручную Да
Диспетчер тестов (тесты записи и воспроизведения) Только устройства Windows и эмуляторы Android
Покрытие кода n/a Неприменимо, так как модульное тестирование происходит в Unity, а не в Visual Studio, см. ниже.
Протестируйте модульно ваш код В Unity, но не в Visual Studio Unity предоставляет собственную платформу модульного тестирования в рамках средств тестирования Unity (Unity Asset Store). Результаты модульного теста передаются в Unity и не будут отображаться в Visual Studio.
Автоматизация пользовательского интерфейса для тестирования кода Нет Закодированные тесты пользовательского интерфейса используют доступные для чтения элементы управления в пользовательском интерфейсе приложения; Приложения Unity являются графическими в природе, поэтому содержимое недоступно для чтения средствами тестирования закодированного пользовательского интерфейса.

Улучшение качества кода

Ссылка на ссылку: Улучшить качество кода

Особенность Поддерживается с помощью Unity Дополнительные комментарии
Анализ качества управляемого кода Да Может анализировать код скрипта C# в Visual Studio.
Поиск дубликата кода с помощью обнаружения клона кода Да Может анализировать код скрипта C# в Visual Studio.
измерять сложность и поддерживаемость управляемого кода Да Может анализировать код скрипта C# в Visual Studio.
инструменты производительности Нет Используйте профилировщик Unity (веб-сайт Unity).
Анализ проблем с памятью .NET Framework Нет Средства Visual Studio не имеют перехватчиков в платформу Mono (как используется Unity) для профилирования. Используйте профилировщик Unity (см. документацию Unity).

Управление выпусками

Справочная ссылка: сборка и выпуск в Azure Pipelines и TFS

Особенность Поддерживается с помощью Unity Дополнительные комментарии
Управление процессами выпуска Да
Развертывание на серверах для параллельной загрузки с помощью скриптов Да
Отправка в магазин приложений Частичный Расширения доступны, которые могут автоматизировать этот процесс для некоторых магазинов приложений. См. расширения для Azure DevOps Services; например, расширение для Google Play.

Мониторинг с помощью HockeyApp

Справочная ссылка: Монитор с HockeyApp

Особенность Поддерживается с помощью Unity Дополнительные комментарии
Аналитика сбоев, телеметрия и распространение бета-версий Да HockeyApp в основном полезна для обработки бета-дистрибутива и получения отчетов о сбоях.

Для телеметрии из скриптов C# можно использовать любую платформу аналитики, при условии, что она работает на версии .NET, которая используется в Unity. Однако это позволяет анализировать только в игровых сценариях, а не более глубоко внутри подсистемы Unity. В настоящее время для Application Insights нет подключаемого модуля, но подключаемые модули доступны для других решений аналитики, таких как Unity Analytics и Google Analytics. Службы, такие как Аналитика Unity, которые понимают характер проекта Unity, конечно, обеспечивают гораздо более значимый анализ, чем универсальные платформы.