Skip to main content
A cup of beer
  1. Posts/

git自动化初探🚀

·70 words·1 min
Table of Contents

搭建git仓库 #

为了安全,新建git用户,并设置密码

useradd git
passwd git

可以在git用户的家中建立一个.git目录,作为仓库文件夹:

cd ~
mkdir nesto.git

进入它,初始化为空仓库:

cd nesto.git
git init --bare .

允许被push:

git config receive.denyCurrentBranch ignore
测试git仓库# #

先把本地仓库添加该remote:

git remote add dep git@111.111.111.111:/home/git/nestob.git

111.111.111.111是服务器ip。

dep是该远程配置的名称,可以随意指定。

该操作的范围只是更改本仓库。

然后就可以push了:

git push -u dep master
利用git hook来实现自动部署# #

git hook就像react hook一样,会在特定的事件发生时执行一定的操作。这里是sh脚本。

进入hooks存放目录:

cd /home/git/nestob.git/hooks

创建post-receive钩子,使收到push后可以自动拉取代码到服务器的项目目录:

vi post-receive

写入:

#!/bin/bash
git --work-tree=/home/admin/nachos/code/lab5_git checkout -f

然后记得授予可执行权限:

chmod +x post-receive

这样做的效果就是,当接收到push,就会自动把代码拉取到/home/website/wwwroot目录下。相当于完成了自动部署。

对于go语言一类的需要在目标机器上编译再运行的,还可以在此进行自动编译。

需要注意,一定要保证git用户拥有对/home/website/wwwroot的写权限,也就是将模式修改为777.

因为一般目录的模式都是drwxrwxr-x,第三列是对所有用户的权限,所以改成drwxrwxrwx,即777.

chmod 777 lab5_git