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的安装环境. ...
随机推荐
- 关于Item
0.Item The base class of all items, which implements default behavior. 项(Item)代表一个字节码中可以寻址的实体,有许多种类的 ...
- Linux -- 使用笔记
Linux新增分辨率1920x1080 sudo gedit /etc/default/grub 找到:#GRUB_GFXMODE=640x480 在这行下面加一行GRUB_GFXMODE=1920x ...
- SpringMVC和dubbo简单的整合(附Demo)
顺便记录下apache产品提供下载的网址:http://mirrors.shuosc.org/apache/ 第一步: 下载zookeeper,网址:http://mirrors.shuosc.org ...
- 关系型数据库MySQL主从同步-读写分离
1.环境准备 我的数据库版本是MySQL 5.6 MySQL主机至少两个实例,可以是多实例,可以是多台主机 关闭selinux,关闭防火墙等基础优化 2.安装 yum -y install make ...
- 从n个字符中,找出m个排列组合
#include <string.h> #include <stdio.h> #include <stdlib.h> void combine(char *valu ...
- .Net Core全球化多语言
参照:ASP.NET Core 全球化和本地化 步骤如下: 后台中的本地化. Startup.cs中注册服务并制定Resource文件的位置.注意:这里的位置不仅仅应用到Web层,如Infrastru ...
- RabbitMQ上手记录–part 2 - 安装RabbitMQ
上一篇<<RabbitMQ 上手记录-part 1>>介绍了一些基础知识,整理了一些基础概念.接下来整理一些安装步骤和遇到的问题. 我在CentOS7和Ubuntu16.4上都 ...
- oracle 一对多数据分页查询筛选
今天项目测试运行的时候,遇到了一个奇怪的问题,这个问题说起来按sql语法的话是没有错误的 但是呢按照我们的业务来做区分就有些逻辑上的错误了, 下面请听我慢慢道来,在数据库中有两个数据, 先来看下第一次 ...
- JavaScript部分兼容性函数
1.getElementsByClassName() function getElementsByClassName(node,classname){ if(node.getElementsByCla ...
- CSS3文本属性
text-shadow(文本阴影) <h1>我有文字阴影</h1> h1{ color:#ffff00; text-shadow:1px 2px 2px #000000; } ...