Как удобно разместить актуальную документацию ящика?
Я недавно опубликовал свой первый ящик на crates.io, и мне интересно, смогу ли я поддерживать его документацию проще.
Довольно много документов ящиков размещено на страницах GitHub, поэтому я подумал, что смогу это сделать. Я создал репозиторий user.github.io, сгенерировал документы с cargo doc
и подтолкнул их к этому. Все работало просто отлично, документы можно посмотреть с crates.io.
Однако их обновление неудобно; если я изменю документацию ящика, мне нужно:
- протолкнуть эти изменения в репо ящика
- создавать обновленные документы с помощью
cargo doc
- переместите файлы документов в папку на странице GitHub
- подтолкнуть документы к репо документации
Я уверен, что я делаю это неправильно - особенно пункт 3. Что я могу сделать, чтобы упростить этот процесс? Есть ли лучший способ?
1 ответ
Docs.rs является хорошим решением для многих ящиков. Он описывает себя как:
Docs.rs (ранее cratesfyi) - проект с открытым исходным кодом, на котором размещается документация ящиков для языка программирования Rust.
Docs.rs автоматически создает документацию крейтов, выпущенную на crates.io, используя ночной выпуск компилятора Rust.
Это имеет компромиссы:
- Документация автоматически генерируется и размещается для вас, вам даже не нужно регистрироваться.
- Документация для каждой версии вашего ящика доступна.
- Если у вас есть условная компиляция для конкретной платформы, может быть показана документация для разных платформ.
- Только выпущенные версии ваших ящиков будут документированы. Вы не можете опубликовать опечатку в документации без нового выпуска.
- Вы обязаны стороннему лицу продолжать предоставлять эту услугу.
- Вы не можете (в настоящее время?) Контролировать, какие флаги функций используются.
Некоторые люди предпочитают больше контролировать свою документацию или не попадают в целевую аудиторию Docs.rs. Многие из этих случаев предпочитают конфигурировать свою инфраструктуру CI, чтобы генерировать документацию и куда-то выдвигать результат.
Распространенной реализацией этого является использование Travis CI и GitHub Pages, так как многие проекты уже используют эти сервисы. Можно использовать любую систему CI и хостинг HTML, если вам удобно соединять их.
Общая концепция:
- Добавьте шаг для создания документации в CI.
- При обнаружении определенного типа сборки отправьте сгенерированную документацию на хостинг.
- Возможные варианты для типа сборки: любая ветка; мастер ветка; тег; и т.п.
- Будьте осторожны, чтобы не подвергать никаким учетным данным. Распространенной ошибкой (которую я сделал сам) является использование такой команды, как
git push https://${GH_TOKEN}@github.com/...
, Если эта команда не выполняется, токен печатается в stderr, открывая его для всего мира. Другие менее очевидные случаи также выставляют токен при неудаче, поэтому проверьте его тщательно.
Некоторые люди публикуют сообщения в блогах, подробно описывающие их настройку. Я не проверял, что все это вменяемое, но они могут содержать детали, которые помогут вам настроить конкретное решение.