当前位置: 首页 > 编程日记 > 正文

**使用 Git Hook 实现网站的自动部署

http://www.tuicool.com/articles/3QRB7jU

自动化能解放人类的双手,而且更重要的是,因为按照规定的流程来走,也减少了很多误操作的产生。不知道大家平时都是怎么样更新自己生产环境的代码的,FTP 覆盖旧文件、服务器定时任务去 build 最新的源码,还是有更高级的做法?

目前我在使用 Git Hook 来部署自己的项目。Git Hook 是 Git 提供的一个钩子,能被特定的事件触发后调用。其实,更通俗的讲,当你设置了 Git Hook 后,只要你的远程仓库收到一次 push 之后,Git Hook 就能帮你执行一次 bash 脚本。

下面是我使用 Git Hook 进行简单的自动化部署,可能还有更高级的做法,大家自己去挖掘。

在服务器初始化一个远程 Git 仓库

git init 和 git --bare init 初始化出来的仓库是完全不一样的,具体我 Google 了下,英文倒是理解了,但是要翻译出中文却不知道用什么形容词去称呼这2种仓库。

这里我们要通过 git --bare init 初始化一个远程仓库

$ cd ~ $ mkdir testRepo $ cd testRepo $ git --bare init 

在服务器初始化一个本地 Git 仓库

这个仓库就是通过 git init 初始化出来最常见的本地仓库,它的作用是拉去远程仓库(其实就在它旁边)最新的源码,然后在这个仓库里进行编译,把代码编译到 www 目录(网站的根目录)。

$ cd ~
$ mkdir testDeploy $ cd testDeploy $ git clone ~/testRepo #从远程仓库 clone 出源码 

为远程仓库设置 Hook

$ cd ~/testRepo/hooks $ vim post-receive 

post-receive 里面的执行脚本

#!/bin/sh
unset GIT_DIR DeployPath=/home/user/testDeploy WwwPath=/home/wwwroot/testDeploy  cd $DeployPath git add . -A && git stash git pull origin master  # 下面这2步都是按照实际你自己添加的bash脚本 fis release -Dompd $WwwPath # 我使用的FIS,对前端代码进行编译 qrsync /home/user/qiniutools/config.json # 使用七牛同步工具进行同步 

最后,为 post-receive 添加可执行权限

chmod +x post-receive

为本地仓库添加 remote 源

这次的本地仓库就真的是你开发机上面的本地了。在你原有 Git 项目里面添加一条新的 remote 源,以后往这个 remote 源里面 push 代码就会自动触发上面那 bash 脚本了。

$ git remote add deploy user@server.ip:/home/user/testRepo $ git push deploy master

转载于:https://www.cnblogs.com/kenshinobiy/p/4539252.html

相关文章:

Mavlink自定义协议

参照本人博客:博客直达 浏览密码:N414 这里不做描述,详细过程请移步本人博客

UE建筑可视化全局照明学习 Unreal Engine: Global Illumination for Arch. Visualization

虚幻引擎:建筑可视化的全局照明 你会学到: 使用轻量级地理信息引擎 聚焦胃肠计算 生成灯光贴图Uv 轻度烘焙 控制光反弹 使用环境遮挡 动画和地理信息 暴露 保存高分辨率图像 课程获取:UE建筑可视化全局照明学习-云桥网 时长:1h 30m |视频:. MP4,12807…

dbf如何导入oracle_「赵强老师」第一个Oracle的手工管理的备份和恢复

一、什么是手工管理的备份与恢复?尽管在Oracle中,已经有了RMAN的备份与恢复。但是作为Oracle备份恢复的一种方式,我们将在本文中通过一个例子来为大家介绍如何使用手工的方式来完成Oracle的备份与恢复。手工方式的本质是通过操作系统的cp命令…

大小端存储模式的理解和判断

在计算机系统中,存储是以字节为单位的,每个地址单元都对应着一个字节,一个字节8bit。在C语言中除了8bit的char之外,还有16bit的short型,32bit的long型(要看具体的编译器)。对于位数大于8位的处理…

汇编语言学习随笔

1.可执行文件中包含两部分内容: *程序(从源程序中的汇编指令翻译过来的机器码)和数据(源程序中定义的数据) *相关的描述信息(比如程序有多大,占多少内存空间啊等等) 2.segment和ends…

新装Ubuntu18.04系统配置PX4环境

1.安装QGC地面站系统:链接:https://docs.qgroundcontrol.com/master/en/getting_started/download_and_install.html 2.配置系统文件:下载PX4代码 -->打开代码 -->找到文件夹Tools文件 -->找到setup文件夹 -->找到ubuntu.sh文件&…

Blender程序性纹理学习教程大师班 Creative Shrimp – Procedural Texturing Blender Master Class

标题:创意虾-程序纹理Blender大师班 信息: 什么是程序纹理? 程序纹理将简单的数学转换为无限的真实感着色器,具有无限的多样性和分辨率。 超越看起来像一团像素特写的图像纹理,运用程序纹理的力量,清晰的细节和没有重复的模式。 你…

java 全局变量 内存不回收_Java的内存 - 内存回收

这篇承接上一篇 《Java的内存 - 内存模型》,分析内存回收相关的知识点。 垃圾回收包含两个步骤,①标记哪些内存是垃圾 ②回收内存。下面分别说这两个步骤有哪些算法:1. 垃圾标记1.1 引用计数算法没有哪一种 JVM 是使用「引用计数」作为垃圾回…

题目1000:计算a+b

题目描述&#xff1a;求整数a&#xff0c;b的和。 输入&#xff1a;测试案例有多行&#xff0c;每行为a&#xff0c;b的值。 输出&#xff1a;输出多行&#xff0c;对应ab的结果。 样例输入&#xff1a;1 2 4 5 6 9 样例输出&#xff1a;3 9 15 #include<iostream> using…

Mac下chrome的webapp hostadmin 快速切换host

首先是安装 app &#xff0c;https://chrome.google.com/webstore/detail/hostadmin-app/mfoaclfeiefiehgaojbmncmefhdnikeg Chrome把扩展的NPAPI 禁用了&#xff0c;所以做成APP没以前方便了&#xff0c;但是有总比没有好。 安装之后发现mac下选择host文件没法选&#xff0c;因…

PX4如何开启本地在环仿真?如何将仿真地点定位为本地位置?你进来就对了!

视频预览&#xff1a;3架无人机在环仿真 3架仿真jmavsim本地坐标启动教程 1.首先执行仿真命令 n414414:~/001/Firmware$ make px4_sitl_default jmavsim出现左边界面就说明该仿真是可以进行仿真的&#xff01;由于我在自己写的代码里面启动&#xff0c;所以出现右边提示&…

Blender从头到尾创建低多边形角色学习教程 Low Poly Characters – Blender Bitesize Course

从头到尾创建低多边形角色。 你会学到: Blender界面的基础。 基本建模技术。 如何遵循字符引用&#xff1f; 如何创造和塑造自己的角色(不同风格、发型和服装)。 纹理字符。 索具和动画介绍(用于你的游戏引擎或动画)。 调整您下载的资产包角色&#xff0c;以创建新的不同角色。…

20145101《Java程序设计》第4周学习总结

20145101《Java程序设计》第4周学习总结 教材学习内容总结 第六章 继承与多态 继承&#xff1a;避免多个类间重复定义共同行为。把相同代码提升为父类 运用extends关键字的子类会继承扩充父类行为 多个类中存在相同属性和行为时&#xff0c;将这些内容抽取到单独一个类中&#…

反编译使用yield关键字的方法

我认为这是一个真命题&#xff1a;“没有用.NET Reflector反编译并阅读过代码的程序员不是专业的.NET程序员”。.NET Reflector强大的地方就在于可以把IL代码反编译成可读性颇高的高级语言代码&#xff0c;并且能够支持相当多的“模式”&#xff0c;根据这些模式它可以在一定程…

Android studio 启动自学模式

今天在网上看到了编译Android的软件Android studio&#xff0c;出于对Android的学习兴趣&#xff0c;我打算开始新一轮的Android的学习。今天就是在网上&#xff0c;以及图书馆里查找了有关Android studio的书籍&#xff0c;但是由于Android是在13年才开始发布的原因吧&#x…

AutoCAD 2D与3D大师班学习教程 AutoCAD 2D and 3D Masterclass

用实例和解决问题的方法完成从基础到专业的AutoCAD课程。 你会学到什么 AutoCAD课程包含创建计划和模型的命令和不同方法的详细使用。 本课程包括对AutoCAD中使用的所有命令和工具的详细解释。 课程内容是按时间顺序设计的&#xff0c;以了解承担项目的实际方法。 本课程包含两…

威纶通宏开机后使用初始化宏指令_【操作系统】我们按下电脑开机键的背后发生了什么?...

作者&#xff1a;CVNot链接&#xff1a;https://juejin.im/post/5e8844996fb9a03c6675b9d6操作系统是什么&#xff1f;操作系统是用来管理计算机硬件的软件&#xff0c;狭义上实现该定义的为操作系统内核&#xff1b;而更加宽泛的操作系统概念为根据内核对外提供了一些OS服务&a…

Linux常用压缩与解压缩命令

.tar 解包&#xff1a;tar xvf FileName.tar打包&#xff1a;tar cvf FileName.tar DirName&#xff08;注&#xff1a;tar是打包&#xff0c;不是压缩&#xff01;&#xff09;———————————————.gz解压1&#xff1a;gunzip FileName.gz解压2&#xff1a;gzip -d…

【Kubernetes】如何使用Kubeadm部署K8S集群

一 . 准备机器 本次环境采用华为云ECS弹性云服务器部署&#xff08;也可以使用VMware&#xff09; vm01&#xff08;2V4G&#xff09;&#xff1a; Ubuntu_18.04作为K8S master节点 vm02&#xff08;1V1G&#xff09;&#xff1a; Ubuntu_18.04作为K8S node节点 备注: 以下所有…

解决ORA-28000: the account is locked

在oracle中&#xff0c;连续十次尝试登陆不成功&#xff0c;那么此账户将会被锁定&#xff08;lock&#xff09;。当使用被锁定的账户登录时&#xff0c;系统会报错&#xff1a;ORA-28000: the account is locked。查询FAILED_LOGIN_ATTEMPTS参数默认值&#xff0c;这个参数限制…

Android sudio Day01-1

今天我开始学习Android studio的第二天&#xff0c;主题是Android studio的安装。 之前的学校学习都是使用Android开发者工具&#xff08;Android development tools&#xff0c;ADT&#xff09;&#xff0c;而ADT作为一个Android开发工具&#xff0c;它是通过内置于Eclipse的…

学习用C#在Unity中创建一个2D Metroidvania游戏

学习用C#在Unity中创建一个2D Metroidvania游戏 你会学到: 构建2D Unity游戏 用C#编程 玩家统计&#xff0c;水平提升&#xff0c;米尔和远程攻击 敌方人工智能系统 制定级别和级别选择 Learn To Create A 2D Metroidvania Game in Unity With C# MP4 |视频:h264&#xff0c;…

3.27课·········悬浮动态分层导航与隐藏导航

例1:分层导航 <title>分层导航</title> <script src"../JavaScript/jquery-1.4.2.min.js">//引用外部JS代码 </script> <style> #apDiv1 {position: fixed;left: auto;top: auto;bottom: auto;width: 237px;height: auto;z-index: 2;m…

.sh是什么语言_shell的重生历史:从sh到bash

shell 门派之争Linux 中的 shell 有很多类型&#xff0c;其中最常用的几种是&#xff1a;Bourne shell (sh)、C shell (csh) 和 Korn shell (ksh)&#xff0c;它们各有优缺点&#xff0c;用户则萝卜青菜&#xff0c;各有所爱。Bourne shell 出师不利Bash&#xff1a;Bourne aga…

【Docker】容器的几种网络模式

当你使用Docker时&#xff0c;你会发现需要了解很多关于网络的知识。Docker作为目前最火的轻量级容器引擎&#xff0c;因此&#xff0c;我们有必要深入了解Docker的网络知识&#xff0c;以满足更高的网络需求。本文介绍了Docker的4种网络模式。 1、首先我们先简单描述一下容器…

微信推送模板消息的PHP代码整理

本文为本人原创&#xff0c;未经许可&#xff0c;不可转载。 博主长期从事微信开发&#xff0c;微信开发相关问题和业务请联系qq 2580234897 最近做过一个需要推送消息的系统&#xff0c;就研究了一下微信的模板消息的推送。由于认证过的微信号&#xff0c;就用测试号做的&…

Android studio Day01-23

AndroidDay01-2&#xff08;Android studio安装&#xff09; 步骤如下&#xff1a; &#xff08;1&#xff09;下载Android studio下载地址&#xff1a;www.developer.android.com./sdk/installing/studio.html &#xff08;2&#xff09;双击安装&#xff0c;建议在studio安…

Unity 3D学习视觉脚本无需编码即可创建高级游戏

在本课程中&#xff0c;您将学习如何在Unity中使用可视化脚本(以前称为Bolt)以及如何在不编写一行代码的情况下创建自己的高级游戏所需的一切。本课程将教你如何掌握可视化脚本&#xff0c;即使你以前没有任何关于unity或编程的经验。 课程获取&#xff1a;Unity 3D学习视觉脚…

树莓派siri homekit_利用树莓派Zero自制一款Homekit摄像头,看上去挺酷,手痒了吗?...

虽然最近相继有多款兼容homekit商用摄像头上市&#xff0c;如果您也和小编一样&#xff0c;喜欢动手&#xff0c;那么DIY一款Homekit摄像头&#xff0c;然后自己3D打印个外壳支架&#xff0c;是不是很酷&#xff1f;HKCam项目Home 4开发者Matthias提供了一个开源项目&#xff0…

如何释放电脑被限制的20%网速?

很多朋友不管是看电影还是玩游戏&#xff0c;总觉得自己的网速慢&#xff0c;这跟自己所办网络的带宽有一定关系&#xff0c;但我们也要知道&#xff0c;我们的电脑在买来时&#xff0c;默认是限制了20%网速的&#xff0c;如何释放这20%的网速&#xff0c;提高用户体验呢&#…