27 KiB
Операции разработчиков на freeCodeCamp.org
Это руководство поможет вам понять наш стек инфраструктуры и как мы поддерживаем наши платформы. Хотя это руководство не имеет исчерпывающих деталей для всех операций, оно может быть использовано в качестве справочной информации для вашего понимания систем.
Дайте нам знать, если у вас есть обратная связь или запросы, и мы будем рады уточнить.
Как мы собираем, тестируем и развертываем кодовую базу?
Этот репозиторий постоянно строится, тестируется и развернут в отдельных наборов инфраструктуры (серверов, баз данных, CDN и т.д.).
Это включает в себя три шага, которые должны выполняться последовательно:
- Новые изменения (как исправления, так и функции) объединены в нашу ветку основного развития (
master) с помощью запросов на слияние. - Эти изменения проводятся через серию автоматизированных тестов.
- После прохождения тестов мы выпускаем изменения (или их обновить) для развертывания в нашей инфраструктуре.
Building the codebase - Mapping Git Branches to Deployments.
Обычно master (ветка разработки по умолчанию) объединяется в ветку стадии производства раз в день и отпускается в изолированную инфраструктуру.
Это промежуточный релиз для наших разработчиков и добровольцев. Он также известен как наш "staging" или "beta" релиз.
Это идентично нашей живой среде производства на freeCodeCamp.org, за исключением того, что он использует отдельные базы данных, серверы, веб-прокси и т.д. Эта изоляция позволяет нам тестировать текущие разработки и возможности в "производстве", как сценарий, не затрагивая обычных пользователей платформ freeCodeCamp.org. Эта изоляция позволяет нам тестировать текущие разработки и возможности в "производстве", как сценарий, не затрагивая обычных пользователей платформ freeCodeCamp.org.
После того, как команда разработчиков @freeCodeCamp/dev-team доволена изменениями на стартовой платформе, эти изменения перемещаются каждые несколько дней в производственно-текущую ветвь ветку.
Это окончательный релиз, который перемещает изменения в наши производственные платформы на freeCodeCamp.org.
Тестирование изменений - Интеграция и Проверка приемки пользователей.
Мы используем различные уровни интеграции и приемки для проверки качества кода. Все наши тесты выполняются с помощью таких программ, как Travis CI и Трубопроводов Лазурного берега.
У нас есть модульные тесты для тестирования наших решений, серверных API и пользовательских интерфейсов клиентов. Это помогает нам протестировать интеграцию между различными компонентами.
[!ПРИМЕЧАНИЕ] Мы также находимся в процессе написания тестов конечных пользователей, которые помогут воспроизвести сценарии реального мира, такие как обновление электронной почты или вызов API или сторонних сервисов.
Вместе эти тесты помогают избежать повторения проблем и убедиться, что мы не вводим ошибку во время работы над другой ошибкой или функцией.
Развертывание изменений - Передача изменений серверам.
Мы настроили программное обеспечение для непрерывной доставки, чтобы изменения в наших разработках и производственных серверах.
После того, как изменения вносятся в защищенные ветки релиза, для ветки автоматически запускается трубопровод сборки. Строительные трубопроводы отвечают за строительство артефактов и их хранение в холодное хранилище для последующего использования.
Спусковая линия сборки продолжает запускать соответствующий релиз трубопровода, если завершит успешный запуск. Релизующие трубопроводы отвечают за сбор артефактов, их перемещение на серверы и проживание.
Статус сборок и релизов доступен здесь.
Запуск сборки, теста и развертывания.
В настоящее время только члены команды разработчиков могут толкнуть в производственные ветви. Изменения в продукции-* ветках могут высадиться только быстрым прямым слиянием с выше.
[!ПРИМЕЧАНИЕ] В предстоящие дни мы улучшили бы этот поток по запросам для улучшения управления доступом и прозрачности.
Отправка изменений в отладочные приложения.
-
Настройте ваши пульты правильно.
git удалённый -vРезультаты:
origin git@github.com:raisedadead/freeCodeCamp.git (fetch) происхождение git@github.com:raisedadead/freeCodeCamp.git (push) upstream git@github.com:freeCodeCamp/freeCodeCamp.git (fetch) upstream git@github.com:freeCodeCamp/freeCodeCamp.git (push) -
Убедитесь, что ваша ветка
мастер-нетронута и синхронизирована с исходным потоком.git checkout master git fetch --all --prune git reset --hard upstream/master -
Проверьте, что CI Travis проходит на
главной веткедля воспроизведения.Тесты непрерывной интеграции должны быть зеленым и PASSING для
главной ветки.Проверка статуса на Travis CI (скриншот)
Если это не удается, вы должны прекратить и расследовать ошибки.
-
Подтвердите, что вы можете построить репозиторий локально.
npm запуск чисто-и-разработка -
Переместить изменения с
мастер-настадии производствачерез быстрое прямое слияниеgit checkout production-staging git merge master git push upstream[!ПРИМЕЧАНИЕ] Вы не сможете принудительно выполнить push и если вы переписали историю в любом случае, эти команды будут ошибки.
Если они сделали, возможно, что-то сделал неправильно, и вы должны просто начать заново.
Вышеперечисленные шаги автоматически срабатывают на сборочной линии сборки для производственной стадии ветки. После завершения сборки артефакты сохраняются как .zip файлы в холодном хранилище для извлечения и использования позже.
Спутниковый трубопровод запускается автоматически при наличии свежего артефакта из подключенного трубопровода сборки. Для разбивки платформ, этот процесс не требует ручного одобрения и артефакты толкаются на серверы CDN и API.
[!TIP|label:Estimates] Обычно запуск сборки занимает ~20-25 минут, после чего выполняется релиз, который занимает ~15-20 минут для клиента, и ~5-10 минут для доступности API. От кода, до того, как он живет на платформах, весь процесс занимает ~35-45 минут в общей сложности.
Отправка изменений в Производственные Прикладки.
Этот процесс в основном такой же, как и на постановке платформ, с несколькими дополнительными проверками. Это просто убедиться, что мы ничего не сломаем на freeCodeCamp.org , который может видеть сотни пользователей, использующих его в любой момент.
| НЕ выполняйте эти команды, если вы не подтвердили, что все работает на промежуточной платформе. Вы не должны пропускать или пропускать любые тесты при постановке, прежде чем продолжить. |
|---|
-
Убедитесь, что ваша ветка
в стадии производстванетронута и синхронизирована с исходным потоком.git checkout production-staging git fetch --all --prune git reset --hard upstream/production-staging -
Переместить изменения с
production-stagingнаproduction-currentчерез быстрое прямое слияниеgit checkout production-current git merge production-staging git push upstream[!ПРИМЕЧАНИЕ] Вы не сможете принудительно выполнить push и если вы переписали историю в любом случае, эти команды будут ошибки.
Если они сделали, возможно, что-то сделал неправильно, и вы должны просто начать заново.
Вышеперечисленные шаги автоматически срабатывают на сборочной линии для production-current ветки. Как только артефакт сборки будет готов, он вызовет запуск на трубопроводе выпуска.
[!TIP|label:Estimates] Обычно запуск сборки занимает ~20-25 минут.
Дополнительные шаги для действий персонала
Один из запущенных релизов срабатывает, члены команды разработчиков получат автоматизированную электронную почту ручного вмешательства. Они могут либо одобрить или отклонить релиз.
Если изменения работают хорошо и были протестированы на поэтапной платформе, то это может быть утверждено. Одобрение должно быть выдано в течение 4 часов после срабатывания релиза до его автоматического отказа. Персонал может запустить выпуск вручную для отклонённых запусков или ожидать следующего цикла выпуска.
Для сотрудников:
| Проверьте вашу электронную почту для прямой ссылки или перейдите на панель управления релиза после запуска сборки. |
|---|
Как только один из сотрудников одобрит релиз, конвейер изменит текущие изменения на бесплатные серверы CDN и API. Они обычно занимают около 15-20 минут для клиента, и ~5 минут для доступных серверов API.
[!TIP|label:Estimates] Запуск релиза обычно занимает ~15-20 минут для каждого экземпляра клиента и ~5-10 минут для каждого экземпляра API, который будет доступен в реальном времени. От кода, чтобы жить на производственных платформах, весь процесс занимает ~90-120 минут в общей сложности (не считая время ожидания для утверждения персонала).
Состояние построенного, теста и развертывания
Вот текущий тест, построение и развертывание в базе кода.
| Тип | Ветка | Статус | Панель |
|---|---|---|---|
| Тест CI | мастер |
Перейти к панели состояния | |
| Тест CI | производственный этап |
Перейти к панели состояния | |
| Собрать Трубопровод | производственный этап |
Перейти к панели состояния | |
| Релиз Трубопровода | производственный этап |
Перейти к панели состояния | |
| Тест CI | текущее производство |
Перейти к панели состояния | |
| Собрать Трубопровод | текущее производство |
Перейти к панели состояния | |
| Релиз Трубопровода | текущее производство |
Перейти к панели состояния |
Ранний доступ и бета-тестирование
Мы приветствуем вас в тестировании этих релизов в режиме "публичное тестирование" и получите ранний доступ к предстоящим функциям платформы. Иногда эти функции/изменения называются следующими, бета-версиями, и т.д.
Ваш вклад через отзывы и отчеты об ошибках поможет нам сделать производственные платформы на freeCodeCamp. rg более устойчивых, совместимых и стабильных для всех.
Мы благодарим вас за сообщение об ошибках, с которыми вы столкнулись, и помощь в улучшении работы freeCodeCamp.org. Вы скалите!
Определение предстоящей версии платформ
Публичная бета-тестируемая версия доступна по адресу:
freecodecamp.dev
[!ПРИМЕЧАНИЕ] Имя домена отличается от
свободного CodeCamp.org. Предназначен для предотвращения индексации поисковых систем и избежания путаницы для обычных пользователей платформы.
Определение текущей версии платформ
Текущая версия платформы всегда доступна на freeCodeCamp.org.
dev-team объединяет изменения из производственно-монтажной ветки на production-current при выпуске изменений. Верхний коммит должен быть то, что вы видите в реальном времени на сайте.
Вы можете определить точную версию, развернутую посетив логи сборки и установки, доступные в разделе статуса. Кроме того, вы можете отправить нам запрос в чате участников для подтверждения.
Известные ограничения
При использовании бета-версии платформы существуют некоторые известные ограничения и tradeoff.
-
Все данные / личный прогресс на этих бета-платформах
НЕ будут сохранены или перенесеныв производство.Пользователи бета-версии будут иметь отдельный аккаунт от производства. Бета-версия использует физически отдельную базу данных от производства. Это дает нам возможность избежать случайной потери данных или изменений. При необходимости команда dev может очистить базу данных на этой бета-версии.
-
Нет гарантий относительно времени и надежности бета-версий.
Ожидается, что развертывание будет частым и быстрыми итерациями, иногда в несколько раз в день. В результате в бета-версии будет неожиданно время простоя или неисправная функциональность.
-
Не отправлять обычных пользователей на этот сайт в качестве меры подтверждения исправления
Бета сайт является и всегда был для дополнения местного развития и тестирования, ничего другого. Это не обещание о том, что пришел, а взглянуть на то, что сейчас работает.
-
Страница с знаком может отличаться от производства
Мы используем арендатора теста для freecodecamp.dev на Auth0, и поэтому не имеют возможности установить свой домен. Это делает так, что все переадресации обратных вызовов и страницы входа по умолчанию отображаются в домене типа
https://freecodecamp-dev.auth0.com/. Это не влияет на функциональность настолько близко к производству, насколько мы можем получить.
Проблемы с представлением отчетности и оставлением отзывов
Пожалуйста, откройте новые вопросы для обсуждения и сообщения об ошибках. Вы можете написать их как релиз: next/beta для triage.
Вы можете отправить письмо на dev[at]freecodecamp.org если у вас есть какие-либо запросы. Как всегда, все уязвимости безопасности должны сообщаться безопасности[at]freecodecamp.org вместо публичного трекера и форума.