基于webhook方案的Git自动部署方案
之前已经用Git实现了自己博客的提交自动部署,并自动提交到GitHub和coding以备不时之需。平时项目代码都托管在Coding或者GitHub上,也已经用上了coding提供的webhook功能,偶尔个别自己玩玩的项目提交了代码之后再SSH到服务器上去 git pull
一次,刚好一起做成了自动部署,方法记录起来备忘。
实现步骤
在服务器上
以Nginx环境为例,Apache请看OverTrue的教程
生成公钥
公钥有两个:1. git用户公钥,2. 部署公钥:
git用户公钥
1 |
ssh-keygen -t rsa -C "[email protected]" #生成的文件通常是 /root/.ssh/id_rsa,如果非root用户请查看提示上的路径 |
部署公钥
1 |
sudo -Hu www ssh-keygen -t rsa |
准备钩子文件
创建和修改目录权限
1 |
mkdir /home/wwwroot/website.com/hook |
写入钩子文件
1 |
sudo -Hu www touch /home/wwwroot/website.com/hook/index.php |
钩子文件代码内容如下:
1 |
<?php error_reporting(1); $target = '/home/wwwroot/website.com'; // 生产环境web目录 |
确保你的 大专栏 基于webhook方案的Git自动部署方案hook文件可以访问:http://example.com/hook/index.php , 钩子准备完成。
修改git配置和保存git用户名密码
1 |
sudo -Hu www git config --global credential.helper store #永久保存 |
在Coding仓库
添加用户公钥
复制/root/.ssh/id_rsa.pub
内容到个人设置页的SSH公钥里添加即可(https://coding.net/user/account/setting/keys)
添加部署公钥
复制/home/www/.ssh/id_rsa.pub
的内容并添加到部署公钥:
选择 项目 > 设置 > 部署公钥 > 新建
,将公钥内容全部粘贴到下面框并确认
添加hook
选择 项目 > 设置 > WebHook > 新建hook
粘贴你的 hook/index.php
所在的网址。比如:http://example.com/hook/index.php
, 令牌可选,但是建议写上。
coding出了个
webhookv2
功能强大了不少,对有更多细节要求的程序帮助不少但也复杂了,选择返回旧版新建个webhook使用即可。
稍过几秒刷新页面查看hook状态,或者点击测试,显示为绿色勾就OK了。
项目初始化
我们需要先在服务器上clone一次,以后都可以实现自动部署了:
1 |
sudo -Hu www git clone https://git.coding.net/yourname/yourgit.git /home/wwwroot/website.com/ --depth=1 |
这个时候应该会要求你输入一次Coding的帐号和密码,因为上面我们设置了永久保存用户名和密码,所以之后再执行git就不会要求输入用户名和密码了。
注意,这里初始化clone必须要用www用户
往Coding.net提交一次代码测试
在本地clone的仓库执行:
1 |
git commit -am "test hook" --allow-emptygit push |
OK,稍过几秒,正常的话你在配置的项目目录里就会有你的项目文件了。
初始化Laravel框架
下载Composer
在项目目录下执行:
1 |
sudo -Hu www curl -sS https://getcomposer.org/installer | php |
记得在本地提交的时候在.gitignore中加上composer.phar
参考文档
基于webhook方案的Git自动部署方案的更多相关文章
- spring boot 自动部署方案
现在主流的自动部署方案大都是基于Docker的了,但传统的自动部署方案比较适合中小型公司,下面的方案就是比较传统的自动部署方案. 1.为什么需要自动部署 基于微服务的架构,自动部署显得非常重要.因为每 ...
- Jenkins spring boot 自动部署方案
原文地址:http://www.cnblogs.com/skyblog/p/5632869.html 现在主流的自动部署方案大都是基于Docker的了,但传统的自动部署方案比较适合中小型公司,下面的方 ...
- Git自动部署
Git自动部署文件位于repository下面的hooks里的post-receive #!/bin/sh set -e git-update-server-info gitosis-run-hook ...
- git自动部署到服务器
1.现在服务器配置空仓库 mkdir -p test/project.git chmod 777 test cd test/project.git/ git init --bare . cd .. c ...
- 基于Github Actions + Docker + Git 的devops方案实践教程
目录 为什么需要Devops 如何实践Devops 版本控制工具(Git) 学习使用 配置环境 源代码仓库 一台配置好环境的云服务器 SSH远程登录 在服务器上安装docker docker技术准备工 ...
- .NetCore基于Jenkins和Gogs的自动化部署方案
准备工作 Jenkins和gogs的安装配置可以看前两篇:Jenkins安装.配置与说明 和 gogs安装与说明(docker) 此外,因为还要安装.net core的SDK和Git工具: 安装.n ...
- MongoDB3.6 一键化自动部署方案
1.系统基础配置 下面的命令默认都使用root用户进行操作,操作系统为Centos7,mongodb3.6.x以上版本 1.1 修改系统配置文件/etc/security/limits.conf和/e ...
- [转] 使用git自动部署简单网站
要做什么 假设你有一个博客,有一台网站服务器(或者很多台作负载均衡的服务器),当你的博客要升级时,你可能要在你自己的电脑上写好代码(可能包括本地调试好),然后提交到git(或svn),然后在每个服务器 ...
- Gitlab使用Webhook实现Push代码自动部署
1.Jenkins 安装完成以后,首先我们在Jenkins中需要安装一下,Gitlab Hook Plugin 插件: 2.插件安装完成我们创建任务,在任务重构建触发器下获取回调URL: 注意: 注意 ...
随机推荐
- Spring4.3.25版本使用的积累性总结(不定期更新)
Spring4.3.25版本使用的积累性总结 Spring4.x所有Maven依赖 Spring基于XML配置方式注入bean对象和@Resource注解的使用 详解Spring3.x 升级至 Spr ...
- windows系统下的渗透测试神器 -pentestbox
Pentestbox介绍 PentestBox官网:https://pentestbox.org/zh/ 这是一个运行在windows环境下的终端,集成了绝大部分渗透测试所需要的环境 如python2 ...
- Adobe Photoshop、Adobe Illustrator、Bohemian的Sketch、Figma比较
整体来说: Adobe Photoshop:位图图像编辑处理,更适合图片编辑和数码绘画处理: Adobe Illustrator:矢量设计,更适合图标设计和图形设计处理: Sketch:矢量设计,更适 ...
- AI大火之下智能手机行业能适应这一风口吗?
今年智能手机行业的变化,实在是让人摸不到头脑.一方面是智能手机厂商依然在拿出各种具有噱头的产品,仿佛整个市场还依然热火朝天.但在另一方面,智能手机出货量却出现大幅下滑.据中国信息通信研究院发布的数据显 ...
- IE浏览器弹出的文件下载工具条实现自动另存为
IE浏览器中如果有一个文件可以下载,用鼠标点击一下文件的超链接,会在IE浏览器下方出现一个工具条,工具条上主要有“打开” “保存”两个按钮. 如果点击“保存”按钮,会把附件保存到系统的“下载”或“Do ...
- 现有.NET 开源框架浅析
自己一直在关注框架,也喜欢捣鼓一些框架,最近我们自己一直是在用OSGI.NET 做插件式模块开发,感兴趣的可以到 http://www.iopenworks.com/ 官网了解,在进行OSGI.N ...
- E. Paint the Tree(树形dp)
题:https://codeforces.com/contest/1241/problem/E 题目大意:给你一棵树,每一个点都可以染k种颜色,你拥有无数种颜色,每一种颜色最多使用2次,如果一条边的两 ...
- Serverless 的开发者工具建设
本文将介绍 Serverless 生态下的开发者工具,并简述这些工具是如何贯穿开发.调试.测试和部署的生命周期,提升开发者效率的. 由于 Serverless 平台具备弹性扩缩.免运维.按需付费等特点 ...
- python3多线程应用详解(第二卷:多线程到底是怎么工作的)
现在很多人都说用多线程工作快是因为多个不同任务可以同时执行,注意我说的是不同任务,要是重复做一件事达到相同效果就是画蛇添足了,其实这是个错误的说法,线程真正的本质是无法同时执行的.现在我们来看下多线程 ...
- 4k高分屏下,chm帮助文档,api文档打开后字体过小的解决
如图所示: 4k分辨率下,chm文件的正文部分的字体过小,这是这些网页可能使用了CSS维持字体dpi, 在普通分辨率下,可以显示正常,但在高分屏下就会显示得过小,这时我们就需要调整显示网页 的显示效果 ...