一、持续集成与持续部署
在软件工程中,CI/CD是指持续集成和持续交付或者持续部署的组合。
CI/CD通过构建应用程序、在测试和部署中实施自动化,从而在开发团队和运维团队之间架起一座桥梁,让项目能够更快、更好地交付与部署。
持续集成
CI是一种软件开发实践,即团队开发成员经常集成他们的工作。通常每个成员每天至少集成一次代码,这以为着软件每天可能会发生多次集成。而每次集成可以通过自动化的构建来验证,可以尽快发现集成错误。许多团队发现通过这个过程可以大大减少集成的问题,让团队能够更快地开发内聚的软件。
持续交付
持续交付是指,在构建阶段后将所有代码部署到测试华宁和生产环境中,实现对持续集成的扩展。
持续部署
持续部署是指,可以自动化地将通过集成和交付的代码发布到项目环境中,已供客户使用。
一般的,项目环境至少包含开发环境、测试环境和生产环境。
对开发环境和测试环境,可以反复进行部署,不会影响业务。
对生产环境,建议使用半手动或手动方式进行部署。
持续部署主要是为了解决“因手动流程降低了用用的交付速度,从而导致运维团队超负荷工作”等一系列问题。
二、Web系统版本迭代和更新主要方式
本文中主要讲解简单的web系统更新已迭代的方法,此方法仅适用于简单的web系统,此系统主要有3-5人进行开发与维护,讲解的主要web系统主要由Python的Django框架与Vue脚手架进行开发出来的web系统。本文不涉及自动化部署与运维!
方法一、手动更新代码库
简单来说就是,将已经发布的系统代码库下载下来,基于现有的代码在本地手动调试与更新。
主要问题:因为但凡涉及到数据字段与表的更改,Django就会生成migrations迁移文件,此迁移文件如果上传到生产环境中,会产生报错问题。
因此针对migrations是否产生迁移文件,系统更新与迭代主要有以下几种方式:
方式一,只更新相应功能不涉及数据库字段与表单的更改
步骤如下:
- 从生产环境中下载后端代码库。
- 用Pycharm打开项目代码,进入setting设置界面,将Debug更改为True,如果涉及到Django自带的静态文件,先注释掉,打开系统默认的静态文件路径,数据连接可以连接自己的本地数据库,不要使用生产环境下的数据库进行测试。
- 不删除生产环境下已经生成的migrations迁移文件。
- 按照需求更新系统中相应的功能代码,开发环境下进行debug与测试。
- 调试完成后,在吧setting中的Debug更改为False,打开自己设置的静态文件路径。
- 打包压缩好之后上产到生产环境中,定时开启服务器的代码更新按钮即可。
方式二,更新相应功能也涉及数据库字段与表单的更改
步骤如下:
- 从生产环境中下载后端代码库。
- 用Pycharm打开项目代码,进入setting设置界面,将Debug更改为True,如果涉及到Django自带的静态文件,先注释掉,打开系统默认的静态文件路径。
- 删除生产环境下已经生成的migrations迁移文件。
- 按照需求更新系统中相应的功能代码,开发环境下进行debug与测试。
- 本地测试通过后,在把setting中的Debug更改为False,打开自己设置的静态文件路径。数据库更改为生产环境下的数据库,在上传到生产环境之前,将自己的本地生成的migrations迁移文件删除掉。
- 打包压缩好之后上产到生产环境中,分别执行
python manage.py makemigrations
和python 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 下进行实时更新。
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/98003.html