python 发布代码的方式问题请教

2016-09-08 16:33:07 +08:00
 kysida

情景:开发机-跳板机-线上,需要把代码从开发机打包推送到线上

目前我实现的方法是用 python 和 ansible 工具在开发机和跳板机上写两个 ansible playbook 推送代码,可以实现,但是比较繁琐,而且代码的可移植性很差,希望请教各位大神能否有个更加简单的方法提高代码的移植性

2884 次点击
所在节点    Python
17 条回复
7sDream
2016-09-08 19:09:28 +08:00
可以内网自建一个 pypi ,然后走 pypi 的发布流程。

或许也可以尝试下 Docker ?

(还没工作过,不太清楚生产环境还有些什么坑……提个想法而已
binux
2016-09-08 19:23:46 +08:00
你们没有源码仓库和构建系统吗?
kysida
2016-09-08 19:26:48 +08:00
@binux 有 git 仓库并不在内网
kysida
2016-09-08 19:31:27 +08:00
@7sDream docker 是容器或者源仓库, pypi 是第三方包管理工具和发布代码有啥关系,我了解的不是很深,能解释下吗?感谢您的回复
kysida
2016-09-08 19:31:39 +08:00
@binux 感谢您的回复
binux
2016-09-08 19:32:27 +08:00
@kysida 内网连 outbound 都封吗?那让跳板机部署呗,跳板机总能连接外网了吧。
kysida
2016-09-08 19:37:05 +08:00
@binux outbound 到没封但是访问都得经过跳板机~~~公司规定跳板机不能够随便跑其他的代码,没办法,目前只能通过二级跳来实现了,感谢您的回复
aec4d
2016-09-08 19:38:04 +08:00
可能没必要搞那么复杂 fabric 就支持跳板机
我以前都是直接 fabric 用 rsync 同步上去就搞定部署了
kysida
2016-09-08 19:44:03 +08:00
@aec4d 长见识了,我去研究研究这玩意,十分感谢~。~
binux
2016-09-08 19:45:31 +08:00
@kysida outbound 没封就可以从仓库拖代码了啊,就不用打包推送了啊,再加一个 CI hook ,构建了自动部署,就不用登陆。
loryyang
2016-09-08 19:53:28 +08:00
完全自建的方法:从开发到自动测试构建到上线:
代码目录除了代码,再搞两个目录: test 、 production 。 test 写好测试脚本, production 写好构建脚本(把程序组装成线上的环境)。
然后 ci 之后,测试机器的脚本通过 CI hook 启动测试,如果测试通过,执行构建脚本,将环境打包,往一个地方,比如 ftp 或者 NFS 之类的文件共享系统推送。
线上一个脚本循环查看这个文件系统是否有新的包传上来,如果有就 pull 过来部署
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 的方法。
Shawdon
2016-09-09 12:37:12 +08:00
一直 fabric ,没有遇到不够用的情景
kysida
2016-09-09 13:37:18 +08:00
@binux 代码库拉下的代码还要分环境呀,测试预发布和线上环境,对应的环境不同配置要做修改
kysida
2016-09-09 13:40:14 +08:00
@loryyang 感谢你的回复,我现在做的就是用脚本实现的自动发布使用的不是 ftp 和 nfs 传输而是用 ansible playbook 同步,但是移植性比较差,我现在也在学习 hook 的知识,对这方面知之甚少,学习了
kysida
2016-09-09 13:41:47 +08:00
@7sDream 感谢您的回复,在这之前没怎么用过容器,用了一点 docker 仅仅是学习,关于使用 pypi 这方面没怎么了解,感谢您提供的资源,收获不少,正在学习~
kysida
2016-09-09 13:43:30 +08:00
@Shawdon 感谢您的回复, fabric 我还是第一次接触,没怎么了解,我刚 google 了一下,确实很有意思,已经加入了学习列表感谢您的建议

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/304874

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX