Github о стероидах [видео]

В этой статье я хотел бы поделиться своими советами о том, как улучшить ваш репозиторий Github, в основном, как добавить ему «стероидов». Я расскажу о таких аспектах, как использование шаблонов, отчета о покрытии в проектах и ​​пакетах Github, о том, как улучшить скорость сборки CI и, наконец, о том, как лучше документируйте свой код.

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

Шаблоны

Первым примером могут быть шаблоны PR. Вы можете спросить, что это мне дает? Что ж, использование шаблонов для создания PR на Github не только документирует вашу работу и то, о чем ваш код, но также ясно показывает, что ваше понимание функции соответствует требованиям клиентов к тем, кто смотрит на ваш запрос на вытягивание.

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

Не забывайте, что шаблоны позволяют прикреплять даже превью видео, которые могут помочь вашему QA-члену команды увидеть, как работает продукт, над которым вы работаете, экономя время и вас, и вашего клиента.

Совсем недавно Github позволил создавать шаблоны для каждого типа проблем, которые создаются в вашем репозитории, что очень удобно, особенно для приложений с открытым исходным кодом, где для обслуживания требуется некоторая структура или шаблон для решения проблем, чтобы избежать повторения вопросов. например, «Можете ли вы дать мне какой-то контекст этой проблемы?». С шаблонами вы помещаете все в шаблон задачи, и когда кто-то хочет создать задачу, он должен заполнить шаблон, отвечая на некоторые вопросы. Это простое решение наведет порядок в вашем репозитории.

Покрытие

Когда дело доходит до покрытия, проверяет ли кто-нибудь из вас регулярно покрытие спецификаций своих сборок? Раньше мы использовали Cane gem, который автоматически проверял это, поэтому в сочетании с Simplecov, по крайней мере, в проектах Ruby, вы знали, ниже ли охват вашей спецификации, чем для Например, 90%, однако, было наиболее полезным для статистических целей. На Github marketplace доступны лучшие приложения (например: CodeCov), которые имеют гораздо лучшие функции отчетов, такие как отчеты даже по новым изменениям, которые были внесены в ваш проект, поэтому на каждой итерации вы можете увидеть, какой файл не был рассмотрен, поскольку отчеты делают это за вас.

Обновления

Еще один инструмент, который стоит рассмотреть - Greenkeeper, который занимается обновлением вашего проекта. Нам часто приходится помнить о том, чтобы сохранять все как можно более свежим, и обычно мы делаем это вручную, но не более того. Как только инструмент будет связан с вашим репозиторием Github, он будет автоматически создавать запросы на вытягивание при каждом обновлении пакетов, которые вы используете. Что замечательно в этом решении, так это то, что если у вас есть хорошие тесты или покрытие спецификаций, оно будет выполнять проверки за вас, поэтому, как только версия ваших пакетов будет автоматически изменена, и вы будете доверять своим спецификациям, у вас будет готовый к слиянию запрос на перенос.

Скорость CI

Давайте на секунду поговорим о скорости. Не так давно у нас был проект, сборка которого заняла около часа, что очень расстраивало. Я поспрашивал в своей компании и предложил решение под названием Knapsack gem, которое разделяет вашу сборку на две или более отдельных сборки, что сокращает время сборки.

Журнал изменений

Хорошо, а как насчет изменений в нашем репозитории? О чем мы должны помнить, так это о том, чтобы следовать каким-то правилам, чтобы сделать инструмент изменений действительно полезным. Мы не должны создавать вводящие в заблуждение имена запросов на вытягивание. Все, что вам нужно сделать, это использовать гем под названием github-changelog-generator, который будет регенерировать ваш журнал изменений на основе объединенных запросов на вытягивание, проблем и выпусков. Мы запускаем всего одну команду и восстанавливаем полный журнал изменений. Также есть альтернатива этому методу - Lerna-changelog, основанная на ваших ярлыках. Он добавляет причудливые значки в ваш журнал изменений, а также статистику, кто в конце является коммиттерами. Это очень полезно, если вы поддерживаете библиотеки с открытым исходным кодом.

Документация

Переходим к последней проблеме этой статьи - документации кода. Я знаю, что это не самое интересное, но с точки зрения библиотек это необходимо. Благодаря inch-ci.org вы можете получить значок, который сообщает вам, какова охват вашей библиотеки с точки зрения документации. Он также может дать вам довольно хорошие предложения (аналогичные тому, что делают линтеры), и я настоятельно рекомендую использовать его, особенно в библиотеках.

Бонус: видео и слайды

Взгляните на слайды и видео с моей презентации (мероприятие @ Selleo Haxorz в июле 2018 г.):

Заключение

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

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

Не стесняйтесь делиться своими мыслями в комментариях ниже, подписывайтесь на меня на Medium, подписывайтесь на YouTube и не забывайте распространять информацию.