ad

《Python+3自动化软件发布系统》Django 2实战_了解Python的更好方法_4.6 环境数据表

网友投稿 135 2023-11-07

【摘要】 本书摘自《Python+3自动化软件发布系统》一书中第4章,第6节,由陈刚、王洪军编著。

4.6 环境数据表

环境数据表位于 envx\modules.py 文件中。这个表是为了能让我们的软件自 动化平台支持不同的环境而创建的。比如,在一般的 IT 公司里,至少一个 App 应用 会有三套环境:程序员本地环境(我们不管理)、内网测试环境、公网生产环境。那么, 这里就会涉及到环境的信息了,如应用的发布单发布到哪个环境了,发布到哪个服务 器了。这些显示信息都是需要环境数据表来支撑的。

4.6.1 models.py 文件内容

这个env 的数据表字段很少,几乎标准的CommonInfo 类的字段就可以满足了。 为了将来扩展,以及可能不依赖于 ID, 我们新建了一个 eid 的保留字段。

envx\model s.py 的内容如下:

《Python+3自动化软件发布系统》Django 2实战_了解Python的更好方法_4.6 环境数据表

https://github.com/aguncn/manabe/blob/master/manabe/envx/models.py4.6.2 将环境数据表迁移进数据库

这个步骤的操作与上一小节应用数据表类似,操作的意义也相同,只需要按下面 步骤操作即可。

① 运行如下命令,将数据表变更反映到 migrations下的目录中。

python manage.py makemigrations evnx

注意,这次我们在命令最后加了 App 应用的名称。Django 的这次变更,就会只 扫描 envx 的变更。如果在其他 App 中有数据表的更改,则不会变更。这能让我们 更灵活地控制数据表的更改。输出如下:

Migrations for 'envx':

envx\migrations\0001_initial.py

-Create model Env

② 运行如下命令,将数据库的变更真正反映到数据库中。

python manage.py migrate envx

同样,我们在命令最后加了 App 应用的名称。Django 的这次变更只会让 envx 下的 Migrations 目录里的变化提交到数据表,而不会提交整个 Django 项目的所有 变化。输出如下:

Operations to perform:

Apply all migrations:envx

Running migrations:

Applying envx.0001_initial...OK

4.6.3 生成模拟数据

同4.6.2小节一样,我们需要为环境数据表生成模拟数据。有了上面的知识之后,操作就比较简单了。

① 在 public\management\commands 目录下,新增 fake_env.py 文件。内容

如下:

https://github.com/aguncn/manabe/blob/master/manabe/public/management/commands/fake_

env.py

我们假设了三个环境,DEV、TEST 及 PRD, 分别代表开发、测试及生产环境。

② 在 public\management\commands\fake_data.py 文件的合适位置,加入下面 几行:

https://github.com/aguncn/manabe/blob/master/manabe/public/management/commands/fake_

data.py

③ 运行 python manage.py fake_data,生成所有模拟数据。

④ 进入管理后台,查看数据生成情况,如图4-21所示。

4.7 服务器数据表

4.7.1 models.py 文件内容

Server 数据表位于 serverinput\modules.py 文件中,主要是用于管理公司的服 务器。公司的每一个服务器都对应于一条记录,它的字段包括了 IP、服务端口、Salt Minion的名称、所属环境等。文件内容如下:

https://github.com/aguncn/manabe/blob/master/manabe/serverinput/models.Py代码解释:

第13~14行:ip_address, 用于记录服务器的IP 地址。

第15~16行:salt_name, 用于定义这个服务器的 Salt Minion 的名称。因为不同的公司对于Salt Minion 的命名规范是不一样的,所以这里最好独立出来。

第17~18行:port 行,这个服务器上部署的 App 服务的端口号。

第19~22行:app_name, 这个服务器上的服务所对应的 App 的名称,是以外键 形式关联的。

第23~28行:env_name, 这个服务器所属的环境。至于环境的意义,我们会在 env 这个表里解释。它也是以外键形式关联的。

第29~32行:app_user, 服务的应用有可能是以 root 启动的,也可能不是,所以 独立出来。

第33~37行:op_user, 这里主要记录的是谁进行了这个 App 记录的操作(创建 和更新),便于做追溯操作。

第38~41行:history_deploy, 用于记录在此服务器上已部署过多少个发布单, 在历史记录和回滚时需要。

第42~45行:deploy_status, 用于记录发布服务时,是否每一步都执行完成。如果有错误,这里会记录错误,并在网页上反馈给用户。

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们 18664393530@aliyun.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:达人之路·《高效办公应用宝典公式·函数与VBA》_4.1 数组公式的应用
下一篇:《Python+3自动化软件发布系统》Django 2实战_了解Python的更好方法_3.1 示例项目
相关文章
×