Slides and Source on Github Me 2012/11/18 ku6.com, Beijing Video
高效协作开发三剑客:Basecamp、Github、QQ 企业邮箱
简单介绍 Git 及 Git-Flow 开发模型
Case Study: 利用 Github Service WebHook 调用脚本执行自动化部署
降低因引入新的工作软件/模式所带来的学习成本。
完全线上协作,集中资源闹革命;不必再为无法找到合适的本地人才而烦恼。
API 方便将团队所有工具信息流进行整合、归档,形成团队专属知识库/Bug集中营。
选用在业界具有知名度的 SaaS 型工具,降低软件维护成本和财务成本。
适合 10~50 人之间的开发团队,每月固定财务花费约 200 USD(~ 1400 CNY)。
用例:产品功能讨论(Messages)、文档协同撰写(Writeboards)、待办事项(To-Dos)、团队日历(Calendar)和时间管理(Time Tracking)
用例:代码托管(Git)、产品功能路线图(Milestone)、代码审查(Code Review)、Bug 跟踪(Issues)
用例:通过绑定 QQ 或微信,将开发相关任务即时、准确的传达到每位订阅成员。
Git – the stupid content tracker
Git Manual
相较集中式版本控制工具 CVS / SVN 等,Git 的特点主要包括:
Photo credit to nvie.com.
Photo credit to nvie.com.
Photo credit to https://github.com/logsol/Github-Auto-Deploy.
开发人员将代码 push 到 Github 远程服务器(Remotes/Origin)时:
HTTP 部署服务需以 Daemon 形式长期驻留系统,推荐使用 Python/Node.js 编写。
{ "port": 8001, "repositories": [{ "url": "https://github.com/cnsaturn/iTalk", "path": "/your/local/path/on/target/server/here", "deploy": "make deploy" // 自定义 makefile }] }
采用 Python 编写、用于解析 Post-Receive Hook POST 请求的 HTTP 示例服务核心逻辑:
def pull(self, path): if(not self.quiet): print "\nPost push request received" print 'Updating ' + path call(['cd "' + path + '" && git pull'], shell=True) def deploy(self, path): config = self.getConfig() for repository in config['repositories']: if(repository['path'] == path): if 'deploy' in repository: if(not self.quiet): print 'Executing deploy command' call(['cd "' + path + '" && ' + repository['deploy']], shell=True) break
程序部署除代码直接更新外,通常我们还需要处理如下问题:
如压缩合并 JavaScript/CSS 文件、压缩和优化图片、CDN 文件同步。
如 CI 入口文件 index.php 中的 ENVIRONMENT 常量。
为了解决此问题,通常会使用 Make / Ant / Maven 等 Build 工具来实现自动化操作:
Slides and Source on Github Me 2012/11/18 ku6.com, Beijing Video
/
#