AutoMaticDeployment---自动部署

项目简介

使用Github的webhooks进行代码的自动化部署

本项目是个人最近搞的一个小工具,自己最近在用hexo部署个人博客(地址:http://www.gongsir.club/blog
部署完成之后,ui感觉还不错,于是自己就写了几篇文章发布上去,但是就遇到一个问题:
我每次写完博客,然后hexo g -d之后,代码会自动提交到github上面(https://github.com/gongsir0630/blog.git
这时,通过 https://gongsir0630.github.io/blog 自然可以访问到,但是因为速度慢,我将网站部署在自己
的服务器上,使用nginx部署静态项目,这就意味着我每次需要去服务器重新从github拉取最新代码,以此更
新网站。那这样太繁琐了,我不想每次都去手动更新代码,于是借助github(gitee也提供了)的webhooks,
搭建了一个自动部署:
webhooks可以在每次收到push之后向一个指定的url发送一个post请求,此项目正是基于此产生的,通过post
请求触发服务器执行一个脚本(或者执行linux命令),自动从github拉取代码,并更新nginx,这样就可以实
现网站自动更新。

技术栈

  • Java编程
  • SpringBoot

使用说明

项目地址:https://gitee.com/gongsir0630/AutomaticDeployment

1、克隆代码到本地或者服务器,修改端口号,编译打包:
编辑src/main/resources下的application.properties文件,修改端口号,然后使用maven命令编译打包

1mvn clean install -Dmaven.test.skip=true

2、后台运行项目:

1nohup java -jar AutomaticDeployment.jar > AutomaticDeployment.out 2>&1 &

3、访问http://{your_website}:{port}/hello,显示“hello”表示部署成功

4、配置webhooks(以github为例):
在项目的settings页面,点击左侧webhook选项,点击new新建webhooks,填写url,并在url拼接需要执行
的shell脚本的位置:


mark

配置url:http://{your_website}:{port}/linux/exec?cmd={cmd}&secret={secret}

参数说明:

其中cmd表示需要执行的shell脚本的位置:/root/xxx/update.sh:

 1echo "========== 开始执行home.sh脚本 =========="
2echo "进入blog所在目录"
3cd /usr/local/nginx/html/blog
4## 拉取最新代码
5echo "从github拉取最新代码"
6git pull
7## 重启nginx
8echo "重启nginx"
9../../sbin/nginx -s reload
10## 打印提示语句
11echo "========== 网站更新完成 =========="

secret表示自定义密码,这里需要和代码一致(默认:gongsir0630),以此验证用户身份,
如需修改,请编辑src/main/java/club.gongsir.linux.controller.DemoController中exec方法的secret字符串:


mark

5、保存webhooks配置即可,这样当仓库的代码更新之后,就会自动发post请求以触发shell脚本的执行。

6、执行成功返回:


mark

后期更新

使用github的secret签名完成用户身份验证

联系我

个人主页(含联系方式):http://www.gongsir.club

使用webhooks进行代码的自动化部署的更多相关文章

  1. 使用 GitHub / GitLab 的 Webhooks 进行网站自动化部署

    老早就想写这个话题了,今天正好有机会研究了一下 git 的自动化部署.最终做到的效果就是,每当有新的 commit push 到 master 分支的时候,就自动在测试/生产服务器上进行 git pu ...

  2. 持续集成+自动化部署[代码流水线管理及Jenkins和gitlab集成]

    转载:https://www.abcdocker.com/abcdocker/2065 一.代码流水线管理 Pipeline名词顾名思义就是流水线的意思,因为公司可能会有很多项目.如果使用jenkin ...

  3. Gitlab配置webhooks实现自动化部署

    Gitlab 自动化部署 原理介绍 配置gitlab当push动作的时候,访问服务器上的一个链接比如www.shenke.group/hook.php hook.php里面写着一行代码,会让服务器gi ...

  4. 持续集成与自动化部署---代码流水线管理及Jenkins和gitlab集成

    1.代码流水线管理 Pipeline名词顾名思义就是流水线的意思,因为公司可能会有很多项目.如果使用jenkins构建完成后,开发构建项目需要一项一项点击,比较麻烦.所以出现pipeline名词. 代 ...

  5. 通过shell脚本实现代码自动化部署

    通过shell脚本实现代码自动化部署 一.传统部署方式及优缺点 1.传统部署方式 (1)纯手工scp (2)纯手工登录git pull.svn update (3)纯手工xftp往上拉 (4)开发给打 ...

  6. 持续集成之⑤:jenkins结合脚本实现代码自动化部署及一键回滚至上一版本

    持续集成之⑤:jenkins结合脚本实现代码自动化部署及一键回滚至上一版本 一:本文通过jenkins调用shell脚本的的方式完成从Git服务器获取代码.打包.部署到web服务器.将web服务器从负 ...

  7. AWS DevOps – 配合Jenkins和CodeDeploy实现代码自动化部署

    AWS DevOps – 配合Jenkins和CodeDeploy实现代码自动化部署 Amazon ElastiCache 连接至 Redis 节点 通过 AWS Command Line Inter ...

  8. Jenkins自动化部署代码

    通过jenkins自动化部署项目代码可以大幅度节省打包上传部署的时间,提高开发测试的工作效率 ========== 完美的分割线 =========== 1.Jenkins是什么 1)Jenkins是 ...

  9. jenkins结合脚本实现代码自动化部署及一键回滚至上一版本

    持续集成之⑤:jenkins结合脚本实现代码自动化部署及一键回滚至上一版本 一:本文通过jenkins调用shell脚本的的方式完成从Git服务器获取代码.打包.部署到web服务器.将web服务器从负 ...

随机推荐

  1. CSS——NO.6(盒模型)

    */ * Copyright (c) 2016,烟台大学计算机与控制工程学院 * All rights reserved. * 文件名:text.cpp * 作者:常轩 * 微信公众号:Worldhe ...

  2. C++扬帆远航——19(斐波那契数列第20项)

    */ * Copyright (c) 2016,烟台大学计算机与控制工程学院 * All rights reserved. * 文件名:fib.cpp * 作者:常轩 * 微信公众号:Worldhel ...

  3. PostgreSQL没有认证密码就登陆了缘由

    上午同事爆出这样的问题,使用正确的用户名和错误的密码连接了postgresql数据库,竟然连上了.这不是故意这样神操作,不小心密码写错了,咋一看这样怎么能行,随便输入一个密码都能登陆上.自己测试也是同 ...

  4. JMeter-WebService接口的测试

    前言 JMeter3.2版本之后就没有SOAP/XML-RPC Request插件了,那么该如何进行webservice接口的测试呢? 今天我们来一起学习一下怎么在3.2以后版本的JMeter进行we ...

  5. safari坑之 video

    博客地址: https://www.seyana.life/post/19 本来是打算给博客左上角的gif做个优化, 把gif换成webm,以video的形式自动播放,能从180k降到50k, 现在浏 ...

  6. flask修改flask_wtf使其支持json数据的validation验证

    flask默认是前后端不分离策略,前端通过flask+wtf表单来传递post,put...等数据. 现在前后端分离是趋势,那么对flask进行一定的修改,变为前后端分离,在前端页面中请求后端,那么请 ...

  7. zabbix图表出现中文乱码

    搭建完成Zabbix监控服务器之后,切换到中文语言,图表展示出现乱码,如图所示 按照网上流传的上传windows下的字体的方法,还是不行,最后发现是PHP编译时的问题: php在编译时开启了-enab ...

  8. Redis05——Redis Cluster 如何实现分布式集群

    前面一片文章,我们已经说了Redis的主从集群及其哨兵模式.本文将继续介绍Redis的分布式集群. 在高并发场景下,单个Redis实例往往不能满足业务需求.单个Redis数据量过大会导致RDB文件过大 ...

  9. Redis04——五分钟明白Redis的哨兵模式

    和所有的数据库一样,Redis也支持集群化,Redis的集群分为分布式集群和主从集群.大部分公司采取的都是主从集群.所以在本篇文章内,我们将着重介绍Redis的主从集群及哨兵机制. 由于Redis的主 ...

  10. Vue2.0 【第二季】第3节 Vue.set全局操作

    目录 Vue2.0 [第二季]第3节 Vue.set全局操作 第3节:Vue.set全局操作 一.引用构造器外部数据 二.在外部改变数据的三种方法: 三.为什么要有Vue.set的存在? Vue2.0 ...