Files
freeCodeCamp/docs/i18n/Russian/devops.md
2020-10-02 00:28:40 +05:30

27 KiB
Raw Blame History

Операции разработчиков на freeCodeCamp.org

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

Дайте нам знать, если у вас есть обратная связь или запросы, и мы будем рады уточнить.

Как мы собираем, тестируем и развертываем кодовую базу?

Этот репозиторий постоянно строится, тестируется и развернут в отдельных наборов инфраструктуры (серверов, баз данных, CDN и т.д.).

Это включает в себя три шага, которые должны выполняться последовательно:

  1. Новые изменения (как исправления, так и функции) объединены в нашу ветку основного развития (master) с помощью запросов на слияние.
  2. Эти изменения проводятся через серию автоматизированных тестов.
  3. После прохождения тестов мы выпускаем изменения (или их обновить) для развертывания в нашей инфраструктуре.

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 или сторонних сервисов.

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

Развертывание изменений - Передача изменений серверам.

Мы настроили программное обеспечение для непрерывной доставки, чтобы изменения в наших разработках и производственных серверах.

После того, как изменения вносятся в защищенные ветки релиза, для ветки автоматически запускается трубопровод сборки. Строительные трубопроводы отвечают за строительство артефактов и их хранение в холодное хранилище для последующего использования.

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

Статус сборок и релизов доступен здесь.

Запуск сборки, теста и развертывания.

В настоящее время только члены команды разработчиков могут толкнуть в производственные ветви. Изменения в продукции-* ветках могут высадиться только быстрым прямым слиянием с выше.

[!ПРИМЕЧАНИЕ] В предстоящие дни мы улучшили бы этот поток по запросам для улучшения управления доступом и прозрачности.

Отправка изменений в отладочные приложения.

  1. Настройте ваши пульты правильно.

    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)
    
  2. Убедитесь, что ваша ветка мастер- нетронута и синхронизирована с исходным потоком.

    git checkout master
    git fetch --all --prune
    git reset --hard upstream/master
    
  3. Проверьте, что CI Travis проходит на главной ветке для воспроизведения.

    Тесты непрерывной интеграции должны быть зеленым и PASSING для главной ветки.

    Проверка статуса на Travis CI (скриншот)
    ![Проверить статус сборки на Travis CI](https://raw.githubusercontent.com/freeCodeCamp/freeCodeCamp/master/docs/images/devops/travis-build.png)

    Если это не удается, вы должны прекратить и расследовать ошибки.

  4. Подтвердите, что вы можете построить репозиторий локально.

    npm запуск чисто-и-разработка
    
  5. Переместить изменения с мастер- на стадии производства через быстрое прямое слияние

    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 , который может видеть сотни пользователей, использующих его в любой момент.

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

    git checkout production-staging
    git fetch --all --prune
    git reset --hard upstream/production-staging
    
  2. Переместить изменения с 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 мастер Статус сборки Travis CI Перейти к панели состояния
Тест CI производственный этап Статус сборки Travis CI Перейти к панели состояния
Собрать Трубопровод производственный этап Статус сборки Перейти к панели состояния
Релиз Трубопровода производственный этап Перейти к панели состояния
Тест CI текущее производство Статус сборки Travis 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 вместо публичного трекера и форума.