整套解决方案:自动化代码发布系统实现

优采云 发布时间: 2022-09-24 04:29

  整套解决方案:自动化代码发布系统实现

  日常运维问题

  在我日常的运维工作中,代码发布可能是最常见的任务之一,尤其是网页代码的更新,碎片化发布的需求非常频繁。前期开发人员少的时候,也可以自己通过脚本将代码发布到服务器上。但随着公司项目的增多,更多的开发者加入公司,代码发布的需求也开始增加,占据了我大部分时间。我经常被其他工作打断以发布代码。我很沮丧,然后我开始思考解决方案。

  尝试解决问题

  当然,发布代码肯定是运维的职责之一,但是频繁的发布导致运维把大部分时间浪费在重复操作上,不值得。基于此,我们开始限制代码发布的频率,要求不太紧急的更新推迟到一周内的几个点。但实施起来并不理想,也不是治标不治本的方法,因为您不能强迫需要立即上线的更改被延迟。实施这样的定时发布可能会影响项目的快速迭代。

  

  最后

  想着这样不行,会导致工作很被动,于是开始建立Web操作方法,结合git、rsync实现代码自动发布。公司的代码管理目前使用的是svn,开发者没有发布前打标签的习惯,所以想到了分布式git来完成版本管理,rsync当然是用来同步代码到其他服务器的。附上几张代码发布系统截图:

  使用代码发布过程的开源技术

  从流程图可以看出,我们只需要给开发组负责人审核和发布的权限,运维只需要维护系统的稳定性,然后代码发布不需要运维参与。

  

  以上是整体流程。现在来详细说一下具体的逻辑实现:

  以下是回滚过程:

  最后想说的话

  最后我想说的是,运维工作可能很无聊,也可能很有趣。这很无聊,因为我们没有意识到或懒得通过制定流程来自动化重复操作。当我们通过技术不断地自动化各种在运维工作中占用大量时间的重复性操作时,我们就高效地完成了工作。,节省时间,并提高编程和解决问题的能力,因此我们可以使操作变得有趣和具有挑战性。

  解决方案:[精选] 模拟登陆并抓取数据,用php也是可以做到的

  点击加入:

  商务合作请加微信(QQ):2230304070

  精选文章文字

  服务器活动推荐:【腾讯云服务器12月限时秒杀活动,最低99元】活动地址:

  使用PHP的Curl扩展库可以模拟登录,捕获一些只有在用户账号登录后才能查看的数据。具体实现过程如下

  1.首先需要分析对应登录页面的html源码,获取一些必要的信息:

  1)登录页面的地址;

  

  2)验证码地址;

  3)登录表单中需要提交的各个字段的名称和提交方式;

  4)登录表单提交地址;

  5)另外,你需要知道要抓取的数据的地址。

  2. 获取 cookie 并存储(对于 网站 使用 cookie 文件)

  $login_url = 'http://www.xxxxx';  //登录页面地址<br />$cookie_file = dirname(__FILE__)."/pic.cookie";  //cookie文件存放位置(自定义)<br />$ch = curl_init();<br />curl_setopt($ch, CURLOPT_URL, $login_url);<br />curl_setopt($ch, CURLOPT_HEADER, 0);<br />curl_setopt($ch, CURLOPT_RETURNTRANSFER,1);<br />curl_setopt($ch, CURLOPT_COOKIEJAR, $cookie_file);<br />curl_exec($ch);<br />curl_close($ch);<br />

  3.获取验证码并存储(供网站使用验证码)

  $verify_url = "http://www.xxxx";   //验证码地址<br />$ch = curl_init();<br />curl_setopt($ch, CURLOPT_URL, $verify_url);<br />curl_setopt($ch, CURLOPT_COOKIEFILE, $cookie_file);<br />curl_setopt($ch, CURLOPT_HEADER, 0);<br />curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);<br />$verify_img = curl_exec($ch);<br />curl_close($ch);<br />$fp = fopen("./verify/verifyCode.png",'w');  //把抓取到的图片文件写入本地图片文件保存<br />fwrite($fp, $verify_img);<br />fclose($fp);<br />

  

  说明:

  由于无法实现对验证码的识别,所以我这里的做法是把验证码图片抓拍到本地文件中,然后在我的项目中的html页面显示,让用户填写出来,等待用户填写完整的账号、密码和验证码,点击提交按钮,再进行下一步。

  4. 模拟提交登录表单:

  $ post_url = 'http://www.xxxx';   //登录表单提交地址<br />$post = "username=$account&password=$password&seccodeverify=$verifyCode";//表单提交的数据(根据表单字段名和用户输入决定)<br />$ch = curl_init();<br />curl_setopt($ch, CURLOPT_URL, $ post_url);<br />curl_setopt($ch, CURLOPT_HEADER, false);<br />curl_setopt($ch, CURLOPT_RETURNTRANSFER,1);<br />curl_setopt($ch, CURLOPT_POSTFIELDS, $post);     //提交方式为post<br />curl_setopt($ch, CURLOPT_COOKIEFILE, $cookie_file);<br />curl_exec($ch);<br />curl_close($ch);<br />

  5. 获取数据:

  $data_url = "http://www.xxxx";   //数据所在地址<br />$ch = curl_init();<br />curl_setopt($ch, CURLOPT_URL, $data_url);<br />curl_setopt($ch, CURLOPT_HEADER, false);<br />curl_setopt($ch, CURLOPT_HEADER, 0);<br />curl_setopt($ch, CURLOPT_RETURNTRANSFER,0);<br />curl_setopt($ch, CURLOPT_COOKIEFILE, $cookie_file);<br />$data = curl_exec($ch);<br />curl_close($ch);<br />

  至此,数据所在的页面已经被捕获并存储在字符串变量$data中。

  需要注意的是,抓取的是一个网页的html源代码,也就是说这个字符串中不仅收录了你想要的数据,还收录了很多html标签和其他你不想要的东西。所以如果要从中提取出你需要的数据,还需要分析存放数据的页面的html代码,然后结合字符串操作函数、正则匹配等方法,提取出你想要的数据。

0 个评论

要回复文章请先登录注册


官方客服QQ群

微信人工客服

QQ人工客服


线