git利用hooks实现自动部署
准备工作:
1、一台虚拟linux环境和window
开始工作
1、安装git(略)
2、创建git用户和创建test.git裸仓库
[root@localhost ~]# useradd -m git #创建用户,shell是bash [root@localhost ~]# su git [git@localhost root]$ cd ~ [git@localhost ~]$ mkdir repository && cd repository [git@localhost repository]$ git init --bare test.git
此时在repository目录生成test.git,作为远程仓库
3、生成公私钥(多种工具生成),此处使用ssh-keygen,大概情形如下
[git@localhost .ssh] cd /home/git/.ssh #没有.ssh目录,自行创建 [git@localhost .ssh]$ ssh-keygen -t rsa -C 'git@master.com' Generating public/private rsa key pair. Enter file in which to save the key (/home/git/.ssh/id_rsa): Enter passphrase (empty for no passphrase): Enter same passphrase again: Your identification has been saved in /home/git/.ssh/id_rsa. Your public key has been saved in /home/git/.ssh/id_rsa.pub. The key fingerprint is: SHA256:J06qIJSTy2n0kSfmAwavvxrv2fwK1pd2UwifUg6axl4 git@master.com The key's randomart image is: +---[RSA 2048]----+ | | | | |. o . | |..o..o * o | | O.==.E S o | |=.O++. * + | |+=++o = + | |.* *.+ . . | |.o*.=o. | +----[SHA256]-----+
会生成两个文件id_rsa和id_rsa.pub,以.pub结尾的是公钥,将公钥放到authorized_keys文件中,实现免密登录
[git@localhost .ssh]$ cat id_rsa.pub >> ./authorized_keys
4、window客户端
$ git clone git@ip:/home/git/repository/test.git
5、Linux客户端
[git@localhost ~]$ mkdir test && cd test [git@localhost test]$ git init #初始化仓库 [git@localhost test]$ git remote add origin git@ip:/home/git/repostroy/test.git [git@localhost test]$ git pull origin master The authenticity of host 'ip (ip)' can't be established. ECDSA key fingerprint is SHA256:uSKcAOh8Q8Lca9vlPQhjVGm8lPtEpc09Ze4GTW70lFs. ECDSA key fingerprint is MD5:66:f8:99:85:bc:e2:20:51:f0:4e:59:88:30:2e:5a:2d. Are you sure you want to continue connecting (yes/no)? yes Warning: Permanently added 'ip' (ECDSA) to the list of known hosts. remote: Counting objects: 100, done. remote: Compressing objects: 100% (73/73), done. remote: Total 100 (delta 5), reused 0 (delta 0) Receiving objects: 100% (100/100), 7.68 KiB | 0 bytes/s, done. Resolving deltas: 100% (5/5), done. From 192.168.0.159:/home/git/repostroy/test * branch master -> FETCH_HEAD
6、使用post-update实现自动化
[git@localhost ~]$ /home/git/repostroy/test.git/hooks/post-update # 添加如下内容 unset GIT_DIR cd /home/git/fail git pull origin master
7、测试(window客户端)

成功!!!!
碰到的几个问题
1、post-receive和post-update的区别、
2、远程无法执行
答、需要给post-receive或者post-update执行权限
3、如图

答:要在git用户生成公私钥,因为git远程库是用git用户做pull操作的
4、cannot open .git/FETCH_HEAD: Permission denied
答:查看FETCH_HEAD的所属主、所属组是不是git,不是用户chown命令修改
5、暂时没有
git利用hooks实现自动部署的更多相关文章
- windows环境下利用Gitblit搭建Git服务器并实现自动部署Web站点目录
Git服务搭建多见于linux环境,但windows主机也不少,目前网上文章诸多不全,且以讹传讹,不甚清楚.下面介绍windows环境下的自动部署和发布. 所需环境及资源:Java环境.Gitblit ...
- 用 Git Hooks 进行自动部署
原文发表于 http://ourai.ws/posts/deployment-with-git-hooks/ 昨天开始接手开发公司前端团队的主页,在稍微修改点东西后推送到远程仓库想看下线上结果时发现并 ...
- php项目使用git的webhooks实现自动部署
前言 在项目开发中使用git进行代码的管理,每次完成更改上传代码后,还需要登录服务器将代码拉取下来.现在git服务器(gitee/gitlab/github)都会有Webhooks功能,以实现在向gi ...
- 搭建Git服务器环境----Git hooks代码自动部署
引言:自己想搭一套git的服务端环境,不想用github码云等.经多方资料整合,实验总结,以下是亲测有效的方式.可用于公司日常开发 一.搭建Git环境 ① 安装 Git Linux 做为服务器端系统, ...
- 初始化git库并配置自动部署
1.初始化库 git init --bare wap.git 2.配置wap.git/config文件 [core] repositoryformatversion = 0 filemode = tr ...
- Gogs 设置Git钩子实现项目自动部署
每次修改代码需要上传到 git仓库,查看了一下 Gogs 使用文档 发现有 web钩子 这个选项,然后发现了本地可实现的 Git钩子. 注意:需要用到管理员帐号登录,进行仓库的设置. 有三种状态分别是 ...
- svn钩子(hooks)自动部署代码到web目录
版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog.csdn.net/li956732806/article/details/71158869 web目录:/hoe ...
- Jenkins+Git的搭建和自动部署
前言 Jenkins在工作中都使用过,之前都是运维去搭建部署,弄好了之后给我一个网址去构建项目就可以了,所以也都是一直没了解过安装过程. 今天在自己的服务器上搭建了一遍,中间有遇到很多坑,特在此归纳总 ...
- GIT服务器实现web代码自动部署
之前在一台vps服务器上面搭建了Git服务器,用来做代码管理,方便团队开发.但是问题也就相应的来了,使用git可以轻松的上传代码,而由于做的是web开发,每次还都得到服务器上把代码手动pull或者复制 ...
随机推荐
- java TreeSet的排序之定制排序
TreeSet的自然排序是根据元素的大小进行升序排序的,若想自己定制排序,比如降序排序,就可以使用Comparator接口了: 该接口包含int compare(Object o1,Object o2 ...
- P1098 方程解的个数
题目描述 给出一个正整数N,请你求出x+y+z=N这个方程的正整数解的组数(1<=x<=y<=z<1000).其中,1<=x<=y<=z<=N . 输入 ...
- P1097 方程的整数解
题目描述 给定一个整数N,求方程 \(x^3-x^2-x=N\) 的整数解. 保证解的范围在 \([-100,100]\) 范围内. 输入格式 一行一个整数 \(N(-10^6<=N<=1 ...
- linux ioctl 方法
ioctl, 我们在第 1 章展示给你如何使用, 是一个系统调用, 作用于一个文件描述符; 它 接收一个确定要进行的命令的数字和(可选地)另一个参数, 常常是一个指针. 作为一个使 用 /proc 文 ...
- 微信小程序之在线试题(1)
最近在做一套公司的市场化培训项目,涉及到手机端在线答题的设计,首先摒弃app的模式,那就只剩下微信公众号和小程序,而公众号是可以关联小程序,所以我们只需要做好一套小程序. 因为篇幅问题,下面只讲解在线 ...
- vue-learning:40 - Vuex - 第一篇:概念和基本使用
vuex 第一篇 目录 vuex概念 state / mapState getter / mapGetter mutation / mapMutation action / mapAction mod ...
- EJB版本
1999: ejb version 1.1 -- j2ee 1.22001: ejb version 2.0 -- j2ee 1.32003: ejb version 2.1 -- j2ee 1.42 ...
- C# 线程参数
. class ThreadSample { private readonly int _iterations; public ThreadSample(int iterations) { _iter ...
- vue-learning:16 - js - computed
computed 在指令章节讲过,插值{{ }}和指令都接受变量和表达式的写法,使用表达式可以进行简单的二元或三元运算.但如果要执行更加复杂的计算或频繁重复的计算,如果还是直接写在指令的表达式中会让代 ...
- 编写jQuery插件的方法和注意点
编写jQuery插件的方法和注意点 插件的种类 jQuery的插件主要分为3种类型. 1. 封装对象方法的插件 这种插件是将对象方法封装起来,用于对通过选择器获取的jQuery对象进行操作,是最常见的 ...