一般公司或者团队是怎么进行代码开发并且部署到服务器上的?

子木予


废话不多说,直接来干的。这里介绍一套成熟的方案。

gitlab(代码管理)+jenkins(持续集成)+k8s(服务管理)

其中涉及到的技术细节: dockerindocker makefile

gitlab使用介绍

gitlab是一款类似github的开源代码管理软件,可在公司内网,直接搭建一套私有代码仓库,适合团队多人开发,具有完善的分支管理、角色管理、issue、里程碑等。是非常优秀的一款软件。



jeknis使用介绍

这是一款开源持续集成软件,说人话就是使用他可以自动化部署服务。其具有gitlab相关的插件,安装后可直接对接gitlab,当gitlab发生push或者merge代码事件,会通知jeknis去完成最新推送的代码的镜像构建和部署

推荐上面说的两款技术和jeknis混合使用。

1.dockerindocker技术。顾名思义就是docker里面运行docker,简单点直接用dockerfile在jeknis镜像的基础上安装docker客户端或者k8s客户端。这样我们在容器中就可以直接调用宿主机的docker命令或者k8s命令。这对我们使用jenkins执行部署脚本,通知k8s或者docker部署服务,非常方便。

2.makefile 之所以介绍这款他,是因为其具有一个绝佳的功能,可以检测文件内容是否发生变化,这样对于微服务架构,其配合jenkins,无需指定什么,就可以部署上发生文件变化的微服务。而不会影响到其他服务。



k8s使用介绍

这款当红炸子鸡🐔,相信大家耳闻已久。其实现了对docker的管理和编排。配合上共享存储和其服务自动重启机制,可以让我们的服务无当机。

对于docker内部服务的暴露推荐ingress+service.

docker镜像管理推荐harbor。



以上完整的自动化开发部署环境,有兴趣的可以自行学习相关内容,进行搭建测试。


牙牙的生活日志


对于一个稍成规模的公司而言,项目开发往往会涉及到团队开发,那么团队协同开发会涉及到代码同步和冲突的问题,这不需要担心,有成熟的解决方案。另外一方面,项目的部署与发布也分很多种,比如传统的手动部署或当下流行的自动化部署。

团队开发模式

1、代码版本管理

在团队协同开发下,难免存在多人修改同一个文件的情况,于是有了版本控制系统,比如:SVN、GIT。当下SVN和GIT用的人数也差不多,都能很好的管理代码版本,借助它们可以轻松解决文件冲突的现象。

2、开发环境统一

我们知道,即使代码完全一致,在不同环境及配置下,项目运行表现也是不同的(比如不同系统上文件大小写要求不同),因此在团队开发中也有必要保持开发环境的统一。

我们推荐使用 Vagrant 或 Docker 来确保开发环境的统一。

项目部署方案

项目部署主要有两种:传统手动部署、自动化部署。


1、传统手动部署

这种实现难度最低,但费时费力,对于小项目可以采用手动部署,但对于中大型项目不建议。

2、自动化部署

说到自动化部署就不得不说Jenkins了,它是一个用于持续构建的可视化Web工具,通俗的说Jenkins支持各类项目的“自动化”编译、打包、分发部署。Jenkins对主流编程语言支持很好、完全兼容Maven、Ant等构建工具、同时可以无缝的和GIT/SVN集成。


以上就是我的观点,对于这个问题大家是怎么看待的呢?欢迎在下方评论区交流 ~ 我是科技领域创作者,十年互联网从业经验,欢迎关注我了解更多科技知识!

网络圈


网站开发有很多语言,如java,python,php,js等,以php开发为例,可以从三个方面来叙述:

1.代码本地开发

a.使用Git Workflow 模式开发,方便代码管理,防止代码覆盖。svn也可以

b.数据库环境配置(测试环境 生产环境 开发)

c.代码编辑器(subline或者phpstorm)

2.服务器端

a.域名购买

b.DNS解析

c.云服务器购买(含操作系统 推荐使用 CentOS 等Linux发行版),可以购买西部数码或者阿里云的服务器,当然,也可以购买海外服务器

d.之后就是一些服务器配置

云服务器用户创建(用户权限 ssh只允许秘钥登陆)

云服务器反向代理配置(推荐使用nginx), 或者使用云服务负载均衡

云服务器防火墙配置

云服务器数据库配置(可以单独购买数据库服务, 也可以单独弄一台数据库服务器, 展示型无需更新的网站可以不配置数据库)

服务器代码运行环境配置(参考本地环境配置)

服务器缓存配置(推荐使用redis 或者 服务商提供的 缓存服务器),githook线上环境自动化测试也可以搞起,线上日志和监控报警(可以使用第三方服务 OneApm Alinode等)

3.关于部署

a.利用 git 进行部署(githook自动化的测试, 自动化的拉取到服务器上)

b.使用flashfxp代码上传服务器上项目的根目录,这种上传方式优点是速度快,效率高;缺点是代码覆盖率高,不易恢复

c.容器化部署,使用docker容器化技术,将代码打包成镜像,在生成容器进行部署,这种方式更快速的交付和部署(一次创建和配置,可以在任意地方正常运行),更高效的虚拟化(不需要hypervisor支持,内核级虚拟化),更轻松的迁移和扩展(在任意平台移植),更简单的管理





mu子君


一般公司会有两套服务器,一套用于生产,一套用于测试。服务器版本管理可能会用svn,也可能会用git,代码提交到版本管理器上,然后测试服务器拉取新的代码进行测试,如果没问题,生产服务器拉取版本服务器中的代码进行部署。

看了以上说明你会发现,测试服务器和线上服务器代码应该是一致的,这样就需要我们对于服务器环境依赖的变量写入到配置文件,更新的时候不提交这个配置文件。

现在服务器的代码部署都是采用脚本和软件配合部署的。不需要人工手动去服务器上拉取代码,现在一般常用jenkins软件进行代码的自动部署。


梦回故里归来


我们公司是这样搞滴

gitlab+Jenkins+k8s+docker+svn+smb+harbor+exsi6.7+zabbix+prometheus+granfa+vpn

我没有记错的话 就是这些的。


分享到:


相關文章: