freeCodeCamp/docs/i18n/Romanian/devops.md

19 KiB

Operațiuni pentru dezvoltatori la freeCodeCamp.org

Acest ghid vă va ajuta să înțelegeți stiva noastră de infrastructură și modul în care ne menținem platformele. Deși acest ghid nu are detalii exhaustive pentru toate operațiunile, ar putea fi folosit ca referință pentru înțelegerea sistemelor.

Haideți să știm, dacă aveți feedback sau întrebări și vom fi fericiți să clarificăm.

Cum construim, testăm şi desfăşurăm codeba?

Acest depozit este construit, testat și implementat în permanență pe seturi separate de infrastructură (servere, baze de date, CDN-uri etc.).

Aceasta implică trei etape care trebuie urmate succesiv:

  1. Noile modificări (atât reparații, cât și caracteristici) sunt fuzionate în ramura noastră principală de dezvoltare (master) prin pull requests.
  2. Aceste modificări sunt efectuate printr-o serie de teste automate.
  3. Odată ce testele trec vom lansa modificările (sau le vom actualiza dacă este cazul) la implementări pe infrastructura noastră.

Construirea codebazei - cartografierea ramurilor de git la proiectare.

În mod tipic, master (ramura implicită de dezvoltare) este fuzionată în ramura de producție-stagaging o dată pe zi și este eliberată într-o infrastructură izolată.

Aceasta este o versiune intermediară pentru dezvoltatorii și colaboratorii noștri. Aceasta este cunoscută și sub numele de eliberarea noastră în etape sau în faza „beta”.

Este identic cu mediul nostru de producție live la freeCodeCamp.org, altul decât acesta folosind un set separat de baze de date, servere, web-proxy-uri etc. Această izolare ne permite să testăm dezvoltarea continuă şi caracteristicile unui scenariu de „producţie”, fără a afecta utilizatorii obişnuiţi de platformele principale ale freeCodeCamp.org.

Odată ce echipa de dezvoltatori @freeCodeCamp/dev-team este mulțumită de modificările de pe platforma de stagii, aceste modificări sunt mutate la fiecare câteva zile la ramura de producție-curent.

Aceasta este versiunea finala care muta schimbari la platformele noastre de productie pe freeCodeCamp.org.

Testare modificări - Testare de integrare și acceptare a utilizatorului.

Folosim diferite niveluri de integrare și testare a acceptării pentru a verifica calitatea codului. Toate testele noastre sunt efectuate prin programe precum Travis CI și Aur Conducte.

Avem teste unitare pentru testarea soluțiilor provocatoare, API-uri server și interfețe de Utilizator Client. Acestea ne ajută să testăm integrarea între diferite componente.

[!NOTĂ] Suntem, de asemenea, în proces de scriere a unor teste de sfârșit care vor ajuta la replicarea scenariilor din lumea reală, cum ar fi actualizarea unui e-mail sau efectuarea unui apel către API sau servicii terțe.

Împreună, aceste teste ajută la prevenirea repetării problemelor și se asigură că nu introducem o eroare atunci când lucrăm la o altă eroare sau la o caracteristică.

Schimbări Deploying - Pushing changes to servers.

Am configurat software-ul de livrare continuă pentru a împinge schimbările la serverele noastre de dezvoltare și producție.

Odată ce modificările sunt împinse la ramurile protejate de lansare, o conductă de construcții este activată automat pentru sucursală. Conductele de construcții sunt responsabile de construirea artefactelor și de păstrarea lor într-un depozit frigorific pentru o utilizare ulterioară.

Conducta de construcţii continuă să declanşeze o conductă de eliberare corespunzătoare dacă finalizează o rulare de succes. Conductele de lansare sunt responsabile pentru colectarea artefactelor de construcție, mutarea lor pe servere și începerea activității.

Starea construcțiilor și a versiunilor sunt disponibile aici.

Declanşarea unei construcţii, testări şi implementări.

În prezent, numai membrii echipei de dezvoltatori pot împinge către filialele de producţie. Modificările la filialele producția-* pot ateriza doar prin îmbinare rapidă în în amonte.

[!NOTĂ] În zilele următoare am îmbunătăți acest flux care se face prin cereri de tragere, pentru o mai bună gestionare a accesului și transparență.

Se trimit modificări la Staging Applications.

  1. Configureaza corect telecomenzile.

    git remote -v
    

    Rezultate:

    origin git@github.com:raisedadead/freeCodeCamp.git (fetch)
    origin git@github.com:raisedadead/freeCodeCamp.git (push)
    upstream git@github.com:freeCodeCamp/freeCodeCamp.git (fetch)
    în amonte git@github.com:freeCodeCamp/freeCodeCamp.git (push)
    
  2. Asigură-te că stăpânește ramura ta este primită și sincronizată cu partea de sus.

    git checkout master
    git fetch --all --prune
    git reset --hard upstream/master
    
  3. Verificați dacă Travis CI transmite ramura master pentru amonte.

    Testele de integrare continuă ar trebui să fie verzi și PASSING pentru ramura master.

    Verificarea stării pe Travis CI (captura de ecran)
    ![Verifică starea construirii pe Travis CI](https://raw.githubusercontent.com/freeCodeCamp/freeCodeCamp/master/docs/images/devops/travis-build.png)

    Dacă acest lucru nu reușește, trebuie să opriți și să investigați erorile.

  4. Confirmă că poți construi depozitul local.

    npm curățare și dezvoltare
    
  5. Mută modificările de la master la producție-stagaging printr-o îmbinare rapidă înainte

    git checkout production-staging
    git merge master
    git push upstream
    

    [!NOTĂ] Nu veți putea să apăsați forțat și dacă ați rescris istoricul în oricum aceste comenzi vor era.

    Dacă o fac, poate aţi făcut ceva incorect şi ar trebui doar să începeţi din nou.

Pașii de mai sus vor declanșa automat o rulare pe conducta de construcție pentru ramura production-staging. Odată ce construcția este completă, artefactele sunt salvate ca .zip fișiere într-un depozit rece pentru a fi extrase și utilizate mai târziu.

Conducta de lansare este declanșată automat atunci când un artefact nou este disponibil prin conducta de construcții conectată. Pentru platformele de aşteptare, acest proces nu implică aprobare manuală, iar artefactele sunt împinse către serverele CDN şi API.

[!TIP label:Estimări] În mod tipic, construcția durează ~20-25 de minute pentru a fi completată, urmată de o execuție de eliberare, care durează ~15-20 de minute pentru client, ~5-10 minute pentru ca API-ul să fie disponibil în direct. De la apăsarea codului la a fi în direct pe platformele de stagii, întregul proces ia ~35-45 min în total.

Se impun modificări aplicațiilor de producție.

Procesul este în mare parte identic cu platformele de așteptare, existând câteva verificări suplimentare. Acest lucru este doar pentru a ne asigura că nu stricăm nimic pe freeCodeCamp.org care poate vedea sute de utilizatori folosindu-l în orice moment.

NU executați aceste comenzi dacă nu ați verificat că totul funcționează pe platforma de așteptare. Nu trebuie să evitaţi sau să săriţi peste nici un test la punerea în scenă înainte de a continua în continuare.
  1. Asigură-te că ramura ta production-staging este curată și sincronizată cu partea de sus.

    git checkout production-staging
    git fetch --all --prune
    git reset --hard upstream/production-staging
    
  2. Mută modificările de la production-staging la production-current printr-o fuziune rapidă

    git checkout production-current
    git fuzionare production-staging
    git push upstream
    

    [!NOTĂ] Nu veți putea să apăsați forțat și dacă ați rescris istoricul în oricum aceste comenzi vor era.

    Dacă o fac, poate aţi făcut ceva incorect şi ar trebui doar să începeţi din nou.

Etapele de mai sus vor declanșa automat o rulare pe conducta de construcție pentru ramura production-current. Odată ce un artefact de construcție este gata, va declanșa o rulare pe conducta de eliberare.

[!TIP label:Estimări] În mod tipic, rularea construcției necesită ~20-25 minute până la finalizare.

Pași suplimentari pentru acțiunea personalului

Se declanșează o lansare, membrii echipei de dezvoltatori vor primi un e-mail de intervenție manual automat. Ei pot aproba sau respinge rularea versiunii.

Dacă modificările funcţionează bine şi au fost testate pe platforma de aşteptare, atunci acestea pot fi aprobate. Aprobarea trebuie acordată în termen de 4 ore de la declanşarea versiunii înainte de a fi respinsă automat. Un membru al personalului poate declanșa din nou eliberarea rulată manual pentru curse respinse, sau poate aștepta următorul ciclu de eliberare.

Pentru uzul personalului:

Verifică-ți e-mailul pentru un link direct sau mergi la tabloul de bord al lansării după ce construcția este completă.

Odată ce unul dintre membrii personalului aprobă o versiune, conducta va împinge schimbările live pe serverele de producție CDN și API ale freeCodeCamp.org. De obicei iau ~15-20 minute pentru client, și ~5 minute pentru ca serverele API să fie disponibile în direct.

[!TIP label:Estimări] Versiunea rulează de obicei durează ~15-20 minute pentru fiecare exemplu de client și ~5-10 minute pentru fiecare instanță API pentru a fi disponibil în direct. De la împingerea codului la live pe platformele de producție, întregul proces ia ~90-120 min în total (fără a număra timpul de așteptare pentru aprobarea personalului).

Stadiul de construcție, încercare și desfășurare

Iată testul curent, stadiul de construire și implementare a codebasului.

Tip Sucursala Status Panou
Teste CI Maestru Stare Build CI Travis Mergeți la tabloul de bord
Teste CI stagnarea producției Stare Build CI Travis Mergeți la tabloul de bord
Conducta de compilare stagnarea producției Stare compilare Mergeți la tabloul de bord
Conducta de lansare stagnarea producției Mergeți la tabloul de bord
Teste CI producție-curent Stare Build CI Travis Mergeți la tabloul de bord
Conducta de compilare producție-curent Stare compilare Mergeți la tabloul de bord
Conducta de lansare producție-curent Mergeți la tabloul de bord

Acces precoce şi testare beta

Vă urăm bun venit pentru a testa aceste versiuni într-un mod "testare beta publică" şi obţineţi acces timpuriu la caracteristicile viitoare ale platformelor. Uneori aceste caracteristici/modificări sunt menționate ca în continuare, beta, staging, etc. interschimbabil.

Contribuțiile dvs. prin feedback și rapoarte de probleme ne vor ajuta în crearea platformelor de producție pe freeCodeCamp. rg mai multe rezilient, consistent și stabil pentru toată lumea.

Vă mulţumim pentru raportarea erorilor cu care vă confruntaţi şi pentru ajutorul în îmbunătăţirea freeCodeCamp.org. Tu stânci!

Identificarea versiunii viitoare a platformelor

În prezent, o versiune publică de testare beta este disponibilă la adresa:

freecodecamp.dev

[!NOTĂ] Domeniul este diferit de freeCodeCamp.org. Acest lucru este intenționat pentru a preveni indexarea motorului de căutare și pentru a evita confuzia în rândul utilizatorilor obișnuiți ai platformei.

Identificarea versiunii actuale a platformelor

Versiunea curentă a platformei este întotdeauna disponibilă la freeCodeCamp.org.

Echipa dev-team îmbină schimbări din filiala production-staging în production-current atunci când eliberează modificări. Cel mai important angajament ar trebui să fie ceea ce vezi în direct pe site.

Puteți identifica versiunea exactă implementată vizitând jurnalele de construcție și implementare disponibile în secțiunea de stare. Alternativ, ne poți da și în camera de chat a contributorilor pentru confirmare.

Limitări cunoscute

Există unele limitări și compromisuri cunoscute când se utilizează versiunea beta a platformei.

  • Toate datele / progresul personal pe aceste platforme beta NU vor fi salvate sau reportate la producție.

    Utilizatorii din versiunea beta vor avea un cont separat de producție. Versiunea beta folosește o bază de date separată fizic de producție. Acest lucru ne permite să prevenim orice pierdere accidentală de date sau modificări. Echipa de dezvoltatori poate şterge baza de date pe această versiune beta în funcţie de necesităţi.

  • Nu există garanții pentru uptime și fiabilitate a platformelor beta.

    Este de aşteptat ca instalarea să fie frecventă şi, în iteraţii rapide, uneori de mai multe ori pe zi. Drept urmare, va exista o întrerupere neașteptată la anumite momente sau o funcționalitate întreruptă a versiunii beta.

  • Nu trimite utilizatori obișnuiți pe acest site ca măsură de confirmare a unei reparații

    Situl beta este şi a fost întotdeauna acela de a spori dezvoltarea locală şi testarea, nimic altceva. Nu este o promisiune a ceea ce vine, ci o privire asupra a ceea ce se lucrează.

  • Pagina de semnare poate arăta diferit de producție

    Folosim un chiriaş de test pentru freecodecamp.dev pe Auth0, şi de aceea nu avem abilitatea de a seta un domeniu personalizat. Acest lucru face ca toate callback-urile de redirecționare și pagina de autentificare să apară într-un domeniu implicit, cum ar fi: https://freecodecamp-dev.auth0.com/. Acest lucru nu afectează funcționalitatea este atât de aproape de producție pe cât putem obține.

Raportarea problemelor și oferirea de feedback

Vă rugăm să deschideți noi probleme pentru discuții și raportare bug-uri. Poți să le etichetezi ca versiune : următorul/beta pentru triaj.

Puteţi trimite un e-mail la dev[at]freecodecamp.org dacă aveţi întrebări. Ca întotdeauna, toate vulnerabilităţile de securitate ar trebui raportate securităţii[at]freecodecamp.org în loc de public tracker şi forum.