Zarządzanie gałęziami kodu
Zarządzanie gałęziami kodu
Istnieje wiele sposobow zarządzania zmianami kodu w projekcie。Tym niemniej, praca bezpośrednio na gałęzi głownej (ang。主)oraz bezpośrednie wdrożenia naśrodowisko produkcyjne z pominięciem testow prawdopodobnie聂sąnajlepszym pomysłem。
W testowaniu聂chodzi tylko o暴躁的jednostkowe czy funkcjonalne,啤酒rownieżo sprawdzanie zachowania aplikacji z danymi produkcyjnymi。Jeśli泰滑Twoiinteresariuszemogąprzeglądaćaplikacjędokładnie达克,木菠萝zostanie ona wdrożona国防后勤局użytkownikow końcowych, staje się,ogromnązaletą我pozwala na bezpieczne wdrażanie。Jest szczegolnie ważne, jeśli ludzie nietechniczni mogązatwierdzaćnowe funkcje。
国防后勤局uproszczenia我uniknięcia powtarzania sięw kolejnych krokach będziemy kontynuowaćcałąpracęna gałęzi głownej (ang。主)w repozytorium Git,啤酒zobaczmy,木菠萝może działaćlepiej。
Organizacja一家高z użyciem systemu Git
Jednym z możliwych sposobow一家jest utworzenie jednej gałęzi国防后勤局każdej nowej funkcji滑poprawki błędu。Jest proste skuteczne。
Tworzenie gałęzi
Praca rozpoczyna sięwraz z utworzeniem gałęzi Git:
1
美元git分支- d sessions-in-db | |真正的
1
美元git checkout - b sessions-in-db
对polecenie stworzy gałąźsessions-in-db
z gałęzi主
。“rozwidla”działanie kod我konfiguacjęinfrastruktury。
Przechowywanie sesji w bazie danych
木菠萝można siędomyślić阿宝nazwie gałęzi, chcemy przełączyćprzechowywanie sesji z systemu plikow na bazędanych (stworzonąprzez nas w PostgreSQL)。
Kroki niezbędne做urzeczywistnienia tej koncepcji sątypowe:
- Stworz gałąźGit;
- W razie potrzeby zaktualizuj konfiguracjęSob娱乐下载ymfony;
- Napisz i /滑zaktualizuj kod, jeśli zajdzie魏potrzeba;
- 如果需要更新PHP配置(比如添加PostgreSQL PHP扩展);
- Zaktualizuj infrastrukturęw Dockerze我平台。sh jeżeli jest potrzeba (dodaj usługęPostgreSQL);
- Przetestuj lokalnie;
- Przetestuj zdalnie;
- Połącz (ang。合并)bieżącągałąźz gałęziągłowną(ang。掌握);
- Wdroż(ang。部署)na produkcję;
- Usuńgałąź。
Żeby przechowywaćsesje w bazie danych, zmieńkonfiguracjęsession.handler_id
德,żeby wskazywała na DSN bazy:
1 2 3 4 5 6 7 8 9 10 11
- - - / config /包/ framework.yaml+ + + b / config /包/ framework.yaml@@ 8 7 + 8 7 @@框架:#使会话的支持。注意,会议才会开始如果你读或写。#删除或注释本节明确禁用会话的支持。会话:- handler_id:零+ handler_id: ' % env(解决:DATABASE_URL) % 'cookie_secure:汽车cookie_samesite:宽松storage_factory_id: session.storage.factory.native
Żeby przechowywaćsesje w bazie danych, musimy utworzyćtabele会话
。Zrob, wykorzystując migracje学说:
1
美元ob娱乐下载symfony控制台:迁移
Zmodyfikuj plik达克,赎w metodzie()
dodaćtworzenie tabeli:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
- - - /迁移/ Version00000000000000.php+ + + b /迁移/ Version00000000000000.php@@ -21年6 + 21日15 @@最终类Version00000000000000延伸AbstractMigration{/ /这个()迁移是自动生成的,请修改它来满足您的需求+ $ this - > addSql ('+创建表会话(+ sess_id VARCHAR (128) NOT NULL主键,+ sess_data BYTEA非空,+ sess_lifetime整数非空,+ sess_time整数NOT NULL+)+ ');+ $ this - > addSql(“会话(sess_lifetime)上创建索引失效”);}公共函数(模式美元):空白
Wykonaj migracjębazy danych:
1
美元ob娱乐下载symfony控制台学说:迁移:迁移
Przetestuj lokalnie, poprzez przeglądanie strony internetowej。马Ponieważ聂żadnych zmian wizualnych我聂korzystamy jeszcze z sesji wszystko powinno działać达克木菠萝wcześniej。
请注意
聂potrzebujemy tutaj krokow od 3做5,ponieważponownie używamy bazy danych jako magazynu sesji,啤酒rozdziało korzystaniu z Redisa pokazuje,木菠萝proste jest dodawanie, testowanie我wdrażanie nowej usługi zarowno w Dockerze,木菠萝我Platform.sh。
Ponieważ现代”tabela聂jest„zarządzana”przez教义,musimy skonfigurować教义达克,赎聂usuwałjej podczas następnej migracji bazy danych:
1 2 3 4 5 6 7 8 9 10 11
- - - / config /包/ doctrine.yaml+ + + b / config /包/ doctrine.yaml@@ 5、6 + 5 8 @@学说:#重要:您必须配置您的服务器版本,#在这里或在DATABASE_URL env var(见.env文件)# server_version:“14”++ schema_filter: ~ ^ ~(? !会话)orm: auto_generate_proxy_classes:真正naming_strategy: doctrine.orm.naming_strategy.underscore_number_aware
Zatwierdź(ang。提交)swoje zmiany做nowej gałęzi (ang。分支机构):
1 2
美元git添加。美元git commit - m“配置数据库会话”
Wdrażanie gałęzi
Przed wdrożeniem (ang。部署)na produkcjępowinniśmy przetestowaćgałąźna tej samej infrastrukturze, co infrastruktura produkcyjna。Powinniśmy rownieżsprawdzić,czy wszystko działa dobrze国防后勤局środowiska刺激
ob娱乐下载Symfony (lokalna strona internetowa korzystała泽środowiskadev
ob娱乐下载Symfony)。
Teraz stworzmyśrodowisko Platform.shoparte nagałęzi Git:
1
美元ob娱乐下载syob直播appmfony云:env:删除sessions-in-db
1
美元ob娱乐下载syob直播appmfony云:部署
Polecenie, tworzy noweśrodowisko w następujący sposob:
- Gałąździedziczy kod我infrastrukturę阿宝obecnej gałęzi Git (
sessions-in-db
); - 戴恩pochodzą泽środowiska głownego (zwanego teżprodukcyjnym) poprzez wykonanie spojnego obrazu danych z wszystkich usług, w tym plikow (np。我巴兹danych plikow przesłanych przez użytkownika);
- Tworzony jest nowy dedykowany klaster做wdrożenia kodu, danych我infrastruktury。
Ponieważwdrożenie odbywa sięzgodnie z这种samymi krokami公司wdrożenie na produkcjęmigracje做巴兹danych rownieżbędąwykonywane。Jestświetny sposob na sprawdzenie, czy migracje działająz danymi produkcyjnymi。
Środowiska inne niż主
sąbardzo做niego podobne z wyjątkiem kilku małych rożnic: na przykład wiadomości电子邮件聂sądomyślnie wysyłane。
阿宝zakończeniu wdrożenia otworz nowągałąźw przeglądarce:
1
美元ob娱乐下载syob直播appmfony云:url 1
Zauważ,że wszystkie polecenia平台。sh działająna bieżącej gałęzi Git。国防后勤局gałęzi Spowoduje, otwarcie adresu URLsessions-in-db
——这条URL będzie wyglądał德:https://sessions - - db - xxx.eu - 5. platformsh.site/
。
Przetestuj stronęinternetowąna tym nowymśrodowisku, powinny byćwidoczne wszystkie戴恩,ktore zostały stworzone wśrodowisku głownym (ang。大师)。
Jeśli dodasz więcej konferencji wśrodowisku produkcyjnym (gałąź主
),聂pojawiąsięwśrodowisku之一sessions-in-db
我亦然。Środowiska sąniezależne我odizolowane。
Jeśli zmieni siękod w gałęzi głownej Git, zawsze można zrestartowaćgałąź我wdrożyćzaktualizowanąwersję,rozwiązując konflikty zarowno国防后勤局kodu,木菠萝我infrastruktury。
Można nawet zsynchronizować戴恩z gałęzi głownej (ang。主)z powrotemśrodowiskasessions-in-db
:
1
美元ob娱乐下载syob直播appmfony云:env:同步
Debugowanie wdrożeńprodukcyjnych przed właściwym wdrożeniem
Domyślnie wszystkieśrodowiska平台。sh używajątych samych ustawień,środowisko主
/刺激
(znane rownieżjakośrodowisko刺激
ob娱乐下载Symfony)。Pozwala na przetestowanie aplikacji w rzeczywistych warunkach。Daje, poczucie rozwoju我testowania bezpośrednio na serwerach produkcyjnych,啤酒鹿角的第二叉związanego z tym ryzyka。Przypomina mi, dawne dobre czasy, kiedy wdrożenia robiliśmy przez FTP。
W przypadku wystąpienia problemu, możesz chciećprzełączyćsięnaśrodowiskodev
ob娱乐下载Symfony:
1
美元ob娱乐下载syob直播appmfony云:env:调试
阿宝zakończeniu należy powrocić做ustawieńprodukcyjnych:
1
美元ob娱乐下载syob直播appmfony云:env:调试——了
警告
Nigdy聂ustawiajśrodowiskadev
我nigdy聂włączaj Symfoob娱乐下载ny分析器na gałęzi主
;spowoduje,że Twoja aplikacja będzie naprawdępowolna我otworzy wiele陆poważnych w zabezpieczeniach。
Testowanie wdrażania produkcji przed właściwym wdrożeniem
Dostęp做nowej wersji strony internetowej z danymi produkcyjnymi otwiera wiele możliwości: od testow regresji wizualnej阿宝wydajnościowe极不稳定。黑焰jest idealnym narzędziem做迪高zadania。
Przejdź做etapu poświęconegowydajności,赎dowiedziećsięwięcej o tym木菠萝można użyć黑焰做przetestowania kodu przed wdrożeniem。
Scalanie z produkcją
Gdy jesteśzadowolony泽zmian w gałęzi,宏大kod我infrastrukturęz powrotem gałęzi głownej (ang。Git主):
1 2
美元git checkout主美元git合并sessions-in-db
我wdroż:
1
美元ob娱乐下载syob直播appmfony云:部署
Podczas wdrażania, tylko kod我zmiany w infrastrukturze sąprzekazywane Platform.sh;戴恩聂sąwżaden sposob naruszone。
Sprzątanie
W końcu posprzątaj, usuwając gałąźGit我środowisko Platform.sh:
1 2
美元git分支- d sessions-in-db美元ob娱乐下载syob直播appmfony云:env:删除- e sessions-in-db
Idąc dalej