使用Git的hook实现代码的自动部署
这个功能非常的好用,可以省去诸多麻烦!我自己也是摸索了好久,才完全掌握的。希望能对大家有所帮助!
1,首先在我的阿里云服务器上已经创建好了一个代码远程的管理仓库,/srv/cmp.git
2, 在服务器上建立一个普通Git仓库用于存放网站的源代码。(web服务器上的另一个本地仓库)
mkdir /var/web
cd /var/web
git clone /srv/cmp.git
这样服务器上的普通仓库便和远程仓库建立的联系,所以说这一步很关键
3,配置Git Hook
进入到/srv/cmp.git/hooks文件夹,使用vim post-receive创建一个脚本,当你在本地仓库执行git push后就会触发post-receive。
post-receive的内容如下:
#!/bin/sh #判断是不是远端仓库 IS_BARE=$(git rev-parse --is-bare-repository)
if [ -z "$IS_BARE" ]; then
echo >&2 "fatal: post-receive: IS_NOT_BARE"
exit 1
fi unset GIT_DIR
DeployPath="/var/web" echo "==============================================="
cd $DeployPath
echo "deploying the test web" #git stash #git pull origin master git fetch --all
git reset --hard origin/master time=`date`
echo "web server pull at webserver at time: $time."
echo "================================================"
保存后赋予可执行权限,
chmod +x /srv/cmp.git/hooks/post-receive
4,这个文件创建好了之后,可以直接运行的,排除运行中出现的问题
./post-receive
确保这个脚本可以正确执行,这一点也非常关键。
5,配置ssh,注意:这里要先切换到git用户,然后生成公钥和私钥,然后把git用户的公钥粘贴到/home/git/.ssh/authorized中
6,再次执行./post-receive
Shell脚本报错:-bash: ./switch.sh: /bin/bash^M: bad interpreter: No such file or directory
主要原因是switch.sh是我在Windows下通过Sublime Text编辑后,在linux系统里执行的。.sh文件的格式为dos格式。而linux只能执行格式为unix格式的脚本。
我们可以通过vi编辑器来查看文件的format格式。步骤如下:
1:首先用vi命令打开当前的shell脚本文件
2:在vi命令模式中使用 :set ff 命令
3:解决方法有两个
①直接当下输入命令
:set ff=unix
②返回文件当下目录执行命令
dos2unix switch.sh
如果当前系统没有dos2unix命令,还需要去网上下载安装包解压,到此为止。
使用Git的hook实现代码的自动部署的更多相关文章
- **使用 Git Hook 实现网站的自动部署
http://www.tuicool.com/articles/3QRB7jU 自动化能解放人类的双手,而且更重要的是,因为按照规定的流程来走,也减少了很多误操作的产生.不知道大家平时都是怎么样更新自 ...
- 用Git的hooks实现项目的自动部署
https://segmentfault.com/a/1190000003836345?_ea=386770 http://blog.csdn.net/wsyw126/article/details/ ...
- GIT服务器实现web代码自动部署
之前在一台vps服务器上面搭建了Git服务器,用来做代码管理,方便团队开发.但是问题也就相应的来了,使用git可以轻松的上传代码,而由于做的是web开发,每次还都得到服务器上把代码手动pull或者复制 ...
- Java代码自动部署
注:本文来源于<it小熊> [ ①Java代码自动部署-总结简介] 代码部署是每一个软件开发项目组都会有的一个流程,也是从开发环节到发布功能必不可少的环节.对于Java开发者来说,Java ...
- 使用gitlab的webhook进行前端自动部署
gitlab有个功能叫webhook,比较适合前端代码的自动部署.其中的逻辑在 http://172.30.83.152:30080/help/user/project/integrations/w ...
- Webhook 实践 —— 自动部署
https://segmentfault.com/a/1190000007892407 安装nodejs 安装nodejs建议直接下载二进制包,把官网上的64位二进制版本下载地址复制下来,执行 wge ...
- Hexo快速搭建静态博客并实现远程VPS自动部署
这篇文章将如何搭建hexo,以及如何通过git webhooks实现远程vps的自动部署 这篇文件适合的条件: 简单的用于个人博客.公司博客展示,hexo的定位是静态博客,要实现动态服务器的功能并不适 ...
- 使用 circleci 自动部署 vuepress 到 github
概述 今天我想把博客什么的搬到 github 的 vuepress 上面.但是每次提交 md 文件需要手动打包然后再提交到 github 的 gh-pages,非常麻烦.所以我去研究了一下用 circ ...
- CircleCI 前端自动部署
概述 现在很多前端库都用到了 CircleCI 进行自动部署,比如Vue,React,作为一个前端我觉得还是有必要实操一下 CircleCI 的,总体来说还是挺简单的,我把过程和体会记录下来,供以后开 ...
随机推荐
- MyEclipse中阿里JAVA代码规范插件(P3C)的安装及使用
JAVA代码规范插件(P3C)是阿里巴巴2017年10月14日在杭州云栖大会上首发的,使之前的阿里巴巴JAVA开发手册正式以插件形式公开走向业界.插件的相关信息及安装包都可以在GitHub(https ...
- PHP微信H5支付开发
近来公司项目要求用到微信H5开发,因为微信开发文档处处都是坑,我也走了不少弯路,现在就把H5支付的过程记录一下,已备后用!! 首先 先去商户平台申请开通 H5支付!!!! 我们从微信官方下载H5支付d ...
- IO (二)
1 字符流的缓冲区 缓冲区的出现提高了对数据的读写效率. 对应的类: BufferedWriter BufferedReader 缓冲区要结合流才能使用. 在流的基础上对流的功能进行了增强. 2 Bu ...
- 编译和解释性语言和python运行方式
1.编译型语言和解释性语言 编译型语言:在执行之前需要一个专门的编译过程,把程序编译成为机器语言的文件,运行时不需要重新翻译,直接使用编译的结果就行了.程序执行效率高,依赖编译器,跨平台性差些.如C. ...
- 极其蛋疼的if else 中的break用法
主要原因是if不是循环语句 像这样的: while(...) { ==res) { break; } printf("A"); } 跳出的就是while循环.而不是if判断语句 补 ...
- cat写入数据
1.cat可以利用两个>>把内容追加到文件中 cat >>oldboy.txt<<EOF >1 >2 >EOF 会在文件中加入EOF中间的数据.E ...
- C#基础(二)--之数据类型
在第一章我们了解了C#的输入.输出语句后,我这一节主要是介绍C#的基础知识,本节的内容也是后续章节的基础,好的开端等于成功的一半.在你阅读完本章后,你就有足够的C#知识编写简单的程序了.但还不能使用继 ...
- java中的二叉树排序问题
原创:转载请注明出处 目的:想用java实现二叉树排序算法 思想:利用java中面向对象的思想,即: Tree:类 树根Tree:root //static所属于每一个Tree 左节点Tree:lef ...
- iOS-PYSearch 完美搜索页
APP搜索页基本上是少不了的,热门搜索.搜索记录等:这里推荐一个大牛ko1o写的:PYSearch,他还有一个不错的图片浏览开源:PYPhotoBrowser:这个也不错,感兴趣的可以了解下:下面说下 ...
- Linux CentOS 7 下 JDK 1.7 安装与配置
前言 简单记录一下在CentOS 7中安装配置JDK 1.7的全过程~ 下载 首先是jdk 1.7 64bit & 32bit的下载地址: jdk-7u79-linux-x64.tar.gz ...