webhook 自动部署代码

前话: 一般情况,自己在本地开发,代码改动后要push放到线上去看效果,但是我们还要到线上环境手动拉取代码库 git pull 下来, 一来一回太麻烦了。

   现在用webhook就可以实现本地开发,push代码到GitHub上面时,线上自动同步更新的代码,省事多了。

1、首先在GitHub或者码云这些代码托管库上面添加好自己的项目;

2、把本地写好的两个文件上传到代码库, sync.php 和 sync.sh ; (其实就是本地push后自动请求sync.php,   里面执行 sync.sh, 最终就是执行 git pull 的命令)

  sync.php:

<?php
  echo ‘进来了...‘;

  exec(‘sh sync.sh‘);

?>

sync.sh: (我用的是默认的master分支,其它分支可自己定)

#!/bin/bash
/usr/bin/git pull origin master 

3、 vim /usr/local/php/etc/php.ini   # 找到 disable 删除 exec(用 linux命令 /disable, 然后 按n 往下找),因为这个函数默认被禁用了

vim /etc/passwd                     # 将 www 的 /sbin/nologin 改为 /bin/bash , www设置为登录

4、因为,我们的PHP执行其实是使用的www用户。默认都是www用户,PHP中执行git也是使用www用户。

   所以,在线上环境首先要 切换到 www 用户(命令:su  www);

5、设置公钥, 命令: ssh-keygen -t rsa -b 4096 -C "[email protected]", 这里填写自己的邮箱账号,弹出:Enter file ... key (/home/www/.ssh/id_rsa):, 然后一直 Enter 就好,结束后会在 /home/www/.ssh 这个目录下面生成一个公钥文件 id_rsa.pub,打开复制内容到GitHub代码库,添加后公钥管理那里。

6、在 /home/wwwroot/目录下面克隆出自己的项目,git clone [email protected]/test.git;

  如果执行报错这种:

  The authenticity of host ‘gitee.com (120.55.226.24)‘ can‘t be established.
  ECDSA key fingerprint is SHA256:FQGC9Kn/eye1W8icdBgrQp+KkGYoFgbVr17bmjey0Wc.
  ECDSA key fingerprint is MD5:27:e5:d3:f7:2a:9e:eb:6c:93:cd:1f:c1:47:a3:54:b1.
  Are you sure you want to continue connecting (yes/no)? yes
  Warning: Permanently added ‘gitee.com,120.55.226.24‘ (ECDSA) to the list of known hosts.

再执行一次克隆就好 git clone [email protected]/test.git;

7、给线上的 sync.php  和 sync.sh 加执行权限 ; chmod +x sync.php  ;  chmod +x sync.sh

8、上面第4点说到了执行的是www用户,要让www用户免密码执行git命令才可以;

通过 vim  /etc/sudoers  进去修改, 加入

www     ALL=NOPASSWD:/usr/bin/git

9、最后一步, 在你的项目里添加webhook地址, http:XXX.com/sync.php 这种可以访问的, 就是访问sync.php 这个文件,让它去代码库自动拉取代码。

这样就可以在本地开发, push上去后,线上代码自动同步了。

另外,也可以添加钉钉机器人来推送通知;

原文地址:https://www.cnblogs.com/pyspang/p/11519668.html

时间: 2024-10-20 16:11:30

webhook 自动部署代码的相关文章

【Webhooks】使用Git的Webhooks进行服务器自动部署代码

使用Git的Webhooks进行服务器自动部署代码 本文项目地址 https://github.com/diandianxiyu/PageBlog/blob/master/%E4%BD%BF%E7%94%A8Git%E7%9A%84Webhooks%E8%BF%9B%E8%A1%8C%E6%9C%8D%E5%8A%A1%E5%99%A8%E8%87%AA%E5%8A%A8%E9%83%A8%E7%BD%B2%E4%BB%A3%E7%A0%81.md 如有错误,请指正~ 前言 之前一直想做自动化运

在linux服务器上装svn版本管理,自动部署代码到项目

在linux服务器上装svn版本管理,自动部署代码到项目 http://bbs.aliyun.com/read/9715.html?spm=5176.7114037.1996646101.1.W3zw3X&pos=1 http://v5sheji.com/archives/setupsvnonlinux.html 1.安装svn服务器端  yum install subversion 从镜像下载安装svn服务器端 中间会提示是否ok,输入y,确认 安装成功提示:.....complete! 依次

apache下 使用svn自动部署代码

碰到一个问题 svn不能ftp ftp又不能svn有没有一个办法把两个联系起来呢? 其实不需要svn自带的hooks(钩子)功能足以满足你得需求 svn配置和设置可以网上直接找到.直接说怎么配置自动同步功能.在svn的目录下 /www/svn/repos/hooks  有的文件 post-commit.tmpl 这个就是需要修改的文件也就是在svn有commit的时候我们需要做的 1.设置需要更新的目录 直接在配置好的首页对应的目录里面checkout一下 2.修改 post-commit.tm

window、linux系统与linux服务器之间使用svn同步及自动部署代码的方法

摘要: 在家用PC,在公司用办公电脑对一个项目的代码进行修改时,会遇到代码同步的问题.本文讲解了代码同步及自动部署的解决办法. 实现方法: 1.首先在linux服务器上和linux上安装svn(sudo yum install svn). 2.然后在服务上创建一个版本库并配置用户及权限,这点网上的方法多的是,自行百度. 3.在linux客户端使用svn命令进行同步,具体如下: svn co svn://(ip地址)  (保存文件的文件夹)    ##检出版本库.第一次要输入用户名和密码. 将需要

tomcat 自动部署代码

## 系统环境windows server2008## 软件环境tomcat 6 .java1.7.ant1.9.9(编译 java1.7 所需 ant 版本不能高于1.9.9)## 安装 ant 并设置系统环境变量[ant下载地址: http://ant.apache.org/bindownload.cgi](http://ant.apache.org/bindownload.cgi)解压后将 bin 目录设为全局变量 ## 编写 build.xml ```<project basedir=&qu

Webhook实践 —— PHP自动部署

Webhook实践 -- PHP自动部署 1.部署Gogs 参考博客:使用 Gogs 搭建自己的 Git 服务器 2.添加git的ssh公钥 因为是用git用户部署的Gogs,接下来在服务器上配置用git账号配置ssh公钥 首先在主机上生成秘钥: [[email protected] ~]$ ssh-keygen -t dsa -P "" -f ~/.ssh/id_dsa Generating public/private dsa key pair. Created directory

Deployer 自动部署

本文主要介绍 Deployer -- 一个具有模块化.代码回滚.并行任务等功能的 PHP 部署工具. Deployer 用法非常简单易用,可以快速上手,且支持多个 PHP 框架. 安装 Deployer 安装有多种方法: 第一种 通过 Phar 存档,只需运行一下命令即可: curl -LO https://deployer.org/deployer.phar mv deployer.phar /usr/local/bin/dep chmod +x /usr/local/bin/dep 第二种 

Jenkins+git+webhook自动触发部署和测试任务

Jenkins+git+webhook自动触发部署和测试任务 需求: 目前上线前会将需要上线的代码push到release分支,然后由人工填写参数点击触发jenkins上的任务.希望这个过程能完成自动化,只要有人往release上推代码,就自动跑部署release分支并测试 解决办法及步骤: 1.在jenkins里需要自动触发的job里的"源码管理"部分添加设置,如下图.填好git仓库url和需要检测的分支名称 注意事项: a.在填url的时候可能会提示找不到命令的错误,遇到这个错的解

GitLab 实现代码自动部署(转载自https://segmentfault.com/a/1190000011561808)

在当下使用 GIT 来管理代码已经是一种非常流行的方式了.使用 GIT 可以很方便的给代码创建分支,撤销不需要的提交,与他人合作共同编写代码. GitLab 是基于 GIT 实现的现代化的开发者协作平台,它将 issues, code review, CI 和 CD 整合到独立的网站UI,弥补了 GIT 在可视化操作方面的不足. 本文目的 本文的目的是配置实现在 GitLab 平台上的代码自动部署.想要达到的效果是这样子的,当客户端向 GitLab 服务器的特定分支(如:prod)提交代码时,G