使用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 的,总体来说还是挺简单的,我把过程和体会记录下来,供以后开 ...
随机推荐
- 使用 cURL 度量 Web 站点的响应时间
curl -o /dev/null -s -w %{time_connect}:%{time_starttransfer}:%{time_total} http://www.canada.com 0. ...
- Intellij-创建Maven项目速度慢
原因: IDEA根据maven archetype的本质,其实是执行mvn archetype:generate命令,该命令执行时,需要指定一个archetype-catalog.xml文件. 该命令 ...
- 使用Recovery Services备份Azure ARM模式虚拟机
1.需要事先准备好要备份的虚拟机,如"hlmcent73n" 2.创建一个恢复服务保管库 3.选择虚拟机类型的备份 4.可以选择默认备份策略,也可以选择新建备份策略,以下演示为新建 ...
- junit忽略测试方法
JUnit 提供注解 org.junit.Ignore 用于暂时忽略某个测试方法或者说整个类.因为有时候由于测试环境受限,并不能保证每一个测试方法都能正确运行. 1,方法级别上使用@ignore来注释 ...
- Servlet--传参和接参
OK,现在基本的Servlet接口和常用类都整理的差不多的,本篇博客开始整理Servlet和页面的交互. 1,接参 以下几个常用的方法: getParameter public String getP ...
- spring的jar各包作用
http://yjwen337.blog.163.com/blog/static/3625847820106132949858/[转]spring.jar是包含有完整发布的单个jar 包,spring ...
- Zabbix-3.2.4实现微信(WeChat)告警
摘自abcdocker网站 原文地址:https://www.abcdocker.com/abcdocker/2472 Zabbix可以通过多种方式把告警信息发送到指定人,常用的有邮件,短信报警方式, ...
- redis通过pipeline提升吞吐量
案例目标 简单介绍 redis pipeline 的机制,结合一段实例说明pipeline 在提升吞吐量方面发生的效用. 案例背景 应用系统在数据推送或事件处理过程中,往往出现数据流经过多个网元: 然 ...
- MVC思想概述
一. 传统Model1和Model2 Model1:整个web应用几乎全部用JSP页面组成,JSP页面接收处理客户端请求,对请求处理后直接作出响应.用少量的javaBean来处理数据库链接,数据库访问 ...
- 关于Kafka 的 consumer 消费者处理的一些见解
前言 在上一篇 Kafka使用Java实现数据的生产和消费demo 中介绍如何简单的使用kafka进行数据传输.本篇则重点介绍kafka中的 consumer 消费者的讲解. 应用场景 在上一篇kaf ...