git repo代码部署策略及工具
一般在项目或者产品开发流程中,先是开发人员在本地做好开发及测试,其中可能包含很多用于测试用的目录以及源代码文件,在部署前往往会有一个build过程。web项目最终build产生出优化生产环境下减少http请求的bundle js,已经有了sprite image外加css代码的适合生产部署的系统。在部署的时候,很多文件可能并不想部署到服务器上去。如何处理?
一个可行的策略及步骤如下:
1. 使用.gitattributes文件中的export-ignore来指定哪些文件将不被打包到部署包;
2. 使用git archive命令将master或者integration等branch的内容打包: git archive intergation -o release.zip
3. 将上述release.zip文件解压后即可在生产系统中部署。
以上3个步骤已经是可以工作了。但是可能还是有待改进。比如我们releaes的package也希望在一个repo中做好版本控制,也就是希望放到repo中。同时,我们可能还有一个本地最后测试production release的需求。你当然可以另外建一个repo和目录来专门存放这个包,并且搭建对应的本地生产测试环境。但笔者建议更进一步,也就是使用同一个repo,但是又不希望看到开发repo中太多的历史信息。那么可以继续下面几个步骤:
4. 创建一个deliverable的branch,专门用于保存git archive产生的发布包,并用于本地生产测试。
git checkout --orphan deliverable // 创建deliverable的orphan branch,该分支上将保存所有release包
git rm -rf . // 由于orphan分支创建后所有index的内容都将自动包内含integration分支的内容,我们需要全部删除
5. 将archive integration生成的发布包解压后放到deliverable分支的根目录中。这时deliverable就仅仅包含了干净的发布包文件目录。
6. 使用该发布包继续测试是否work,确认ok后,直接git a . git commit即可。
7. 以后有新的版本发布的话,重复第2.步到第6步即可。
使用git archive命令可以很好地拉取git repo中的一个snapshot,同时在.gitattributes文件中指定归档策略,将一些不必要的文件不放在部署服务器上。
# used to remove files from deployment using `git archive`
# git files
.gitattributes export-ignore
.gitignore export-ignore
# drush files
build.make export-ignore
patches.txt export-ignore
# zen .x files
sites/all/themes/*/sass export-ignore
sites/all/themes/*/sass-extensions export-ignore
sites/all/themes/*/images-source export-ignore
sites/all/themes/*/fonts export-ignore
sites/all/themes/*/config.rb export-ignore
sites/all/themes/*/STARTERKIT export-ignore
最后执行以下命令生成对应的包
git archive master | bzip2 - > latest.tar.bz2
类似gh-pages方法部署
https://coderwall.com/p/-bcoua/how-to-create-gh-pages-branch
https://stackoverflow.com/questions/19980631/what-is-git-checkout-orphan-used-for
https://stackoverflow.com/questions/4750520/git-branch-gh-pages
https://help.github.com/articles/configuring-a-publishing-source-for-github-pages/
https://gist.github.com/chrisjacob/833223
git repo代码部署策略及工具的更多相关文章
- 如何清洗 Git Repo 代码仓库
git prune 如何清洗 Git Repo 代码仓库 在腾讯云上创建您的SQL Cluster>>> » 相信不少团队的代码仓库 Git Repo 变得越来越大. ...
- 新浪代码部署手册 git管理工具
目前新浪云上的应用支持通过Git和SVN来部署代码. Git仓库地址 https://git.sinacloud.com/YOUR_APP_NAME SVN仓库地址 https://svn.sinac ...
- 持续集成①安装部署jenkins从git获取代码
持续集成①安装部署jenkins从git获取代码 一:持续集成的概念: 1.1:总体的概括 持续集成Continuous Integration 持续交付Continuous Delivery 持续部 ...
- 【CentOS】安装部署jenkins从git获取代码[转]
持续集成①安装部署jenkins从git获取代码 一:持续集成的概念: 1.1:总体的概括 持续集成Continuous Integration 持续交付Continuous Delivery 持续部 ...
- 【持续集成】jenkins安装部署从git获取代码
一:持续集成的概念: 1.1:总体的概括 持续集成Continuous Integration 持续交付Continuous Delivery 持续部署Continuous Deployment 1. ...
- 使用git代替FTP部署代码到服务器的例子
这篇文章主要介绍了使用git代替FTP部署代码到服务器的例子,这种方法可以节省流量.节省时间,需要的朋友可以参考下 本地开发完成后,通常会在服务器上部署,有人会使用ftp,有人会使用scp, ftp和 ...
- 使用 Git & Repo 下载代码
客户端安装 Git 安装 git,gitk 网络连接正常的情况下: $ sudo apt-get install git-core gitk git-gui 不能上网,有.deb安装包的,请执行: $ ...
- NPM 使用介绍(包管理工具,解决NodeJS代码部署上的很多问题)
引用地址:http://www.runoob.com/nodejs/nodejs-npm.html NPM 使用介绍 NPM是随同NodeJS一起安装的包管理工具,能解决NodeJS代码部署上的很多问 ...
- 代码部署工具walle(一)
一.概述 代码部署上线.权限控制.一键版本回滚,github地址:https://github.com/meolu/walle-web walle是基于php语言做的,所以需要一个php的安装环境. ...
随机推荐
- Eclipse-查看jar源码乱码问题解决
步骤1: 在eclipse菜单栏中,Window–>Preferences–>General–>Content types,将JAR Content , Java Class Fil ...
- px、pt和em的区别
(转载)http://www.1z1b.com/one-blog-a-week/px-em-pt/ 这里引用的是Jorux的“95%的中国网站需要重写CSS”的文章,题目有点吓人,但是确实是现在国内网 ...
- jquery.dataTables动态列--转
转自 https://www.cnblogs.com/lyeo/p/4765514.html jquery.dataTables 版本1.10.7 直接上代码: 0.table <table ...
- Linux中Redis的安装
一.下载redis redis官网地址:http://www.redis.io/ 下载地址:http://download.redis.io/releases/ redis中文文档地址:http:// ...
- C#字符串中的中文逗号转英文逗号
public static string ToDBC(string input) { char[] c = input.ToCharArray(); for (int i = 0; i < c. ...
- 怎样写SQL语句可以提高数据库的性能
1.首先要搞明白什么叫执行计划? 执行计划是数据库根据SQL语句和相关表的统计信息作出的一个查询方案,这个方案是由查询优化器自动分析产生的,比如一条SQL语句如果用来从一个10万条记录的表中查1条记录 ...
- C#截取字符串(转载)
来源:https://www.cnblogs.com/lykbk/archive/2012/06/28/lyk1232132.html C#截取字符串 一. 1.取字符串的前i个字符 (1)strin ...
- WebForm控件多字段绑定
一.这里的多字段绑定是什么意思? 多字段绑定控件其实就是把两个字段显示在一起作为一个字段现在控件上! 可能读者看了可能还是有点懵逼,说的还是比较抽象!的确,光从这上面的确是无法具体到某特定一种情况!那 ...
- [日常] nginx访问频率限制
去年的事,随便记记 ========================================================================= 2017年3月15日 记录: n ...
- [日常] PHP设置 include_path 配置选项
动态设置php.ini中的include_path 配置选项: 两种方式set_include_path($new_include_path)ini_set('include_path',$new_i ...