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. 达拉草201771010105《面向对象程序设计(java)》第十二周学习总结

    达拉草201771010105<面向对象程序设计(java)>第十二周学习总结 第一部分:理论知识 Java的抽象窗口工具箱(AbstractWindow Toolkit,AWT)包含在j ...

  2. .Net Core中使用ExceptionFilter

    .Net Core中有各种Filter,分别是AuthorizationFilter.ResourceFilter.ExceptionFilter.ActionFilter.ResultFilter. ...

  3. 使用SpringMVC实现文件上传和下载

    文件上传 第一步,加入jar包: commons-fileupload-1.3.1.jar commons-io-2.4.jar 第二步,在SpringMVC配置文件中配置CommonsMultipa ...

  4. bp(net core)+easyui+efcore实现仓储管理系统——入库管理之三存储过程(三十九)

    abp(net core)+easyui+efcore实现仓储管理系统目录 abp(net core)+easyui+efcore实现仓储管理系统——ABP总体介绍(一) abp(net core)+ ...

  5. Nginx + uWSGI部署中的一些小坑

    1.invalid host in upstream报错 重新启动nginx : sudo /etc/init.d/nginx restart 原因是在配置负载均衡nginx.conf配置文件时,发现 ...

  6. javascript的constructor属性介绍

    之前闲来了解了__proto__和prototype的区别,每个对象都有隐私属性__proto__,而prototype是javascript函数特有的属性.那么constructor属性呢?最近是遇 ...

  7. 03 Hibernate入门

    Hibernate 说明 由于JPA是sun公司制定的API规范,所以我们不需要导入额外的JPA相关的jar包,只需要导入JPA的提供商的jar包.我们选择Hibernate作为JPA的提供商,所以需 ...

  8. MyBatis-Plus不写任何resultMap和SQL执行一对一、一对多、多对多关联查询

    对于一对一,一对多的关联查询,Mybatis-Plus官方示例(mybatis-plus-sample-resultmap)在处理时,需要编写查询方法及配置resultMap,并且写SQL. 为了简化 ...

  9. web安全测试--环境搭建

    本博客主要作为作者的学习笔记,请勿装载. 作为一个安全测试的入门选手,一切操作在虚拟机中进行是最保险的. 第一先下载自己喜欢的虚拟机,我的笔记本用的VirtualBox(下载地址:https://ww ...

  10. ajax参数contentType与数据提交方式

    使用bootstrapTable时,服务器端无法获取参数(flask,request.form.get方法),检查发现是因为ajax提交的时候,方式是payload,要想用form提交,需要设置con ...