freeCodeCamp/docs/i18n/Polish/devops.md

228 lines
18 KiB
Markdown
Raw Normal View History

# Operacje dla programistów na darmowym CodeCamp.org
Ten przewodnik pomoże Ci zrozumieć nasz stos infrastruktury i sposób utrzymania naszych platform. Chociaż niniejszy przewodnik nie zawiera wyczerpujących szczegółów dotyczących wszystkich operacji, może on być wykorzystany jako punkt odniesienia dla Państwa zrozumienia systemów.
Wiedzmy, jeśli masz opinie lub zapytania i z przyjemnością wyjaśnimy.
## W jaki sposób tworzymy, przetestowujemy i wdrażamy bazę kodową?
This repository is continuously built, tested and deployed to **separate sets of infrastructure (Servers, Databases, CDNs, etc.)**.
Obejmuje to trzy etapy, które należy wykonać kolejno:
1. Nowe zmiany (zarówno poprawki jak i funkcje) są scalane w naszym głównym oddziale rozwoju (`master`) za pomocą pull requestów.
2. Zmiany te przeprowadza się poprzez szereg zautomatyzowanych testów.
3. Po przejściu testów wydamy zmiany (lub w razie potrzeby zaktualizuje) w celu wdrożenia naszej infrastruktury.
#### Budowanie ebazy kodowej - mapowanie gałęzi Git do wdrożeń.
Zwykle [`główny`](https://github.com/freeCodeCamp/freeCodeCamp/tree/master) (domyślna gałąź rozwojowa) jest scalona w [`gałąź`](https://github.com/freeCodeCamp/freeCodeCamp/tree/production-staging) raz dziennie i jest uwalniana do odizolowanej infrastruktury.
To jest wydanie pośrednie dla naszych programistów i wolontariuszy. Jest ona również znana jako "etap" lub "beta".
Jest to identyczne z naszym żywym środowiskiem produkcyjnym w `freeCodeCamp.org`, inne niż przy użyciu oddzielnego zestawu baz danych, serwerów, proxy internetowych itp. Izolacja ta pozwala nam przetestować bieżący rozwój i cechy w scenariuszu „produkcji”, nie wpływając na zwykłych użytkowników głównych platform FreCodeCamp.org.
Gdy zespół deweloperów [`@freeCodeCamp/dev-team`](https://github.com/orgs/freeCodeCamp/teams/dev-team/members) jest zadowolony ze zmian na platformie testowej, te zmiany są przenoszone co kilka dni do gałęzi [`aktualnej produkcji`](https://github.com/freeCodeCamp/freeCodeCamp/tree/production-current).
To jest ostateczna wersja, która przenosi zmiany na nasze platformy produkcyjne na freeCodeCamp.org.
#### Testowanie zmian - Testowanie integracji i akceptacji użytkownika.
Stosujemy różne poziomy integracji i testów akceptacji w celu sprawdzenia jakości kodu. Wszystkie nasze testy są wykonywane przez oprogramowanie takie jak [Travis CI](https://travis-ci.org/freeCodeCamp/freeCodeCamp) i [Azure Ruropeline](https://dev.azure.com/freeCodeCamp-org/freeCodeCamp).
Mamy testy jednostkowe do testowania naszych rozwiązań wyzwań, interfejsów API serwera i użytkowników klientów. Pomagają nam one przetestować integrację pomiędzy różnymi komponentami.
> [!NOTE] Jesteśmy również w trakcie pisania testów użytkowników końcowych, które pomogą w replikowaniu scenariuszy prawdziwego świata, takich jak aktualizacja wiadomości e-mail lub wywołanie połączenia do API lub usług innych firm.
Łącznie te testy pomagają zapobiec powtórzeniu się problemów i upewnić się, że nie wprowadzimy błędu podczas pracy nad innym błędem lub funkcją.
#### Wdrażanie zmian - Przesyłanie zmian na serwery.
Skonfigurowaliśmy oprogramowanie do ciągłej dostawy, aby wprowadzać zmiany do naszych serwerów rozwojowych i produkcyjnych.
Po przepychaniu zmian do chronionych gałęzi uwalniania automatycznie uruchamia się budowę rurociągu dla gałęzi. Budowa rurociągów jest odpowiedzialna za budowę artefaktów i przechowywanie ich w chłodni do późniejszego wykorzystania.
Budowa rurociągu uruchamia odpowiedni rurociąg wydania, jeśli zakończy się pomyślnym uruchomieniem. Rurociągi wydania są odpowiedzialne za zbieranie artefaktów budowy, przenoszenie ich na serwery i przechodzenie na żywo.
Status kompilacji i wydań jest [dostępny tutaj](#build-test-and-deployment-status).
## Uruchamianie budowy, testowania i rozmieszczenia.
Obecnie tylko członkowie zespołu deweloperskiego mogą przepychać do gałęzi produkcyjnych. Zmiany w `produkcji*` gałęzie mogą lądować tylko poprzez szybkie połączenie w przód do [`przed`](https://github.com/freeCodeCamp/freeCodeCamp).
> [!UWAGA] W nadchodzących dniach poprawilibyśmy ten przepływ do wykonania poprzez pull-requests, aby poprawić zarządzanie dostępem i przejrzystość.
### Przesyłanie zmian do aplikacji testowych.
1. Skonfiguruj pilota poprawnie.
```sh
git zdalny -v
```
**Wyniki:**
```
origingit@github.com:raisedadead/freeCodeCamp.git (fetch)
origingit@github.com:raisedadead/freeCodeCamp.git (push)
upstream git@github.com:freeCodeCamp/freeCodeCamp.git (fetch)
upstream git@github.com:freeCodeCamp/freeCodeCamp.git (push)
```
2. Upewnij się, że Twoja gałąź `` jest niesamowita i w synchronizacji z upstreamem.
```sh
git checkout master
git fetch --all --prune
git reset --hard upstream/master
```
3. Sprawdź, czy Travis CI jest przekazywany na gałęzi `główny` dla upstream.
Testy [ciągłej integracji](https://travis-ci.com/github/freeCodeCamp/freeCodeCamp/branches) powinny być zielone i PASSING dla `głównego` gałęzi.
<details> <summary> Sprawdzanie statusu w Travis CI (zrzut ekranu) </summary>
<br>
![Sprawdź status budowy w Travis CI](https://raw.githubusercontent.com/freeCodeCamp/freeCodeCamp/master/docs/images/devops/travis-build.png)
</details>
Jeśli to się nie powiedzie, powinieneś zatrzymać i zbadać błędy.
4. Potwierdź, że możesz utworzyć repozytorium lokalnie.
```
npm uruchom czysto i rozwiń
```
5. Przenieś zmiany z `mistrza` do `etapu produkcji` poprzez szybkie scalanie
```
git checkout production-staging
git merge master
git push upstream
```
> [!NOTE] Nie będziesz w stanie wymusić wypchnięcia i jeśli przepisałeś historię w każdym razie, te polecenia będą się błędne.
>
> Jeśli tak się stanie, być może zrobiłeś coś niepoprawnego i po prostu powinieneś zacząć od nowa.
Powyższe kroki automatycznie uruchomi się na rurociągu budowy dla gałęzi `etap produkcji`. Gdy kompilacja zostanie zakończona, artefakty są zapisywane jako pliki `.zip` w chłodni do pobrania i wykorzystania później.
Rurociąg uwalniania jest uruchamiany automatycznie, gdy nowy artefakt jest dostępny z podłączonego rurociągu budowy. Dla platform testowych ten proces nie wymaga ręcznego zatwierdzania, a artefakty są wysyłane na serwery CDN i API klienta.
> [!TIP|label:Estimates] Zwykle kompilacja trwa ~20-25 minut, a następnie uruchomienie wydania, które zajmuje ~15-20 minut dla klienta, i ~5-10 minut aby API było dostępne na żywo. Od wypychania kodu do bycia na platformach do testowania, cały proces zajmuje łącznie **~35-45 minut**.
### Ładowanie zmian w aplikacjach produkcyjnych.
Proces ten jest w większości taki sam jak platformy testowe, z kilkoma dodatkowymi kontrolami. Chodzi o to, aby mieć pewność, że nie niszczymy nic na wolnym CodeCamp.org, który widzi setki użytkowników z niego korzystających w każdej chwili.
| NIE wykonuj tych poleceń, chyba że sprawdziłeś czy wszystko działa na platformie testowej. Nie powinieneś omijać ani pomijać żadnych testów testowania przed kontynuowaniem testu. |
|:---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| |
1. Upewnij się, że Twoja gałąź `stopniowania produkcji` jest niesamowita i w trakcie synchronizacji z górnym biegiem czasu.
```sh
git checkout production staging
git fetch --all --prune
git reset --hard upstream/production-staging
```
2. Przenieś zmiany z `etapu produkcji` na `prąd produkcyjny` poprzez szybkie połączenie w przód
```
git checkout production-current
git scalge production-staging
git push upstream
```
> [!NOTE] Nie będziesz w stanie wymusić wypchnięcia i jeśli przepisałeś historię w każdym razie, te polecenia będą się błędne.
>
> Jeśli tak się stanie, być może zrobiłeś coś niepoprawnego i po prostu powinieneś zacząć od nowa.
Powyższe kroki automatycznie uruchomi się na rurociągu budowy dla gałęzi `prądu produkcyjnego`. Gdy budowniczy artefakt będzie gotowy, uruchomi on proces uwalniania.
> [!TIP|label:Estimates] Zwykle kompilacja trwa ~20-25 minut.
**Dodatkowe kroki dla działań kadrowych**
Jeden z uruchomień wydania jest uruchomiony, członkowie zespołu deweloperów otrzymają automatyczny ręczny e-mail z interwencją. Mogą one _zatwierdzić_ lub _odrzucić_ uruchomienie wydania.
Jeżeli zmiany działają ładnie i zostały przetestowane na platformie testowej, można je zatwierdzić. Homologacja musi zostać udzielona w ciągu 4 godzin od uruchomienia zwolnienia, zanim zostanie automatycznie odrzucona. Administracja może uruchomić ponownie uruchomienie ręcznie dla odrzuconych uruchomień, lub poczekać na następny cykl zwolnienia.
Dla personelu:
| Sprawdź swój adres e-mail, aby uzyskać bezpośredni link lub [przejść do panelu wydania](https://dev.azure.com/freeCodeCamp-org/freeCodeCamp/_release) po zakończeniu kompilacji. |
|:-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| |
Gdy jeden z członków personelu zatwierdzi wydanie, rurociąg przepycha zmiany na żywo na serwery CDN i API freeCodeCamp.org. Zwykle zajmują około 15-20 minut dla klienta i około 5 minut dla serwerów API dostępnych na żywo.
> [!TIP|label:Estimates] Uruchamianie wydania zajmuje zazwyczaj ~15-20 minut dla każdej instancji klienta i ~5-10 minut dla każdej instancji API, aby była dostępna na żywo. Od wypychania kodu do życia na platformach produkcyjnych cały proces zajmuje łącznie **~90-120 min** (nie licząc czasu oczekiwania na zatwierdzenie personelu).
## Stan budowy, testowania i wdrożenia
Oto bieżący test, kompilacja i stan rozmieszczenia bazy.
| Typ | Oddział | Status | Pulpit |
|:------------------- |:------------------------------------------------------------------------------------------ |:-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |:------------------------------------------------------------------------------------------ |
| CI Testy | [`mistrz`](https://github.com/freeCodeCamp/freeCodeCamp/tree/master) | ![Status kompilacji Travis CI](https://travis-ci.com/freeCodeCamp/freeCodeCamp.svg?branch=master) | [Przejdź do panelu stanu](https://travis-ci.com/github/freeCodeCamp/freeCodeCamp/branches) |
| CI Testy | [`etapy produkcji`](https://github.com/freeCodeCamp/freeCodeCamp/tree/production-staging) | ![Status kompilacji Travis CI](https://travis-ci.com/freeCodeCamp/freeCodeCamp.svg?branch=production-staging) | [Przejdź do panelu stanu](https://travis-ci.com/github/freeCodeCamp/freeCodeCamp/branches) |
| Zbuduj rurociąg | [`etapy produkcji`](https://github.com/freeCodeCamp/freeCodeCamp/tree/production-staging) | [![Status kompilacji](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) | [Przejdź do panelu stanu](https://dev.azure.com/freeCodeCamp-org/freeCodeCamp/_build) |
| Rurociąg uwolnienia | [`etapy produkcji`](https://github.com/freeCodeCamp/freeCodeCamp/tree/production-staging) | | [Przejdź do panelu stanu](https://dev.azure.com/freeCodeCamp-org/freeCodeCamp/_release) |
| CI Testy | [`prąd produkcyjny`](https://github.com/freeCodeCamp/freeCodeCamp/tree/production-current) | ![Status kompilacji Travis CI](https://travis-ci.com/freeCodeCamp/freeCodeCamp.svg?branch=production-current) | [Przejdź do panelu stanu](https://travis-ci.com/github/freeCodeCamp/freeCodeCamp/branches) |
| Zbuduj rurociąg | [`prąd produkcyjny`](https://github.com/freeCodeCamp/freeCodeCamp/tree/production-staging) | [![Status kompilacji](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) | [Przejdź do panelu stanu](https://dev.azure.com/freeCodeCamp-org/freeCodeCamp/_build) |
| Rurociąg uwolnienia | [`prąd produkcyjny`](https://github.com/freeCodeCamp/freeCodeCamp/tree/production-staging) | | [Przejdź do panelu stanu](https://dev.azure.com/freeCodeCamp-org/freeCodeCamp/_release) |
## Wczesny dostęp i testy beta
Witamy w przetestowaniu tych wydań w trybie **"publicznego beta testowania"** i uzyskujemy szybki dostęp do nadchodzących funkcji platformy. Czasami te funkcje/zmiany są określane jako **następne, beta, etap,** itd. wymiennie.
Twój wkład poprzez informacje zwrotne i raporty o błędach pomoże nam stworzyć platformy produkcyjne na `freeCodeCamp. rg` bardziej **odporny**, **spójny** i **stabilny** dla wszystkich.
Dziękujemy za zgłaszanie błędów, które napotkasz i pomoc w ulepszeniu freeCodeCamp.org. Jesteś skalisty!
### Identyfikacja przyszłej wersji platform
Obecnie publiczna wersja beta testowa jest dostępna na stronie:
<h1 align="center"><a href='https://www.freecodecamp.dev' _target='blank'>dev</a></h1>
> [!NOTE] Nazwa domeny jest inna niż **`freeCodeCamp.org`**. Ma to na celu zapobieganie indeksowaniu wyszukiwarek i unikanie dezorientacji dla regularnych użytkowników platformy.
### Identyfikacja obecnej wersji platform
**Obecna wersja platformy jest zawsze dostępna pod adresem [`freeCodeCamp.org`](https://www.freecodecamp.org).**
Zespół dev-team scala zmiany z gałęzi `produkcyjnej` na `produkcję, prąd` po ich wydaniu. Najlepszym zatwierdzeniem powinno być to, co widzisz na żywo na stronie.
Możesz zidentyfikować dokładną wersję, odwiedzając dzienniki budowy i wdrożenia dostępne w sekcji statusu. Alternatywnie możesz również wypchnąć nas w [kontrybucji na czacie](https://gitter.im/FreeCodeCamp/Contributors) w celu potwierdzenia.
### Znane ograniczenia
Istnieją pewne znane ograniczenia i kompromisy podczas używania wersji beta platformy.
- #### Wszystkie dane / osobisty postęp na tych platformach beta `NIE zostanie zapisany ani przeniesiony` do produkcji.
**Użytkownicy wersji beta będą mieli oddzielne konto od produkcji.** Wersja beta używa fizycznie oddzielnej bazy danych od produkcji. Daje nam to możliwość zapobiegania przypadkowej utracie danych lub zmianom. Zespół deweloperski może w razie potrzeby oczyścić bazę danych w tej wersji beta.
- #### Nie ma gwarancji dotyczących czasu pracy i niezawodności platform beta.
Przewiduje się, że stosowanie będzie częste i w przypadku szybkich iteracji, czasami wielokrotnych razy dziennie. W rezultacie pojawi się nieoczekiwany czas przestoju lub uszkodzona funkcjonalność wersji beta.
- #### Nie wysyłaj regularnych użytkowników na tę witrynę w celu potwierdzenia naprawienia
Witryna beta jest i zawsze wspierała rozwój lokalny i testowanie, nic innego. Nie jest to obietnica co nadchodzi, ale gwiazdka tego, co się sprawdza.
- #### Strona znaku może wyglądać inaczej niż produkcja
W Auth0 używamy lokatora testowego dla freecodecamp.dev i dlatego nie mają możliwości ustawiania domeny niestandardowej. To sprawia, że wszystkie wywołania zwrotne przekierowania i strona logowania pojawiają się w domenie domyślnej, takiej jak: `https://freecodecamp-dev.auth0.com/`. Nie ma to wpływu na funkcjonalność tak blisko produkcji, jak to możliwe.
## Kwestie związane ze sprawozdawczością i pozostawienie opinii
Proszę otworzyć nowe problemy do dyskusji i zgłaszania błędów. Możesz oznaczyć je jako **[`wydanie: next/beta`](https://github.com/freeCodeCamp/freeCodeCamp/labels/release%3A%20next%2Fbeta)** dla triage'u.
Możesz wysłać e-mail do `dev[at]freecodecamp.org` jeśli masz jakieś zapytania. Ponieważ zawsze wszystkie luki w zabezpieczeniach powinny być zgłaszane do `zabezpieczeń[at]freecodecamp.org` zamiast publicznego trackera i forum.