Как настроить сборку и тестирование для Open Source проекта на Rust под Windows с помощью AppVeyor
Как зарегистрироваться на AppVeyor, подключить туда свой проект на Rust и сделать первую сборку.
Это цикл статей:
- Как настроить сборку и тестирование для Open Source проекта на Rust под Linux с помощью Travis
- Как настроить сборку и тестирование для Open Source проекта на Rust под Windows с помощью AppVeyor (эта статья)
Содержание
Требования
- Исходники проекта запушены на GitHub
Настройка простейшего проекта
В качестве примера здесь фигурирует репозиторий простейшей библиотеки hello, состоящей из одной функции и одного теста.
Регистрируемся на AppVeyor
Заходим на AppVeyor. Нажимаем Sign Up For Free
.
Открывается окно регистрации. Выбираем бесплатный тариф для проектов с открытыми
исходниками: в поле 1 - Plan
выбираем Free for open-source projects
. Если не
хотите получать от AppVeyor новости на почту, снимите галочку 2 - Subscribe to
company news and platform updates
. Затем нажмите на кнопку GitHub
, чтобы
войти на AppVeyor.
При желании можно зарегистрироваться по email, заполнив три поля справа.
После нажатия на кнопку GitHub
откроется окно авторизации AppVeyor. Нажимаем
Authorize AppVeyor
.
После этого GitHub может запросить пароль, чтобы подтвердить предоставление доступа AppVeyor.
После этого вы должны увидеть панель управления AppVeyor.
Если что-то пошло не так:
- Отключите блокировку кук и скриптов в браузере.
- Удалите куки.
- Отзовите у AppVeyor доступ к GitHub на странице настроек (кнопка Revoke).
- Попробуйте ещё раз.
Добавляем проект
Нажимаем New project
.
В окне добавления проекта слева (1
) выбираем расположение репозитория — в
нашем случае GitHub
. Если вы хотите подключить частный проект, выберите
Private and public repositories
справа (2
). Затем нажмите Authorize GitHub
(3
).
После авторизации GitHub на доступ к репозиториям ищем справа наш проект и
нажимаем кнопку Add
.
Теперь нужно настроить добавленный проект.
Добавляем appveyor.yml
AppVeyor не поддерживает Rust из коробки, поэтому нам придётся установить его самим.
Создаём в корне добавленного репозитория файл appveyor.yml
.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 | # Выбираем контейнер с необходимыми Rust компонентами os: Visual Studio 2015 # Устанавливаем Rust install: # Скачиваем rustup - appveyor DownloadFile https://win.rustup.rs/ -FileName rustup-init.exe # Устанавливаем стабильный Rust с MSVC ABI # Если хотите другую версию - замените stable на версию # Если хотите GNU ABI - замените x86_64-pc-windows-msvc на x86_64-pc-windows-gnu - rustup-init -yv --default-toolchain stable --default-host x86_64-pc-windows-msvc # Устанавливаем пути до компонентов Rust - set PATH=%PATH%;%USERPROFILE%\.cargo\bin # Выводим версии - rustc -vV - cargo -vV # Выключаем стандартный сборщик AppVeyor build: false # Используем специальный тестовый скрипт test_script: # Собираем - cargo build --verbose # Запускаем тесты - cargo test --verbose |
Коммитим его:
1 2 | $ git add appveyor.yml $ git commit -m "Добавляем AppVeyor" |
Пушим на GitHub
AppVeyor запускает сборки по пушу в репозиторий. Когда мы запушим наш коммит с
appveyor.yml
, начнётся первая сборка. Сделаем это:
1 | $ git push
|
и идём в панель управления AppVeyor. Находим там слева наш проект, кликаем по нему.
Обычно нужно немного подождать, прежде чем начнётся сборка — в пределах минуты.
Когда сборка запустится, вы увидите логи внизу:
AppVeyor собирает проект и запускает его тесты, аналогично тому, как это делается на локальной машине.
Весь процесс занимает примерно 2 минуты для простейшего проекта.
Вот как выглядит страница сборки для моей библиотеки hello.
Если навести курсор на строку лога, во всплывающей подсказке будет показано, в какое время от начала сборки была выполнена эта команда.
Чтобы получить полный лог в виде текстового файла, кликните по Log
справа
вверху, над логом.
Настраиваем уведомления по почте
Чтобы AppVeyor отправлял статус сборки по почте, настроим это в appveyor.yml
.
1 2 3 4 5 6 7 8 9 10 11 12 | notifications: - provider: Email # Список адресов to: - user1@host.com - user2@host.com # Отправлять ли письмо в случае успеха? on_build_success: false # Отправлять ли письмо в случае провала? on_build_failure: true # Отправлять ли письмо когда статус изменился? on_build_status_changed: true |
Настраиваем кэширование
Есть смысл кэшировать директорию с реестром cargo и директорию сборки проекта.
appveyor.yml
1 2 3 | cache: - '%USERPROFILE%\.cargo' - target |
Добавляем индикатор статуса сборки
Формат URL для получения индикатора такой:
1 | https://ci.appveyor.com/api/projects/status/{github|bitbucket}/{repository}
|
Для hello URL будет такой:
1 | https://ci.appveyor.com/api/projects/status/github/mkpankov/hello
|
Добавляем его в качестве картинки в README.md
.
1 | [![Build Status](https://ci.appveyor.com/api/projects/status/github/mkpankov/hello)](https://ci.appveyor.com/api/projects/status/github/mkpankov/hello) |
Результат:
Готово!
Мы настроили сборку и тестирование проекта на Rust на AppVeyor. Он будет тестироваться на каждый пуш в репозиторий.
Продвинутые возможности
Выбор версии Rust
Измените спецификатор версии в вызове rustup-init
:
appveyor.yml
1 | - rustup-init -yv --default-toolchain nightly-2017-05-09 --default-host x86_64-pc-windows-msvc |
Тестирование с несколькими версиями
Можно добавить матричную конфигурацию. При этом можно разрешить провалы сборок на nightly-версиях компилятора.
appveyor.yml
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 | ... environment: matrix: - channel: stable target: x86_64-pc-windows-msvc - channel: stable target: x86_64-pc-windows-gnu - channel: nightly target: x86_64-pc-windows-msvc - channel: nightly target: x86_64-pc-windows-gnu matrix: allow_failures: - channel: nightly install: - appveyor DownloadFile https://win.rustup.rs/ -FileName rustup-init.exe - rustup-init -yv --default-toolchain %channel% --default-host %target% - set PATH=%PATH%;%USERPROFILE%\.cargo\bin - rustc -vV - cargo -vV ... |
На этом всё. Успешных сборок!
Другие статьи цикла:
- Как настроить сборку и тестирование для Open Source проекта на Rust под Linux с помощью Travis
- Как настроить сборку и тестирование для Open Source проекта на Rust под Windows с помощью AppVeyor (эта статья)