Web系统版本更新与迭代方式——持续集成与持续部署(Python Django框架)

一、持续集成与持续部署

在软件工程中,CI/CD是指持续集成和持续交付或者持续部署的组合。
CI/CD通过构建应用程序、在测试和部署中实施自动化,从而在开发团队和运维团队之间架起一座桥梁,让项目能够更快、更好地交付与部署。

持续集成

CI是一种软件开发实践,即团队开发成员经常集成他们的工作。通常每个成员每天至少集成一次代码,这以为着软件每天可能会发生多次集成。而每次集成可以通过自动化的构建来验证,可以尽快发现集成错误。许多团队发现通过这个过程可以大大减少集成的问题,让团队能够更快地开发内聚的软件。

持续交付

持续交付是指,在构建阶段后将所有代码部署到测试华宁和生产环境中,实现对持续集成的扩展。

持续部署

持续部署是指,可以自动化地将通过集成和交付的代码发布到项目环境中,已供客户使用。
一般的,项目环境至少包含开发环境、测试环境和生产环境。
对开发环境和测试环境,可以反复进行部署,不会影响业务。
对生产环境,建议使用半手动或手动方式进行部署。
持续部署主要是为了解决“因手动流程降低了用用的交付速度,从而导致运维团队超负荷工作”等一系列问题。

二、Web系统版本迭代和更新主要方式

本文中主要讲解简单的web系统更新已迭代的方法,此方法仅适用于简单的web系统,此系统主要有3-5人进行开发与维护,讲解的主要web系统主要由Python的Django框架与Vue脚手架进行开发出来的web系统。本文不涉及自动化部署与运维!

方法一、手动更新代码库

简单来说就是,将已经发布的系统代码库下载下来,基于现有的代码在本地手动调试与更新。
主要问题:因为但凡涉及到数据字段与表的更改,Django就会生成migrations迁移文件,此迁移文件如果上传到生产环境中,会产生报错问题。
因此针对migrations是否产生迁移文件,系统更新与迭代主要有以下几种方式:

方式一,只更新相应功能不涉及数据库字段与表单的更改

步骤如下:

  1. 从生产环境中下载后端代码库。
  2. 用Pycharm打开项目代码,进入setting设置界面,将Debug更改为True,如果涉及到Django自带的静态文件,先注释掉,打开系统默认的静态文件路径,数据连接可以连接自己的本地数据库,不要使用生产环境下的数据库进行测试。
  3. 不删除生产环境下已经生成的migrations迁移文件。
  4. 按照需求更新系统中相应的功能代码,开发环境下进行debug与测试。
  5. 调试完成后,在吧setting中的Debug更改为False,打开自己设置的静态文件路径。
  6. 打包压缩好之后上产到生产环境中,定时开启服务器的代码更新按钮即可。

方式二,更新相应功能也涉及数据库字段与表单的更改

步骤如下:

  1. 从生产环境中下载后端代码库。
  2. 用Pycharm打开项目代码,进入setting设置界面,将Debug更改为True,如果涉及到Django自带的静态文件,先注释掉,打开系统默认的静态文件路径。
  3. 删除生产环境下已经生成的migrations迁移文件。
  4. 按照需求更新系统中相应的功能代码,开发环境下进行debug与测试。
  5. 本地测试通过后,在把setting中的Debug更改为False,打开自己设置的静态文件路径。数据库更改为生产环境下的数据库,在上传到生产环境之前,将自己的本地生成的migrations迁移文件删除掉。
  6. 打包压缩好之后上产到生产环境中,分别执行python manage.py makemigrationspython manage.py migrate 即可。(更新系统时应在无客户使用系统的情况下进行更新)。

方法二 使用Git进行系统版本迭代与更新

Git:版本控制系统,对于开发人员来说,已经在熟悉不过了。基于熟悉的命令可以快速的进行集成开发。
本次介绍是基于Ubuntu20,Django3.2,Git 2.25进行演示。

1. ubuntu系统下安装Git

sudo apt-get install git

2. 设置git

git config --global user.name 'your name'
git config --global user.email  'your email'

3. 创建git用户

adduser git
#进入git用户的home目录 
cd ~git           
[root@localhost ~]# mkdir .ssh
 
[root@localhost ~]# chmod 700 .ssh
 
[root@localhost ~]# touch .ssh/authorized_keys
 
[root@localhost ~]# chmod 600 .ssh/authorized_keys

4. 创建远程ssh访问的用户:

1)将客户端.ssh/id_rsa.pub文件中的内容(也叫公钥)复制到authorized_keys文件里。mac电脑下一般在 ~/.ssh 目录下
2)然后在客户端 ssh git(你的用户名)@192.168.192.130(局域网ip),正常的话应该可以连接上服务端,如果连不上,注意权限问题,直接将服务端的权限设置为了:777。

5. 创建远程仓库

cd /home/git/
mkdir gitrepo
cd gitrepo
#初始化远程仓库
git init --bare remote.git
#将远程git仓库属于git用户所有:
sudo chown -R git:git gitrepo

6. git远程仓库关联具体仓库目录

通过前面的步骤创建了一个空的远程仓库,此时可以通过git clone命令clone一个空的仓库,如下:

git clone git@192.168.192.130:/home/git/gitrepo/remote.git

此时远端服务器的IP地址为192.168.192.130

通过上述可以看到,确实clone了一个没有任何具体仓库目录的空仓库,那么如何关联具体的仓库目录,具体操作步骤如下:
进入远程服务器创建仓库的目录:

cd gitrepo/

现在在该目录中创建项目所需的文件,并在该目录下启动git(也就是常说的git init)

git init

已初始化空的 Git 仓库于 /home/git/gitrepo/.git/
创建一个测试文件hello,并add进仓库,如下

touch hello
git add hello 
git commit -m "first"

将当前git目录关联具体的git远程仓库
到现在为止,git目录一直在服务器的本地环境。现在我们必须将这些更改推送到具体的git仓库上面,以便客户端通过互联网访问,并且可以与其他团队成员进行协作。这里的具体操作如下:

git remote add origin git@192.168.192.130:/home/git/gitrepo/remote.git
git push origin master

经过如上,git仓库就关联了具体的git文件目录了。
这里有一点需要注意的是git remote add origin,这个操作也可以在客户端进行操作,这里只是为了演示更加的直观和通用的做法。

7. 本地端git clone远程仓库

经过上述操作,现在就可以使用clone, pull 或 push 选项在服务器和本地计算机之间推送或拉取等相关的操作了。如下所示:

 git clone git@192.168.192.130:/home/git/gitrepo/remote.git
git pull git@192.168.192.130:/home/git/gitrepo/remote.git

8. 生产环境代码更新

通过上面的一系列操作,可以将本地的代码与生产环境的代码库进行了相关联,但是代码更新不是直接与生产环境下的代码直接关联,而是在生产环境下创建了一个Git仓库,那么生产环境的代码就可以直接git pull 下进行实时更新。

你可能感兴趣的:(Linux,Python,django,python,git)