Во время разработки нашего инструмента для маркировки функций Bullet Train мы дошли до того, что фактически использовали Bullet Train для разработки Bullet Train, чтобы мы могли непрерывно интегрироваться во время непрерывной интеграции.
Мы разработали Bullet Train с верой в то, что непрерывная интеграция – это то, к чему должны стремиться все команды разработчиков. Флаги функций и удаленная конфигурация могут оказать огромную помощь в достижении цели CI, особенно в производстве. Итак, следуя этому убеждению и чтобы избежать лицемерия, мы использовали его преимущества для CI для разработки самого инструмента.
Bullet Train – это проект с открытым исходным кодом, который позволяет отделять выпуск и настройку функций от кода. Вы можете управлять флагами функций и удаленной конфигурацией на нескольких языках в веб-, мобильных и серверных приложениях.
Использование CI и скоростного поезда – это не решение “все или ничего”
Разработчики часто рассматривают переход к непрерывной интеграции как решение “все или ничего”, но это не обязательно должно быть так. CI можно использовать в любой момент вашего проекта, используя флаги функций для развертывания в рабочей среде на основе отдельных функций.
Отличным примером, демонстрирующим это, является то, как мы начали использовать Bullet Train на самом себе. Мы выпустили первоначальную бета-версию в июне 2018 года. Сразу после выпуска мы начали работу над функцией “забыли пароль”.
На данный момент проект был стабильным, у нас были сквозные тесты с использованием Ночной дозор это выполнялось с каждым коммитом, который мы нажимали, так что мы были в отличном месте, чтобы начать использовать непрерывную интеграцию. Это точные записанные шаги, которые мы предприняли для создания проекта и интеграции новой функции “Забыли пароль” с Bullet Train.
Шаг 1: Регистрация
Мы создали учетную запись на https://bullet-train.io .
Шаг 2: Создание проекта
Шаг 1 автоматически создал организацию под названием Bullet Train и добавил меня в качестве участника. Следующим шагом было создание проекта.
Шаг 3: Создан флаг функции для “забыли пароль”
Bullet Train автоматически создает среду разработки и производства для вновь созданных проектов. Мы создали флаг функции под названием forgot_password.
Шаг 4: Интеграция
На данный момент у нас была функция “забыли пароль”, которая была отключена как в нашей среде разработки, так и в производственной среде. Следующим шагом было использование JavaScript SDK для отображения/скрытия функции “Забыли пароль”.
Как только я создал эту функцию, мне была предоставлена пара фрагментов кода для установки и интеграции в наш код.
Конечно, то, как вы это интегрируете, зависит от вас. В нашем случае у нас было приложение React и хранилище Flux, которое транслировалось при изменении флагов функций. Наконец, на нашей домашней странице будет отображаться ссылка “Забыли пароль” в зависимости от того, какой скоростной поезд вернулся. Вы можете увидеть фиксацию для этого процесса здесь здесь
Использование флагов функций означало, что я мог выпустить эту функцию в производство как есть, не задерживая другие разработки.
Шаг 5: Включение функции
С моей новой функцией “забыл пароль” в рабочей среде все, что мне нужно было сделать, это включить ее, чтобы ее можно было развернуть по всему миру. Как только я включил функцию “Забыли пароль” на панели мониторинга, я смог увидеть ее на сайте.
Как это нам поможет?
Люди, которые не привыкли к непрерывной интеграции, могут задаться вопросом: почему я просто не выпустил эту функцию, как обычно? Некоторые из причин того, что флаги функций являются таким хорошим подходом:
- Это позволило мне перейти к обеспечению непрерывной интеграции для производства. Каждый коммит, который передается в мастер, теперь автоматически переходит в рабочую среду.
- Он предоставляет возможность тестировать код в рабочей среде с постепенным/целенаправленным внедрением для конкретных пользователей.
- Это позволяет нетехническим членам команды управлять выпусками функций.
- Это позволяет проводить тестирование функций на ранней стадии с использованием обновленной кодовой базы. CI означает, что мы постоянно тестируем функции в очень близком представлении к тому, что работает в производстве.
- Это позволяет вам внедрять бета-версии программ, чтобы получить раннюю обратную связь от пользователей.
- Это уменьшает необходимость отката кода с возможностью удаленного отключения функций в случае чрезвычайной ситуации.
Счастливого Развития!
Оригинал: “https://dev.to/kylessg/using-our-continuous-integration-tool-to-continuously-integrate-our-continuous-integration-tool-412g”