Создание и тестирование приложений Ruby

Azure DevOps Services

В этой статье объясняется, как автоматически создавать проекты Ruby.

Создание Azure Pipelines

Чтобы настроить конвейер для приложения Ruby, выполните следующие действия.

  1. Войдите в свою организацию Azure DevOps и откройте нужный проект.

  2. Выберите Конвейеры>Новый конвейер.

  3. Выберите GitHub в качестве расположения исходного кода.

    Возможно, вам придется выполнить вход в GitHub. Для этого введите учетные данные GitHub.

  4. Выберите пример репозитория Ruby.

  5. Ruby Выберите шаблон для конвейера.

  6. Создается файл YAML. Выберите Сохранить и запустить>фиксацию непосредственно в ветвь main, а затем нажмите кнопку Сохранить и запустить еще раз.

  7. Дождитесь, пока он завершится.

В репозитории есть рабочий YAML-файл (azure-pipelines.yml), который можно настроить.

Совет

Чтобы внести изменения в ФАЙЛ YAML, как описано в этой статье, выберите конвейер на странице Конвейеры , а затем изменитеazure-pipelines.yml файл.

Среда сборки

Вы можете использовать Azure Pipelines для создания проектов Ruby без необходимости настраивать собственную инфраструктуру. Ruby предустановлен на агентах, размещенных в Microsoft , в Azure Pipelines. Для запуска сборок можно использовать агенты Linux, macOS или Windows.

Точные версии Ruby, которые предустановлены, см. в разделе Агенты, размещенные в Майкрософт. Чтобы установить определенную версию Ruby на агентах, размещенных в Майкрософт, добавьте задачу Использовать версию Ruby в начало конвейера.

Использование определенной версии Ruby

Добавьте задачу Использовать версию Ruby , чтобы задать версию Ruby, используемую в конвейере. Этот фрагмент добавляет Ruby 2.4 или более поздней версии в путь и задает последующие задачи конвейера для его использования.

# https://learn.microsoft.com/azure/devops/pipelines/ecosystems/ruby
pool:
  vmImage: 'ubuntu-latest' # other options: 'macOS-latest', 'windows-latest'

steps:
- task: UseRubyVersion@0
  inputs:
    versionSpec: '>= 2.5'
    addToPath: true

Установка Rails

Чтобы установить Rails, добавьте следующий фрагмент кода в azure-pipelines.yml файл.

- script: gem install rails && rails -v
  displayName: 'gem install rails'

Установка зависимостей

Чтобы использовать Bundler для установки зависимостей, добавьте следующий фрагмент кода в azure-pipelines.yml файл.

- script: |
    CALL gem install bundler
    bundle install --retry=3 --jobs=4
  displayName: 'bundle install'

Запуск rake

Чтобы выполнить Rake в контексте текущего пакета (как определено в файле Gemfile), добавьте следующий фрагмент в azure-pipelines.yml файл.

- script: bundle exec rake
  displayName: 'bundle exec rake'

Публикация результатов тестирования

Пример кода включает модульные тесты, написанные с помощью RSpec. Когда rake запускается на предыдущем шаге, он запускает тесты RSpec. RSpec RakeTask в Rakefile настроен для получения результатов в стиле JUnit с помощью RspecJUnitFormatter.

Добавьте задачу Публикация результатов теста , чтобы опубликовать результаты тестов в стиле JUnit на сервере. Вы получаете широкие возможности создания отчетов о тестах, которые можно использовать для устранения неполадок при любых неудачных тестах и для анализа времени тестирования.

- task: PublishTestResults@2
  condition: succeededOrFailed()
  inputs:
    testResultsFiles: '**/test-*.xml'
    testRunTitle: 'Ruby tests'

Публикация результатов покрытия кода

В примере кода используется SimpleCov для сбора данных о покрытии кода при выполнении модульных тестов. Приложение SimpleCov настроено для использования форматировщиков отчетов Cobertura и HTML.

Добавьте задачу Publish Code Coverage Results (Публикация результатов покрытия кода), чтобы опубликовать результаты покрытия кода на сервере. При этом метрики охвата можно увидеть в сводке по сборке, а отчеты HTML можно скачать для дальнейшего анализа.

- task: PublishCodeCoverageResults@1
  inputs:
    codeCoverageTool: Cobertura
    summaryFileLocation: '$(System.DefaultWorkingDirectory)/**/coverage.xml'
    reportDirectory: '$(System.DefaultWorkingDirectory)/**/coverage'

Создание образа и отправка в реестр контейнеров

Для приложения Ruby можно также создать образ и отправить его в реестр контейнеров.