步骤11:分支代码

5.2版本
保持 没有维护的
5.0

分支代码

有很多方法可以组织项目中代码更改的工作流。但是直接在Git主分支上工作并直接部署到生产环境中而不进行测试可能不是最好的方法。

测试不仅仅是关于单元测试或功能测试,它还与使用生产数据检查应用程序行为有关。如果你或你的利益攸关方可以完全浏览应用程序,因为它将部署到最终用户,这成为一个巨大的优势,并允许您充满信心地部署。当非技术人员可以验证新功能时,尤其强大。

为了简单和避免重复,我们将在接下来的步骤中继续在Git主分支中完成所有工作,但是让我们看看如何更好地工作。

采用git工作流程

一个可能的工作流程是每个新功能或错误修复创建一个分支。这简单又高效。

创建分支机构

工作流程从创建Git分支开始:

1
$ git branch -D sessions-in-db||真正的
1
$ git checkout -b会话 -  in-db

此命令创建一个会话 - in-dB分支从这一点分支。它“分叉”代码和基础结构配置。

在数据库中存储会话

正如您可能已经从分支名称猜到的那样,我们希望将会话存储从文件系统切换到数据库存储(这里是我们的PostgreSQL数据库)。

使它成为现实的所需步骤是典型的:

  1. 创建一个git分支;
  2. 如果需要更新Symfoob娱乐下载ny配置;
  3. 如果需要,请编写和/或更新一些代码;
  4. 更新PHP配置如果需要(如添加PostgreSQL PHP扩展);
  5. 如果需要,更新Docker和SymfonyCloud上的基础设施(添加Postgob娱乐下载rob直播appeSQL服务);
  6. 在本地测试;
  7. 远程测试;
  8. 合并分支到掌握;
  9. 部署到生产;
  10. 删除分支。

要在数据库中存储会话,请更改session.handler_id配置要指向数据库DSN:

patch_file.
1 2 3 4 5 6 7 8 9 10
——/ config /包/ framework.yaml+++ b / config / packages / framework.yaml@@ -7,7 +7,7 @@框架:#启用会话支持。请注意,只有在从中读取或写入时,才会启动会话。#删除或注释此部分以显式禁用会话支持。会议:- handler_id:零+ handler_id:'%env(database_url)%'cookie_secure:auto cookie_samesite:lax

要在数据库中存储会话,我们需要创建会话桌子。用学说迁移这样做:

1
$ ob娱乐下载symfony控制台:迁移

控件中添加表创建的文件向上()方法:

patch_file.
12 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
——/迁移/ Version00000000000000.php+ + + b /迁移/ Version00000000000000.php@@ -21,6 +21,14 @@ Final Class version00000000000000扩展了抽象段落{// up()迁移是自动生成的,请修改您的需求+ $ this - > addSql ('+ CREATE TABLE session ()+ sess_id varchar(128)不是null主键,+ sess_data bytea不是null,+ sess_lifetime整数不是null,+ sess_time INTEGER NOT NULL+)+');} public function down(Schema $ Schema): void

迁移数据库:

1
$ ob娱乐下载symfony控制台教义:迁移:迁移

通过浏览网站在本地测试。由于没有视觉变化,因为我们尚未使用会话,但一切都应该像以前一样工作。

笔记

我们在这里不需要步骤3到5,因为我们将数据库重新使用数据库作为会话存储,但是关于使用REDIS的章节显示在Docker和SymfonyCloud中添加,测试和部署新服务的章节。ob娱乐下载ob直播app

随着新表不是由Doctrine“管理”的,我们必须在下一个数据库迁移中配置Doctrine无法将其删除:

patch_file.
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: '13'++ schema_filter:〜^(?!会话)〜ORM:auto_generate_proxy_classes:true naming_strategy:doctrine.orm.naming_strialy.underscore_number_aware

提交对新分支机构的更改:

1 2
$ git添加。$ git commit -m“配置数据库会话”

部署分支

在部署到生产之前,我们应该在同一基础架构上测试分支作为生产一个。我们还应该验证一切适用于Symfonyob娱乐下载刺激(当地网站使用Symfonyob娱乐下载开发环境)。

现在,我们来创建ob娱乐下载Sob直播appymfonyCloud环境基于Git分支

1
$ ob娱乐下载symfony env:删除session -in-db——no-interaction
1
$ ob娱乐下载symfony env:创建

这个命令创建一个新的环境,如下所示:

  • 该分支从当前Git分支(会话 - in-dB);
  • 通过对所有服务数据(包括文件(例如用户上传的文件)和数据库)进行一致的快照,数据来自主环境(即生产环境);
  • 创建一个新的专用群集以部署代码,数据和基础架构。

由于部署遵循与部署到生产环境相同的步骤,因此也将执行数据库迁移。这是验证迁移是否与生产数据一起工作的好方法。

环境非常相似除了一些小差异外,还有:例如,默认情况下不会发送电子邮件。

一旦部署完成,在浏览器中打开新的分支:

1
美元ob娱乐下载symfony开放:远程

注意,所有SymfonyClob娱乐下载oob直播appud命令都在当前Git分支上运行。控件打开已部署的URL会话 - in-dB分支;URL看起来像https://sessions-in-db-xxx.eu.s5y.io/

在这个新环境上测试网站,应该会看到在主环境中创建的所有数据。

如果您在环境,他们不会出现在会话 - in-dB环境,反之亦然。环境是独立和孤立的。

如果代码在master上发展,您总是可以重新建立Git分支并部署更新后的版本,解决代码和基础设施的冲突。

甚至可以将数据从主服务器同步回会话 - in-dB环境:

1
美元ob娱乐下载symfony env:同步

在部署之前调试生产部署

默认情况下,所有SymfonyCob娱乐下载lob直播appoud环境都使用与此相同的设置/刺激环境(又名Symfonyob娱乐下载刺激环境)。这允许您在现实生活条件下测试应用程序。它为您提供直接在生产服务器上开发和测试的感觉,但没有与之相关的风险。这让我想起了我们通过FTP部署的美好时光。

如果出现问题,您可能需要切换到开发ob娱乐下载Symfony环境:

1
$ ob娱乐下载symfony env:调试

完成后,回到生产设置:

1
$ ob娱乐下载symfony env:debug -off

警告

绝不启用开发的Symfony Profilerob娱乐下载分支;它会使您的应用程序非常缓慢并开放许多严重的安全漏洞。

部署之前测试生产部署

能够访问带有生产数据的即将发布的网站版本将带来许多机会:从视觉回归测试到性能测试。黑火是这份工作的完美工具。

请参考关于“性能”的步骤,了解如何在部署之前使用Blackfire测试代码的更多信息。

合并生产

当您对分支更改满意时,将代码和基础架构合并回Git Master分支:

1 2
$ git checkout master $ git合并会话 -  in-db

和部署:

1
$ ob娱乐下载symfony部署

部署时,只将代码和基础架构更改推送到SymfonyCloud;ob娱乐下载ob直播app数据不受任何方式影响。

清理

最后,通过删除Git分支和SymfonyCloud环境来进行清理:ob娱乐下载ob直播app

1 2
$ git branch -d sessions-in-db $ ob娱乐下载symfony env:delete --env=会话 -  in-db --no-interaction

这项工作,包括代码样本,是在一个Creative Commons BY-NC-SA 4.0执照。