228 lines
25 KiB
Markdown
228 lines
25 KiB
Markdown
![]() |
# Операції розробників на freeCodeCamp.org
|
|||
|
|
|||
|
Це керівництво допоможе вам зрозуміти наш набір інфраструктури і те, як ми підтримуємо наші платформи. Хоча цей посібник не має вичерпних подробиць для всіх операцій, він може бути використаний в якості посилання на ваше розуміння систем.
|
|||
|
|
|||
|
Дайте нам знати, якщо у вас будуть відгуки чи запити, і ми будемо раді розібратися в цьому.
|
|||
|
|
|||
|
## Як ми будуємо, перевіряємо та розгортаємо базу?
|
|||
|
|
|||
|
Цей репозиторій постійно будує, випробовується і розгортається на **окремі набори інфраструктури (сервери, бази даних, телефонів і т.д.)**.
|
|||
|
|
|||
|
Це включає в себе три кроки для слідування послідовності:
|
|||
|
|
|||
|
1. Нові зміни (фіксації та функції) об'єднуються у нашу гілку основного розвитку`( головний`) за допомогою pull request.
|
|||
|
2. Ці зміни проходять через ряд автоматизованих тестів.
|
|||
|
3. Як тільки тести проходять ми випускаємо зміни (або оновлюємо їх, якщо необхідно) для розгортання на нашу інфраструктуру.
|
|||
|
|
|||
|
#### Побудова бази коду - відображення гілок Git для розгортання.
|
|||
|
|
|||
|
Зазвичай, [`майстер`](https://github.com/freeCodeCamp/freeCodeCamp/tree/master) (гілка за замовчуванням) об'єднується в [`production-staging`](https://github.com/freeCodeCamp/freeCodeCamp/tree/production-staging) раз на день і випускається в ізольовану інфраструктуру.
|
|||
|
|
|||
|
Це проміжний випуск для наших розробників і волонтерів. Він також відомий як наш "staging" або "бета" реліз.
|
|||
|
|
|||
|
Це ідентично до нашої виробничої середовища на `freeCodeCamp.org`і, крім цього, використовує окремий набір баз даних, серверів, web-proxies, і т. д. Ця ізоляція дозволяє нам тестувати постійну розробку та можливості у вигляді "продукції", як сценарій, не обмежуючи регулярних користувачів основних платформ freeCodeCamp.org.
|
|||
|
|
|||
|
Once the developer team [`@freeCodeCamp/dev-team`](https://github.com/orgs/freeCodeCamp/teams/dev-team/members) is happy with the changes on the staging platform, these changes are moved every few days to the [`production-current`](https://github.com/freeCodeCamp/freeCodeCamp/tree/production-current) branch.
|
|||
|
|
|||
|
Це фінальний випуск який переходить до наших виробничих платформ на freeCodeCamp.org.
|
|||
|
|
|||
|
#### Зміни тестів - Інтеграція і Тестування Прийнятих Користувачів.
|
|||
|
|
|||
|
Ми використовуємо різні рівні інтегрування та перевірки прийнятності, щоб перевірити якість коду. Всі наші тести здійснюються за допомогою програмного забезпечення, як [Travis CI](https://travis-ci.org/freeCodeCamp/freeCodeCamp) та [Azure Pipelines](https://dev.azure.com/freeCodeCamp-org/freeCodeCamp).
|
|||
|
|
|||
|
В нас є юніт тести для перевірки наших складних рішень, API і інтерфейсів користувача користувача. Вони допомагають нам випробувати інтеграцію між різними компонентами.
|
|||
|
|
|||
|
> [!NOTE] Ми також знаходяться в процесі написання кінцевих користувацьких тестів, що допоможе відтворити реальні сценарії, такі як оновлення електронної пошти або дзвінок з API або сторонніми сервісами.
|
|||
|
|
|||
|
Разом ці тести допомагають у запобіганні повторенню проблем і запевняємо, що ми не представимо помилку під час роботи над іншою помилкою або функцією.
|
|||
|
|
|||
|
#### Розгортання змін - відправлення змін до серверів.
|
|||
|
|
|||
|
Ми налаштували безперервне програмне забезпечення доставки для внесення змін до наших серверів розробки і виробництва.
|
|||
|
|
|||
|
Після того, як зміни будуть відправлені в захищені гілки релізу, конвеєр збірки автоматично запускається для гілки. Гарбопроводи відповідають за будівництво артефактів та збереження їх у холодному сховищі для подальшого використання.
|
|||
|
|
|||
|
Конвеєр збірки працює для запуску відповідного конвеєра, якщо він завершить успішну запуску. Газети релізів є відповідальними за збір артефактів і переміщення їх до серверів і далі.
|
|||
|
|
|||
|
Статус збірки та релізів [доступні тут](#build-test-and-deployment-status).
|
|||
|
|
|||
|
## Запуск вбудованого, тестування та розгортання.
|
|||
|
|
|||
|
В даний час лише члени команди розробників можуть підштовхнути до виробничих гілок. Зміни до гілок `production-*` можуть приземлятися лише через швидке злиття на [`upstream`](https://github.com/freeCodeCamp/freeCodeCamp).
|
|||
|
|
|||
|
> [!NOTE] В найближчі дні ми б покращили цей процес процес за допомогою пульсаційних запитів, для кращого управління доступом та прозорості.
|
|||
|
|
|||
|
### У надсиланні змін до постановки програм.
|
|||
|
|
|||
|
1. Налаштовування віддалених параметрів правильно.
|
|||
|
|
|||
|
```sh
|
|||
|
git remote -v
|
|||
|
```
|
|||
|
|
|||
|
**Результат:**
|
|||
|
|
|||
|
```
|
|||
|
origin git@github.com:raisedadead/freeCodeCamp.git (fetch)
|
|||
|
origin git@github.com:raisedadead/freeCodeCamp.git (push)
|
|||
|
upstream git@github.com:freeCodeCamp/freeCodeCamp/freeCodeCamp.git (fetch)
|
|||
|
upstream git@github.com:freeCodeCamp/freeCodeCamp.git (push)
|
|||
|
```
|
|||
|
|
|||
|
2. Переконайтеся, що гілка `master` є чистою і синхронізуйте її з upstream.
|
|||
|
|
|||
|
```sh
|
|||
|
git checkout master
|
|||
|
git fetch --all --prune
|
|||
|
git reset --hard upstream/master
|
|||
|
```
|
|||
|
|
|||
|
3. Перевірте, що Travis CI проходить `гілку master` для upstream.
|
|||
|
|
|||
|
The [continuous integration](https://travis-ci.com/github/freeCodeCamp/freeCodeCamp/branches) tests should be green and PASSING for the `master` branch.
|
|||
|
|
|||
|
<details> <summary> Перевірка статусу на Travis CI (скріншот) </summary>
|
|||
|
<br>
|
|||
|

|
|||
|
</details>
|
|||
|
|
|||
|
Якщо це не вдасться, вам потрібно зупинитись і дослідити помилки.
|
|||
|
|
|||
|
4. Підтвердіть, що ви можете будувати репозиторій локально.
|
|||
|
|
|||
|
```
|
|||
|
npm запустити чисть-розробку
|
|||
|
```
|
|||
|
|
|||
|
5. Переміщення змін з `майстра` на `production-staging` через швидке злиття
|
|||
|
|
|||
|
```
|
|||
|
git checkout production-staging
|
|||
|
git merge master
|
|||
|
git push upstream
|
|||
|
```
|
|||
|
|
|||
|
> [!NOTE] Ви не зможете примусово штовхати, і якщо ви все одно переписали історію цими командами не вийде.
|
|||
|
>
|
|||
|
> Якщо вони зробили це, ви, можливо, зробили щось неправильно і ви повинні просто почати спочатку.
|
|||
|
|
|||
|
Наведені нижче кроки будуть автоматично запускатися на конвеєрі для `production-staging` гілки. Після завершення збірки артефакти будуть збережені як `.zip` файли в холодному сховищі для отримання та використання пізніше.
|
|||
|
|
|||
|
Конвеєр випуску запускається автоматично, коли новий артефакт доступний з підключеного конвеєра. Для платформ постанову цей процес не передбачає ручного затвердження і артефакти були передані до клієнту CDN та серверів API.
|
|||
|
|
|||
|
> [!TIP|label:Оцінки] Зазвичай запуск збірки займає ~20-25 хвилин, щоб завершитися після закінчення випуску, який займає ~15-20 хвилин для клієнта, і ~5-10 хв для доступу до API. Від коду дочекатися того, що весь процес займає **~35-45 хв**.
|
|||
|
|
|||
|
### Зміну виробничих додатків.
|
|||
|
|
|||
|
Процес здебільшого такий самий, як і постановка платформ, з кількома додатковими перевірками. Це лише для того, щоб переконатися, що ми нічого не порушуємо на freeCodeCamp.org, який може побачити сотні користувачів, що використовують це в будь-який момент.
|
|||
|
|
|||
|
| Не виконувати ці команди лише за умови, що все буде перевірено на постановці платформи. Ви не повинні минути або пропустити всі тести, перш ніж продовжити процес. |
|
|||
|
|:------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
|
|||
|
| |
|
|||
|
|
|||
|
|
|||
|
1. Переконайтеся, що Ваша `production-staging` гілка є незайманою і синхронізуйте її з upstream.
|
|||
|
|
|||
|
```sh
|
|||
|
git checkout production-staging
|
|||
|
git fetch --all --prune
|
|||
|
git reset --hard upstream/production-staging
|
|||
|
```
|
|||
|
|
|||
|
2. Перемістити зміни від `production-staging` на `production-current` через fast-forward merge
|
|||
|
|
|||
|
```
|
|||
|
git checkout production-current
|
|||
|
git merge production-staging
|
|||
|
git push upstream
|
|||
|
```
|
|||
|
|
|||
|
> [!NOTE] Ви не зможете примусово штовхати, і якщо ви все одно переписали історію цими командами не вийде.
|
|||
|
>
|
|||
|
> Якщо вони зробили це, ви, можливо, зробили щось неправильно і ви повинні просто почати спочатку.
|
|||
|
|
|||
|
Наведені нижче кроки будуть автоматично запускатися на конвеєрі для `виробник-поточної гілки`. Після того, як Артефакт буде готовий, він буде запускатися на конвеєрі.
|
|||
|
|
|||
|
> [!TIP|label:Оцінки] Зазвичай запуск збірки займає ~20-25 хвилин, щоб завершити.
|
|||
|
|
|||
|
**Додаткові кроки для персоналу**
|
|||
|
|
|||
|
Розпочато один реліз, члени команди співробітників розробника отримають автоматизовану ручну інтервенцію. Вони можуть _затвердити_ або _відхилити_ файл релізу.
|
|||
|
|
|||
|
Якщо зміни добре працюють і протестували на платформі, це може бути затверджено. Підтвердження має бути отримане протягом 4 годин після активації релізу перед автоматичним відхиленням. Співробітники можуть повторно запустити запуск релізу вручну для відхилених запущених або чекати наступного циклу релізу.
|
|||
|
|
|||
|
Для персоналу використовуйте:
|
|||
|
|
|||
|
| Перевірте вашу електронну пошту для прямого посилання або [перейдіть до меню релізів](https://dev.azure.com/freeCodeCamp-org/freeCodeCamp/_release) після того, як запущено збірку. |
|
|||
|
|:----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
|||
|
| |
|
|||
|
|
|||
|
|
|||
|
Після того, як один з співробітників схвалить реліз, конвеєр відправить зміни в прямому ефірі на production freeCodeCamp.org, CDN та сервери API. Вони зазвичай отримують ~15-20 хвилин для клієнта, і ~5 хв для серверів API, які будуть доступні наживо.
|
|||
|
|
|||
|
> [!TIP|label:Розрахунки] Запуск релізу зазвичай займає ~15-20 хв для кожного екземпляра клієнта, та ~5-10 хвилин для кожного API доступний наживо. Від коду натиснути до жити на виробничих платформах, весь процес займає **~90-120 хв** загалом (не рахуючи час очікування затвердження).
|
|||
|
|
|||
|
## Створений, тест і статус розгортання
|
|||
|
|
|||
|
Ось поточний тест, збірка та статус розгортання кодової бази.
|
|||
|
|
|||
|
| Тип | Відділення | Статус | Приладна дошка |
|
|||
|
|:---------------- |:--------------------------------------------------------------------------------------------------- |:-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |:-------------------------------------------------------------------------------------------- |
|
|||
|
| Фіктивні тести | [`майстер`](https://github.com/freeCodeCamp/freeCodeCamp/tree/master) |  | [Перейти до панелі статусу](https://travis-ci.com/github/freeCodeCamp/freeCodeCamp/branches) |
|
|||
|
| Фіктивні тести | [`постановка продуктивності`](https://github.com/freeCodeCamp/freeCodeCamp/tree/production-staging) |  | [Перейти до панелі статусу](https://travis-ci.com/github/freeCodeCamp/freeCodeCamp/branches) |
|
|||
|
| Збудуйте Конвеєр | [`постановка продуктивності`](https://github.com/freeCodeCamp/freeCodeCamp/tree/production-staging) | [](https://dev.azure.com/freeCodeCamp-org/freeCodeCamp/_build/latest?definitionId=15&branchName=production-staging) | [Перейти до панелі статусу](https://dev.azure.com/freeCodeCamp-org/freeCodeCamp/_build) |
|
|||
|
| Реліз конвеєра | [`постановка продуктивності`](https://github.com/freeCodeCamp/freeCodeCamp/tree/production-staging) | | [Перейти до панелі статусу](https://dev.azure.com/freeCodeCamp-org/freeCodeCamp/_release) |
|
|||
|
| Фіктивні тести | [`струм продукції`](https://github.com/freeCodeCamp/freeCodeCamp/tree/production-current) |  | [Перейти до панелі статусу](https://travis-ci.com/github/freeCodeCamp/freeCodeCamp/branches) |
|
|||
|
| Збудуйте Конвеєр | [`струм продукції`](https://github.com/freeCodeCamp/freeCodeCamp/tree/production-staging) | [](https://dev.azure.com/freeCodeCamp-org/freeCodeCamp/_build/latest?definitionId=17&branchName=production-current) | [Перейти до панелі статусу](https://dev.azure.com/freeCodeCamp-org/freeCodeCamp/_build) |
|
|||
|
| Реліз конвеєра | [`струм продукції`](https://github.com/freeCodeCamp/freeCodeCamp/tree/production-staging) | | [Перейти до панелі статусу](https://dev.azure.com/freeCodeCamp-org/freeCodeCamp/_release) |
|
|||
|
|
|||
|
## Ранній доступ і бета-тестування
|
|||
|
|
|||
|
Ми раді вам протестувати ці релізи в режимі **"публічний бета-тестування"** і отримати доступ до майбутніх функцій на платформах. Інколи ці функції / зміни називають **наступною, бета-версією, підгодою,** і т. д. взаємодіють.
|
|||
|
|
|||
|
Ваші внески через відгуки та звіти про проблеми допоможуть нам у створенні виробничих платформ на `freeCodeCamp. rg` більш **стійкий**, **послідовний** та **стабільний** для всіх.
|
|||
|
|
|||
|
Ми дякуємо вам за повідомлення про помилки, з якими ви стикаєтесь і допомагаєте покращити freeCodeCamp.org. Ти крута!
|
|||
|
|
|||
|
### Визначення майбутньої версії платформ
|
|||
|
|
|||
|
В даний час доступна версія публічного бета-тестування на:
|
|||
|
|
|||
|
<h1 align="center"><a href='https://www.freecodecamp.dev' _target='blank'>вільний декамп</a></h1>
|
|||
|
|
|||
|
> [!NOTE] Ім'я домену відрізняється від **`freeCodeCamp.org`**. Навмисне запобігання індексації пошукових систем та уникати плутанини для звичайних користувачів платформи.
|
|||
|
|
|||
|
### Визначення поточної версії платформ
|
|||
|
|
|||
|
**Поточна версія платформи завжди доступна на [`freeCodeCamp.org`](https://www.freecodecamp.org).**
|
|||
|
|
|||
|
The dev-team зливає зміни з гілки `production-staging` на `production-current` під час випуску змін. Верхній коміт має бути те, що ви бачите на сайті.
|
|||
|
|
|||
|
Ви можете визначити точну версію, розгорнуту, відвідавши збірку та розгорнуті журнали, доступні в розділі статусу. Крім того, ви можете зв'язатися з нами в [чаті](https://gitter.im/FreeCodeCamp/Contributors) для підтвердження.
|
|||
|
|
|||
|
### Відомі ліміти
|
|||
|
|
|||
|
Існують деякі відомі обмеження і компроміси при використанні бета-версії платформи.
|
|||
|
|
|||
|
- #### Всі дані / персональний прогрес на цих бета-платформах `не буде збережено та не перенесено у виробництво`.
|
|||
|
|
|||
|
**Користувачі з бета-версії матимуть окремий обліковий запис з виробництва.** Бета-версія використовує фізично окрему базу даних від виробництва. Це дає нам можливість запобігти випадковій втраті даних або модифікацій. Команда розробників може очистити базу даних на цьому бета-версії, якщо потрібна.
|
|||
|
|
|||
|
- ### Не існує жодних гарантій на час та надійності бета-платформ.
|
|||
|
|
|||
|
Очікується, що розгортання буде часто, і в швидких ітераціях, іноді кілька разів на день. У результаті невдала функціональність на бета-версії буде несподівано неочікувана.
|
|||
|
|
|||
|
- #### Не відсилати регулярних користувачів на цей сайт як мірку підтвердження виправлення
|
|||
|
|
|||
|
Сайт є бета-розробкою і завжди намагався збільшити місцевий розвиток і тестування, нічого іншого. Це не обіцянка того, що станеться, але побачити те, що працює.
|
|||
|
|
|||
|
- ### Сторінка Підпису може виглядати не як у виробництві
|
|||
|
|
|||
|
Ми використовуємо тестовий екземпляр для freecodec.dev для Auth0, а отже, не можливість встановлювати власний домен. Це дозволяє зробити так, щоб всі зворотні виклики й сторінки авторизації показувалися на типовому домені: `https://freecodecamp-dev.auth0.com/`. Це не впливає на функціональність настільки близько до виробничого, як ми можемо отримати.
|
|||
|
|
|||
|
## Звіти про проблеми і залишити відгук
|
|||
|
|
|||
|
Будь ласка, відкрийте свіжі задачі для обговорення та звітування про помилки. Ви можете вказати їх як **[`реліз: наступний/бета`](https://github.com/freeCodeCamp/freeCodeCamp/labels/release%3A%20next%2Fbeta)** для подорожі.
|
|||
|
|
|||
|
Ви можете надіслати електронний лист на `dev[at]freecodecamp.org` у разі виникнення будь-яких запитів. Як слід повідомляти завжди про вразливості безпеки `на сайті[at]freecodecamp.org` замість громадського трекера та форуму.
|