git 自动化部署

686 查看

环境

软件

  1. git

  2. ssh

用户环境

首先要明确这里会用到的概念。 本地仓库, vps的中心仓库,vps的本地仓库。

这里vps上会用到两个git仓库,一个是git中心仓库(裸库),一个用于部署的仓库。

我们为了区分两个仓库,同时也跟上标准做法。 所以将中心仓库建在git用户目录下

vps中心仓库

  1. 创建git组

    groupadd git

  2. 创建git跟相关目录

    useradd -m -g git -G git -s /bin/bash git

  3. 在git目录下建立.ssh/authorized_keys

    将你本地的ssh的pub贴在里面,方便本地代码推到vps的中心仓库时不需要输密码(所以这步不是必须的)

  4. 创建中心仓库

    mkdir -p repo/your_repr

    cd repo/your_repr

    git init --bare

根据上面这样创建的话,中心仓库的地址是: git@ip:repo/your_repo

  1. 在你本地添加远程仓库地址

    git remote add vps git@ip:repo/your_repo

配置完后,后续你推送代码到 vps 这个远程仓库名时,就是自动部署了

vps的本地仓库

在此之前,需要先假定一些条件。 我们假设vps仓库是在另个一账户下创建,那么我们需要先去该账户下创建 ssh 的秘钥。 创建完后将该账户生成的pub文件中的内容复制到 /home/git/.ssh/authorized_keys 中

做完这些,这下用来部署的仓库就很简单了

git clone git@127.0.0.1:repo/your_repo

自动布署代码

在 git 账号下 执行

cd repo/your_repr/hooks

vim post-receive

贴入下面代码:

#!/bin/sh
unset GIT_DIR

deployPath='/home/user/your_repo'

cd $deployPath
git pull origin master