docker+githook实现goweb项目自动发包部署

Posted ZJJ2DSN

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了docker+githook实现goweb项目自动发包部署相关的知识,希望对你有一定的参考价值。

环境:一台公司的开发服务器(可以随便装东西~),自己的电脑

1.先在两台机器上面安装好git,然后在服务器上面初始化一个空的库,然后还有一个代码库

cd /home/baizhi/src
git init --bare DAP_go.git
git clone [email protected]/DAP_go.git  这里是公司的仓库

2.然后本地代码的关联一下,remote是可以关联多个远程仓库的,我关联了两个,一个自己初始化的一个公司的,这里用自己的来配置hook

mkdir DAP_go
cd DAP_go
git init
git add remote baizhi [email protected]:/home/src/DAP_go.git

3.配置服务器上面的hooks

cd DAP_go.git/hooks
mv post_receive.sample post_receive
vi post_receive(内容如下)
#!/bin/sh

unset GIT_DIR
cd
cd /home/baizhi/src/DAP_go
git pull

exit 0

4.然后在本地的DAP_go上面修改代码,push成功后就会触发hooks了,我这里比较坑爹,我得提交两次,一次提交到公司的(例行公事,等于我的代码做了两次备份,再也不怕硬盘坏掉了:),一次提交到服务器上自己新建的。

切换到自己本地的DAP_go下
vi test
hello
git add .
git commit
git push(我这边默认是到了公司的仓库,那么现在公司的仓库有新代码了)
git push baizhi dev(baizhi是服务器上远程库的名字,一般关联一个的时候用的一般是origin,dev是分支) 
Counting objects: 3, done.
Delta compression using up to 4 threads.
Compressing objects: 100% (2/2), done.
Writing objects: 100% (3/3), 266 bytes | 0 bytes/s, done.(到这里是代码写入到服务器上自己初始化的库,下面是hook的脚本执行的过程)
Total 3 (delta 1), reused 0 (delta 0)
remote: From ip:server/dap_go
remote:    7a2f32a..d9df2ae  dev        -> origin/dev
remote: Updating 7a2f32a..d9df2ae
remote: Fast-forward
remote:  test |    1 +
remote:  1 files changed, 1 insertions(+), 0 deletions(-)
To [email protected]:/home/baizhi/src/DAP_go.git
   7a2f32a..d9df2ae  dev -> dev

5.然后在服务器的DAP_go上看看是不是最新的代码,这里显示了Already up-to-date,说明成功了

[[email protected] DAP_go]$ git pull
Already up-to-date.

6.上面做的这些就可以实现代码变动的监控,下面docker要做的任务就是对代码进行热编译。然后上面的post_reciver的脚本可能还需要添加构建新的docker镜像的命令,然后就可以在测试,或者正式环境上拉取最新的镜像?明天弄,先下班

 

以上是关于docker+githook实现goweb项目自动发包部署的主要内容,如果未能解决你的问题,请参考以下文章

利用GitHook实现博客园文章的备份和自动发布

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

利用GitHook实现博客园文章的备份和自动发布.md

如何使用Docker部署一个Go Web应用程序

自动化发布-GitLab WEB Hooks 配置

python 自动克隆gitlab web前端