Files
freeCodeCamp/docs/i18n/Ukrainian/devops.md

228 lines
25 KiB
Markdown
Raw Normal View History

# Операції розробників на 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>
![Перевірте статус збірки на Travis CI](https://raw.githubusercontent.com/freeCodeCamp/freeCodeCamp/master/docs/images/devops/travis-build.png)
</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) | ![Статус збірки Travis CI](https://travis-ci.com/freeCodeCamp/freeCodeCamp.svg?branch=master) | [Перейти до панелі статусу](https://travis-ci.com/github/freeCodeCamp/freeCodeCamp/branches) |
| Фіктивні тести | [`постановка продуктивності`](https://github.com/freeCodeCamp/freeCodeCamp/tree/production-staging) | ![Статус збірки Travis CI](https://travis-ci.com/freeCodeCamp/freeCodeCamp.svg?branch=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/_apis/build/status/dot-dev-ci?branchName=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) | ![Статус збірки Travis CI](https://travis-ci.com/freeCodeCamp/freeCodeCamp.svg?branch=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/_apis/build/status/dot-org-ci?branchName=production-current)](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` замість громадського трекера та форуму.