Den代码分支

Den代码分支

Es gibt viele Möglichkeiten, den Workflow von Code-Änderungen in einem Projekt zu organisieren - Das direkte Arbeiten am Git Master-Branch and direkte Einsatz im Produktivbetrieb ohne Tests ist aber niht der best Weg。

Beim Testen geht neht nur um Unit- oder Funktionale Tests, sondern auch um die Überprüfung des Anwendungsverhaltens mit echten Daten。Wenn Du oder Deine利益相关者die Anwendung genau so benutzen können, wie sie für Endbenutzer*innen bereitgestellt wid, entsteht ein groer Vorteil, der Dir ermöglicht die Anwendung mit Vertrauen deployen zu können。高效率,高效率的技术人员können。

Wir werden der Einfachheit halber (und zur Vermeidung von Wiederholungen) die nächsten Schritte auf dem Git Master-Branch fortführen, aber mal sehen, wie das besser funktionieren könnte。

Einen Git-Workflow einführen

Ein möglicher Workflow ist die Erstellung eines Branches pro neuem Feature order bug修正。Das是有效的。

分支erstellen

工作流开始于Erstellung eines Git-Branches:

1
git分支-D session -in-db ||真正的
1
Git checkout -b sessions-in-db

diesel Befehl erstellt einensessions-in-db-分支,基端分支。Es "spaltet" den代码和die基础结构配置手册分支ab。

会议在der Datenbank speichern

Wie Du vielleicht schon am Namen des Branches erraten hast, wollen wir die Speicherung der Sessions vom Dateisystem auf (unsere PostgreSQL) Datenbank umstellen。

Die endigen Schritte,嗯Die zu verwirklichen, sind typisch:

  1. 厄斯特尔·艾宁·吉特布兰奇;
  2. Aktualisiere bei Bedarf die ob娱乐下载symfony -构型;
  3. Schreibe und/oder aktualisiere bei Bedarf etwas密码;
  4. 如果需要更新PHP配置(比如添加PostgreSQL PHP扩展);
  5. Aktualisiere die Infrastruktur auf Docker und Platform.sh falls nötig (füge den PostgreSQL-Dienst hinzu);
  6. 证人lokal;
  7. 证人偏远;
  8. Führe den Branch mit dem Master-Branch zusammen;
  9. 部署在模具Produktivumgebung;
  10. Lösche den Branch。

塞申斯在der Datenbank zu speichern, ändere diesession.handler_id-Konfiguration so, dass sie auf den Datenbank-DSN weist:

1 2 3 4 5 6 7 8 9 10 11
——/ config /包/ framework.yaml+ + + b / config /包/ framework.yaml@@ -8,7 +8,7 @@ framework: #启用会话支持。请注意,只有在对会话进行读写时才会启动会话。#删除或注释此部分以显式禁用会话支持。会话:—handler_id: null+ handler_id: '%env(resolve:DATABASE_URL)%'Cookie_secure: auto cookie_sameite: lax storage_factory_id: session.storage.factory.native

嗯Sessions in der Datenbank zu speichern, müüsen wir die会话-Tabelle anlegen。马赫理论迁移:

1
ob娱乐下载Symfony控制台make:迁移

Bearbeite die Datei um die Tabellenerstellung in der()方法hinzuzufugen:

12 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 extends AbstractMigration{//这个up()迁移是自动生成的,请根据您的需要修改它+ $ this - > addSql ('+创建表会话(+ sess_id VARCHAR(128) NOT NULL主键,+ sess_data BYTEA NOT NULL,+ sess_lifetime INTEGER NOT NULL,+ sess_time INTEGER NOT NULL+)+ ');+ $this->addSql('CREATE INDEX expiry ON sessions (sess_lifetime)');}公共函数关闭(Schema $ Schema):无效

Führe die Datenbankmigration aus:

1
ob娱乐下载Symfony控制台原则:迁移:迁移

Teste lokal, indem Du Dir die Website anschaust。我们的视觉世界Veränderungen世界和我们的视觉世界,与我们的视觉世界同在。

请注意

Schritt 3 bis 5 hier nht, weil Wir Datenbank erneut für die Session-Speicherung gebrauchen, aber das Kapitel wie man Redis gebraucht zeigt unkomplizert wie man einenneuen Dienst für Docker和Platform.sh hinzufügt,测试和beritstellt。

Da die neue Tabelle nicht durch Doctrine "verwaltet" wd, müssen wir Doctrine so konfigurieren, dass die Tabelle nicht bei der nächsten Datenbankmigration entfernt wd:

1 2 3 4 5 6 7 8 9 10 11
——/ config /包/ doctrine.yaml+ + + b / config /包/ doctrine.yaml@@ -5,6 +5,8 @@ doctrine: #重要的是:您必须配置您的服务器版本,#在这里或在DATABASE_URL env var(参阅。env文件)#server_version: '14'++ schema_filter: ~^(?!session)~Orm: auto_generate_proxy_classes: true naming_strategy: doctrine.orm.naming_strategy.underscore_number_aware

提交Deine Änderungen zu dem neuen分支:

1 2
Git添加。Git提交-m“配置数据库会话”

Einen分支部署

生产系统部署,分支机构基础设施和生产环境测试。Wir sollten och sicherstellen, dass für die Sob娱乐下载ymfony刺激-环境alles gut funktioniert (die lokale网站帽死Symfonyob娱乐下载dev环境verwendet)。

最后一个修女Platform.sh-Environment厄斯特伦,去死吧的git分支basiert:

1
ob娱乐下载Syob直播appmfony cloud:env:delete session -in-db
1
ob娱乐下载syob直播appmfony云:部署

diesel Befehl erstellt eine neue环境:

  • 代码和基础设施工程总行(sessions-in-db);
  • 在主环境的基础上(auch bekannt als Production oder producktivumgebung),和zwar durch eine momentaufnamhme aller Servicedaten, einschie ßlich Dateien (z. B. von Benutzer*innen hochgeladene Dateien)和Datenbanken;
  • 集群的原始代码,原始数据和原始基础结构部署。

德国数据银行迁移durchgeführt。死亡的方式,gleicheitig eine gute Möglichkeit um sicherzugehen, dass die migration mit echten Daten funktioniren。

死走错--环境信德-环境调查员ähnlich, bis auf einige kleine Unterschiede: So werden beispielsweise e - mail standardmäßig nicht gesendet。

Wenn das部署abgeschlossen ist, öffne den neuen分支在einem浏览器:

1
ob娱乐下载Syob直播appmfony cloud:url -1

Beachte, dass alle Platform.sh-Befehle mit aktuellen Git-Branch arbeiten。Somit bird der Befehl die URL für densessions-in-db分支aufrufen。我不知道怎么回事https://sessions-in-db-xxx.eu-5.platformsh.site/来自。

测试die网站auf diesel neuen环境。Du solltest jetzt alle Daten sehen, die Du in der Master-Environment angelegt hast。

Wenn Du weitere Konferenzen in die-环境hinzufügst, werden diese nicht in dersessions-in-db-环境安吉和umgekehrt。死亡环境信德unabhängig和孤立。

Wenn sich der Code auf Master weiterentwickelt, kannst Du diese Änderungen jederzeit mittels变基in den aktuellen Branch integreren und die aktualisierte版本部署,woodurch die Konflikte sowohl für den Code als auch für die infrastructure gelöst werden。

Du kannst sogar die Daten von Master zurück in diesessions-in-db环境synchronisieren:

1
ob娱乐下载syob直播appmfony云:env:同步

Fehler von部署在die producktivumgebung vermeiden

Standardmäßig verwenden allle平台。sh-环境死亡爱因斯坦下/刺激-环境(人是不会死的刺激-ob娱乐下载Symfony-Environment)。我知道你在哪里,我在哪里,我在哪里。die gibt Dir das Gefühl,在生产系统和测试系统的指导下,在damit verbundenen Risiken。Das erinnert michigan an die guten alten Zeiten, als wir部署noch über FTP gemacht haben。

Wenn in Problem auftritt, möchtest Du vielleicht auf diedev-ob娱乐下载Symfony-Environment wechseln:

1
ob娱乐下载syob直播appmfony云:env:调试

文杜费蒂格比斯特,葛河zurück祖登生产部门:

1
ob娱乐下载Syob直播appmfony cloud:env:debug—off

警告

Aktiviereniemalsdev- Symfony Profiler的环境命ob娱乐下载令分支;死亡würde Deine Anwendung wiirklich langsam machen and viele ernsthafte Sicherheitsschwachstellen öffnen。

产品安装测试部署测试

Der Zugriff auf die zukünftige版本Der网站mit echten Daten eröffnet viele Möglichkeiten: vom visuellen Regressionstest bis zum性能测试。黑焰ist das perfekte Werkzeug für diese Aufgabe。

谎言登施里特über性能,嗯mehr darüber zu erfahren, wie Du Blackfire verwenden kannst,嗯Deinen代码vor dem部署zu testen。

在die Produktivumgebung mergen

Wenn Du mit den Änderungen im Branch zufrieden bist, führe den Code und die Infrastruktur wieder in den Git Master-Branch zurück:

1 2
Git checkout masterGit合并session -in-db

和时:

1
ob娱乐下载syob直播appmfony云:部署

Beim部署werden nur die代码- und Infrastrukturänderungen zu Platform.sh übertragen;die Daten werden in keiner Weise beeinträchtigt。

Aufraumen

Entferne zum Abschluss den Git-Branch und die平台。sh-环境:

1 2
Git分支-d session -in-dbob娱乐下载Syob直播appmfony cloud:env:delete -e sessions-in-db
此工作,包括代码示例,是根据知识共享协议BY-NC-SA 4.0许可证。