(代码部署步骤)
1.创建gitee账户 (公司邮箱)
2.创建新的仓库
3.(1)用ssh协议的话 把自己电脑上的公钥生成 并上传到gitee就可以直接clone
(2) 用https协议的话 输入账号密码就可以了 如果想要输入一就记住的话 先可以执行
git config --global credential.helper store 命令 这样会在家目录中生成一个文件
.git-credentials 里面记录了 账号和密码 我的mac并没有这个 但是一次输入也能常用
clone 注意事项 sudo -u www git clone https://gitee.com/ www用户克隆
4.在服务器部署代码 与第三部基本一样 唯一不同的是 启动php的进程的用户是哪个 你就用哪个用户生成git 公钥 比如宝塔上的文件属主是 www 用户 那么你要 sudo -u www ssh-keygen -t rsa -C “XXXX@163.com” 并且把公钥部署到项目里面 部署公钥允许以只读的方式访问仓库,主要用于仓库在生产服务器的部署上,免去HTTP方式每次操作都要输入密码和普通SSH方式担心不小心修改仓库代码的麻烦。
部署公钥配置后的机器,只支持clone与pull等只读操作。如果您想要对仓库进行写操作,请 添加个人公钥
5.代码自动发布 写在代码接口上 php示例
d
a
t
a
=
r
e
q
u
e
s
t
(
)
−
>
p
o
s
t
(
)
;
i
f
(
data = request()->post(); if(
data=request()−>post();if(data[‘password’] != ‘密码’){
exit(‘密码错误’);
}
//sss
//Log::channel(‘gitlog’)->info(json_encode($data, JSON_UNESCAPED_UNICODE));
$name =
d
a
t
a
[
′
r
e
p
o
s
i
t
o
r
y
′
]
[
′
n
a
m
e
′
]
;
i
f
(
!
i
n
a
r
r
a
y
(
data['repository']['name']; if(!in_array(
data[′repository′][′name′];if(!inarray(name, [‘shop’,‘git_study’,‘admin’,‘web’,‘’])){
exit(‘fail:’.$name);
}
//网站目录
w
w
w
f
i
l
e
=
′
/
w
w
w
/
w
w
w
r
o
o
t
/
′
.
www_file = '/www/wwwroot/'.
wwwfile=′/www/wwwroot/′.name.‘/’;
//若是主分支且提交数大于0
if ($data[‘ref’]==‘refs/heads/master’ && $data[‘total_commits_count’]>0) {
$cmd = “cd $www_file && git fetch --all && git reset --hard origin/master && git pull origin master 2>&1”;
r
e
s
=
s
h
e
l
l
e
x
e
c
(
res = shell_exec(
res=shellexec(cmd);//以www用户运行1
$res_log = ‘-------------------------’.PHP_EOL;
$res_log .= $data[‘user_name’] . ’ 在’ . date(‘Y-m-d H:i:s’) . ‘向’ . $data[‘repository’][‘name’] . ‘项目的’ . $data[‘ref’] . ‘分支push了’ . $data[‘total_commits_count’] . ‘个commit:’ . PHP_EOL;
$res_log .=
r
e
s
.
P
H
P
E
O
L
;
L
o
g
:
:
c
h
a
n
n
e
l
(
′
g
i
t
l
o
g
′
)
−
>
i
n
f
o
(
res.PHP_EOL; Log::channel('gitlog')->info(
res.PHPEOL;Log::channel(′gitlog′)−>info(res_log);
exit($res_log);
}
6.分支管理策略
master 分支 只能管理员写操作 其他人只能pull clone
test 分支 测试环境 每个人都可以读写操作 并且代码会在推送的时候自动发版
2021_task_name 分支 任务分支 每个人都在此分支上开发 开发完成后 把master分支合并到此分支测试 然后再在test分支上去测试 最后等管理员发版 master
my_分支 自己的分支 如果 2021_task_name分支冲突了 需要reset的时候 那么个人分支的内容就得以保存