情景:开发机-跳板机-线上,需要把代码从开发机打包推送到线上
目前我实现的方法是用 python 和 ansible 工具在开发机和跳板机上写两个 ansible playbook 推送代码,可以实现,但是比较繁琐,而且代码的可移植性很差,希望请教各位大神能否有个更加简单的方法提高代码的移植性
1
7sDream 2016-09-08 19:09:28 +08:00
可以内网自建一个 pypi ,然后走 pypi 的发布流程。
或许也可以尝试下 Docker ? (还没工作过,不太清楚生产环境还有些什么坑……提个想法而已 |
2
binux 2016-09-08 19:23:46 +08:00
你们没有源码仓库和构建系统吗?
|
4
kysida OP @7sDream docker 是容器或者源仓库, pypi 是第三方包管理工具和发布代码有啥关系,我了解的不是很深,能解释下吗?感谢您的回复
|
7
kysida OP @binux outbound 到没封但是访问都得经过跳板机~~~公司规定跳板机不能够随便跑其他的代码,没办法,目前只能通过二级跳来实现了,感谢您的回复
|
8
aec4d 2016-09-08 19:38:04 +08:00
可能没必要搞那么复杂 fabric 就支持跳板机
我以前都是直接 fabric 用 rsync 同步上去就搞定部署了 |
10
binux 2016-09-08 19:45:31 +08:00
@kysida outbound 没封就可以从仓库拖代码了啊,就不用打包推送了啊,再加一个 CI hook ,构建了自动部署,就不用登陆。
|
11
loryyang 2016-09-08 19:53:28 +08:00
完全自建的方法:从开发到自动测试构建到上线:
代码目录除了代码,再搞两个目录: test 、 production 。 test 写好测试脚本, production 写好构建脚本(把程序组装成线上的环境)。 然后 ci 之后,测试机器的脚本通过 CI hook 启动测试,如果测试通过,执行构建脚本,将环境打包,往一个地方,比如 ftp 或者 NFS 之类的文件共享系统推送。 线上一个脚本循环查看这个文件系统是否有新的包传上来,如果有就 pull 过来部署 |
12
7sDream 2016-09-08 20:19:02 +08:00
@kysida
没有用过 DaoCloud 之类的容器云么? Github Repo WebHook 到 DaoCloud 项目,之后有新 release 前缀的 Tag Release 的时候, DaoCloud 自动触发 Test CI ,如果成功了进行 Image Build , Build 成功之后自动部署到应用(也可以部署到你们自己的主机上)。 可以注册一个试试看。 至于自建 PyPi ,参见这个问题吧: https://www.zhihu.com/question/38081354 ,里面也介绍了 Docker 的方法。 |
13
Shawdon 2016-09-09 12:37:12 +08:00
一直 fabric ,没有遇到不够用的情景
|
15
kysida OP @loryyang 感谢你的回复,我现在做的就是用脚本实现的自动发布使用的不是 ftp 和 nfs 传输而是用 ansible playbook 同步,但是移植性比较差,我现在也在学习 hook 的知识,对这方面知之甚少,学习了
|