资讯专栏INFORMATION COLUMN

git利用post-receive自动化部署

paulli3 / 3312人阅读

摘要:要求实现直接完成代码部署到服务器的目录实现方式利用的中的来实现代码提交完成之后的动作。对于代码部署目录和仓库我们已经通过进行了关联了,因为我们一旦将代码到仓库,那么会自动检出到目录下。

要求

实现git push 直接完成代码部署到服务器的目录

实现方式

利用git的hooks中的post-receive来实现代码提交完成之后的动作。将仓库指定一个--work-tree然后进行检出操作checkout --force

目录结构

我自己的项目结构是这样的,每一个仓库对应一个项目,例如public/wx项目对应repo/wx.git仓库

</>复制代码

  1. .
  2. ├── public
  3. │   └── wx // 这是我们的web代码部署目录
  4. │   ├── index.php
  5. │   ├── test2.php
  6. │   ├── test3.php
  7. │   └── test.php
  8. └── repo // 这个是我们的仓库目录
  9. └── wx.git // 这个对应wx项目的仓库
  10. ├── branches
  11. ├── config
  12. ├── description
  13. ├── HEAD
  14. ├── hooks // post-receive钩子代码写在这里面
  15. ├── index
  16. ├── info
  17. ├── objects
  18. └── refs

再看下hooks文件目录

</>复制代码

  1. .
  2. ├── applypatch-msg.sample
  3. ├── commit-msg.sample
  4. ├── post-commit.sample
  5. ├── post-receive
  6. ├── post-receive.sample
  7. ├── post-update.sample
  8. ├── pre-applypatch.sample
  9. ├── pre-commit.sample
  10. ├── prepare-commit-msg.sample
  11. ├── pre-rebase.sample
  12. └── update.sample

我们将post-receive.sample复制一份post-receive,并且编写代码如下

</>复制代码

  1. # 指定我的代码检出目录
  2. DIR=/www/public/wx
  3. git --work-tree=${DIR} clean -fd
  4. # 直接强制检出
  5. git --work-tree=${DIR} checkout --force
如何生成目录

上面看到的repo目录中的wx.git实际上是一个裸仓库,我们用下面的命令来生成这样一个仓库。

</>复制代码

  1. cd /www/repo
  2. git init --bare wx.git

对于代码部署目录和仓库我们已经通过post-receive进行了关联了,因为我们一旦将代码push到仓库,那么会自动检出到publish/wx目录下。

远程部署

在本地电脑上,我们添加远程仓库

</>复制代码

  1. git init
  2. git remote add origin root@xxx.xxx.xxx.xxx:/www/repo/wx.git

这个时候我们添加了远程仓库,那么我们来测试下push操作

</>复制代码

  1. touch index.php
  2. git add .
  3. git commit -m "test"
  4. git push

可能会提示一个--set-upstream,直接执行下就好了。执行完之后我们登陆服务器,会发现文件已经出现在public/wx/index.php

注意点

如果我们没有配置ssh免密码登陆的话,我们需要在push代码的时候输入密码

如果我们添加的远程仓库不是root@xxx.xxx.xx.xx,例如是abc@xx.xx.xx.xx,那么我们要确保abc用户对wx.git目录下的文件有777权限。

新增仓库

需要登陆远程服务器进行初始化repo_name.git仓库

需要手动创建public/repo_name文件夹,并且修改权限为777

需要重新编写hooks/post-recieve文件,修改里面的DIR路径为public/repo_name

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/23255.html

相关文章

  • Git 自动部署网站

    摘要:以上命令表示到网站目录,并更新。随后还要把改成可执行本地环境提交代码至服务器 原理和流程 1、git用户执行 git push 操作 2、远程仓库发现有用户执行了push操作,就会执行一个脚本 post-receive(钩子) 3、在 post-receive 脚本中,将git仓库的代码拷贝到web站点目录下 1、进入服务器安装git,并建立仓库 sudo yum install g...

    entner 评论0 收藏0
  • 搭建Git服务器、编写自动部署脚本

    摘要:搭建服务器编写自动部署脚本今天试了下在服务器上搭建服务器,并且编写一个简单的自动部署脚本。好了,试试吧原文连接搭建服务器编写自动部署脚本更多分享知识点请扫码关注 搭建Git服务器、编写自动部署脚本 showImg(https://segmentfault.com/img/bVbs9fB?w=675&h=221); 今天试了下在linux服务器上搭建Git服务器,并且编写一个简单的自动部...

    jollywing 评论0 收藏0
  • 如何在服务器上搭建hexo博客

    原文链接 随着Vateral主题的开发接近了尾声,在对主题速度优化的时候发现之前用的githubpage问题多多:首先就是因为在国内的原因,访问速度本身就很慢,曾经有次加载一张16kb的图标时间耗费了26s!!?其次,在对资源做CDN托管加速时,域名是需要备案的,显然githubpage也是做不了的;所以果断舍弃了这个把hexo搭建到了我的阿里云服务器上 总体来说还是比把hexo搭建到github...

    MycLambert 评论0 收藏0
  • 阿里云VPS搭建自己的的Hexo博客

    摘要:博客的架构先搞明白博客从搭建到自动发布的架构,才能更好的理解我们每一步进行的操作。整个搭建流程第一部分服务器环境搭建,包括安装配置创建用户。在裸库的文件夹中,新建文件。 1. 博客的架构 先搞明白Hexo博客从搭建到自动发布的架构,才能更好的理解我们每一步进行的操作。不然只跟着步骤过了一遍,却不知道为什么这么做。 首先看这张架构图:showImg(https://segmentfaul...

    hizengzeng 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<