最终 想到这样子下去也不是办法,会造成工作很被动,于是开始着手建立以Web操作方式,结合git,rsync来实现自动代码发布。 以上是整体的流程,现在来说详细说下具体的逻辑实现: 1、开发人员提交代码更新,主要提交的字段包括“更新理由”,“svn代码路径”; 2、后端收到请求后,把此数据插入到数据库,标记此更新单为“等待预发布环境更新 下面是回滚流程: 1、进入web代码发布系统,选择已发布的版本,点击“申请回滚”; 2、负责人审核此次回滚; 3、开发人员执行回滚操作; 4、后台查询“等待回滚”的记录,假如回滚的版本号为18,进入已发布代码的目录 ,这样就实现了版本的回滚。 枯燥是因为没有意识或者懒得把重复的操作通过制定流程来使其自动化,在不断地把各种在运维工 作中占用时间比较多的重复操作通过技术来使得自动化时,我们既高效完成了工作,节省了时间,又能提高编程和解决问题的能力
2、IDEA集成 通过IDEA集成Sonar,实现开发过程中就可以自动检测代码中存在的安全问题。 (2)基本使用 在IDEA中安装SonarLint插件,实现自动检测项目文件分析或者对整个项目进行分析。 ? 3、Gitlab集成 通过Gitlab集成Sonar,就可以实现提交代码后自动邮件反馈扫描结果。 (1)在项目根目录编写.gitlab-ci.yml文件,通过GitLab-Runner实现Gitlab与Sonarqube集成。 ? (2)当提交代码的时候,自动检测代码并发送报告给提交者。 ? 4、Jenkins集成 通过Jenkins集成Sonar,就可以实现在流水线做自动化持续代码扫描。 (1)在Jenkins中,使用Pipeline流水线,拉取代码、执行打包、代码扫描。 ?
这是代码 g = function () { H = 3 return H + H } f = function () { Η = 2 return Η + H } // 3 + 3 = 6 alert(g()) // 2 + 2 = 5 alert(f()) 演示地址:http://jsfiddle.net/qhRJY/light/ 当第二个方法运行的时候 我想到了一个非常easy的方式来给大家演示 csdn 的 code代码片 于是就这样了 g = function () { H = 3 return H + H } f = function () { Η = 2 return Η + H } // 3 + 3 = 6 alert(g()) // 2 + 2 = 5 alert(f()) 看到了吧。
有时候,我感到疲倦,因为,我每修改一处代码,想要看到改动是否生效的时候,我要先 Ctrl C 或 Kill 进程,然后重新运行,才能看到结果,改的次数多了,不仅浪费时间,降低效率,还浪费体力。 相信你已经猜到了,就是文件有修改时,trigger_reload 函数让 Django 进程返回了 3,通过循环,实现重新启动的效果。 2、autoreload 为我所用 好在 django.utils.autoreload 和 django 其他模块是松耦合的,不需要修改代码即可可以直接移植到其他项目使用。 两行代码就可以实现,我这里做了个 demo: demo 目录树如下: (py37env) ➜ test tree . ├── autoreload.py ├── test.py └── test2.py test2.main44 视频展示:https://b23.tv/MAqqLK(点击阅读原文观看) 源代码我放在了公众号后台,如果不想动手找 Django 源码 autoreload ,可以直接回复关键词
因为项目组已有现成的组件可以轻松实现 sftp 服务器文件的快速上传,本来是一件很容易的事情,但是问题出现在这个指定的 sftp 服务器所指定的密码带有系统关键字和一些特殊字符,导致现在的组件在解析过程中会失败 2. 代码实现 Python代码 #test_upload.py import os, sys import yaml from optparse import OptionParser import paramiko (2). 形参:--node,实参:node 所代表的业务含义是:指定要上传的 sftp 的节点,具体参数值对应 sftp配置文件代码中的 test_file_upload 2).
最近一直在研究自动化漏洞发现的技术,github 也有非常多优秀的集成工具,本着学习研究的心态,对这些工具进行了学习,今天来分享其中的一个,通过 bash 脚本将各种工具集成到一起,实现无需自己实现相关功能也能自动化漏洞发现 项目地址: https://github.com/six2dez/reconftw reconFTW 是一款优秀的信息收集工具,可以尽可能的收集子域名以及各种漏洞的检查,说的这么溜,到底是如何实现的? grep 能做非常多的事儿,但是由于参数复杂,每次使用可能都要去查询怎么用,如何组合参数,而这个工具就是为了能够在其他工具输出结果之后,通过这个工具来对结果进行整理,从而输出不同工具所需的参数内容,实现不同工具之间的数据共享来实现自动化的流程 上发现子域名) 项目地址: https://github.com/gwen001/github-subdomains github 是程序员的聚集地,程序员的共享精神是一直存在的,他们也会时不时把自己在企业写的代码分享出去 ,从而给了我们一个信息收集的途径,那么这个工具就是通过 github 的代码搜索功能来实现子域名的收集。
自动化-搭建Jenkins实现Pytest代码自动部署 本文主要讲述如何通过Docker或直接在Windows上安装Jenkins,如何使用Jenkins自动部署测试代码 前言 自动化测试代码最大的作用就是进行回归测试 ,监控软件产品的运行状况.而Jenkins可以实现自动化代码的自动部署,不用每一次都用人工触发.根据目前的测试需求,我们希望通过Jenkins达到: 每天定时运行,监控线上环境 集成Allure报告,测试结束后起一个 allure服务,返回测试报告链接 使用邮件通知测试结果 需求明确了,实现方法上,Docker及windows版本的Jenkins我会分别安装1次 需要特意提及的是,你在使用此教程之前,应该提前将自己的测试代码发布到了 报告存放地址(根目录相对路径) 设置邮件通知 邮件通知具体参照博客: jenkins配置邮件发送 - 张小七soso - 博客园 (cnblogs.com) 值得补充的是: 163邮箱有非ssl和ssl2种端口 PHP 代码自动化部署 | PHP 技术论坛 (learnku.com) (63条消息) Jenkins构建项目_florachy的博客-CSDN博客 [Jenkins集成allure测试报告 - linux
? ? ? ? ? ? ? ? ? ?
需求背景 自己搭建的博客,代码托管到github,心想博客更新那么频繁,每次push代码后都到服务器上手动部署,实在是太麻烦, 于是想到自动化部署,开始的时候只是想通过一个简单的 shell +cron 操作; 触发VPS上部署的脚本,代码到指定位置wwwroot。 代码发布脚本 #! "$t2 Error!" 测试 通过上面的配置,及完成了自动化部署的所有操作,此时可以通过向仓库中push代码来进行测试。 ? 开启Active后每次推送都会有详细日志,如果推送失败,根据日志调试即可。
紧接着上文说起,咱们这次来完成基于jenkins的自动化部署,也就是当有新的代码推送就会触发自动构建。 上一节我们已经实现了手动部署,大部分基础配置都已完成,不了解的可以先回顾下。。。。 基于jenkins实现手动拉取码云代码,实现半自动化部署 要实现自动化部署,其实这部分操作非常简单,只需要配置好构建触发器以及触发的事件即可。 本文要达到的具体目标:使用jenkins实现自动化部署 ps:我的服务器:CentOs8 Linux 计划了几个想要达到的目标 在自己的机器上跑起来 done 使用jenkins将码云上的git仓库拉到服务器 done 将代码拉到服务器后,可以手动触发构建、部署 done 完成自动化部署 done 开发一个自己的插件,具体做啥还没想好 待定... 目前支持触发事件有: Push Events :推送代码事件 Opened Merge Request Events :提交 PR 事件 Updated Merge Request Events :更新
引用表的各部分的VBA代码 理解Excel的文档对象模型是读写VBA代码的关键。掌握了这一点,编写VBA代码的能力就会高得多。 选取整个表 下面的代码选择整个表,包括标题行和汇总行。 2行第4列的值。 Sub GetValueFromTable() MsgBox ActiveSheet.ListObjects("myTable").DataBodyRange(2, 4).Value End Sub 选取整列 下面的代码展示通过位置或名字选取列。 Sub SelectAnEntireColumn() '基于位置选取列 ActiveSheet.ListObjects("myTable").ListColumns(2).Range.Select
前言 本文介绍了笔者通过一个简单的方法利用Cobra工具来实现自动化代码审计的经验,以及对Cobra工具代码的一些定制改动。 这样的弊端一是源码传输方式不可控,二是手动执行审计任务太繁琐,所以开始寻找实现自动化审计的方法。因为公司预算吃(mei)紧(qian),只能从开源工具上入手。 三、实现方法 我通过一个简单的python脚本实现了以上的需求,这里把这个脚本称作调度脚本吧,整个自动化项目的结构和逻辑如下: ? 4.code2svn():将步骤3中输出的报告上传到SVN服务器。 通过这个调度脚本,原先的上线审计流程就完全实现自动化了,我只需要在收到审计报告后查看一下结果,自动化后流程图如下: ? 5.总结 本文分享了笔者是如(gong)何(si)低(mei)成(you)本(qian)利用一个简单python调度脚本搭建基于Cobra的自动化代码审计平台的经验,感谢Cobra团队。
前提 1: 搭建jenkins线上服务, 参考Linux环境下安装Jenkins 2:注册gitee账号,并创建一个项目,这里我的项目名是 lvsige-demo(下面简称demo) 过程 1:服务器放置项目位置克隆 Gitee上demo项目 git clone Gitee上demo项目链接 #我项目位置 /www/wwwroot/test 2:检查jenkins配置配置文件,将执行用户改成root,不然后面可能出现执行 然后刷新,就已经是最新代码了。 我觉得这个文章已经很详细了,因为我在这个jenkins自动化部署上已经消磨了一整天了。 希望大家可以避坑! 今天shell里执行的是一个简单的html文件。 回头需要自动化部署vue, 应该会有点麻烦, 我还没有看, 后续继续更新! ---- 时隔一夜,我来更新了, 自动化部署vue项目的步骤。
贪吃蛇的具体实现 首先,我们要让整个程序适应本地化 int main() { //修改适配本地中文环境 setlocale(LC_ALL, ""); return 0; } 蛇身节点的创建 // y = rand() % 24 + 1; } while (x % 2 ! VK_SPACE) || KEY_PRESS(VK_F3) || KEY_PRESS(VK_F4)) { ;//消除之前 按任意键继续 的影响,比如我按了空格然后进入了游戏,这里不检测,那么下面的代码会检测到我按过空格 (Y/N):"); ch = getchar(); getchar();//清理\n } while ('Y' == ch || 'y' == ch); } 完整代码: //snake.h VK_SPACE) || KEY_PRESS(VK_F3) || KEY_PRESS(VK_F4)) { ;//消除之前 按任意键继续 的影响,比如我按了空格然后进入了游戏,这里不检测,那么下面的代码会检测到我按过空格
一、背景 在甲方做安全的同学可能会有一项代码审计的工作,通常需要从gitlab把代码拉取下来,然后使用代码审计工具进行扫描,然后对结果进行人工确认; 在这个流程中需要做的事情比较繁琐,比如说gitlab 如何配置token、如何自动化把代码拉取到本地、如何调用fortify实现批量扫描等诸多繁琐问题。 本篇文章以甲方安全代码安全建设为主线,分享如何让代码审计工具自动化扫描gitlab仓库里的代码。并且提供了一个便捷的实验环境供大家测试。 目录),完成试验后可以看到各代码审计工具的效果对比。 ,填下相关参数,界面如下所示 创建完成,把生成的token复制出来,后续要用到 glpat-ggjo6Z6aQXWCZ2FNJcsz gitlab搭建完后,默认里面有一个空项目,fortify无法扫除有价值的漏洞
前提 1: 搭建jenkins线上服务, 参考Linux环境下安装Jenkins 2:注册gitee账号,并创建一个项目,这里我的项目名是 lvsige-demo(下面简称demo) 过程 1:服务器放置项目位置克隆 Gitee上demo项目 git clone Gitee上demo项目链接 #我项目位置 /www/wwwroot/test 2:检查jenkins配置配置文件,将执行用户改成root,不然后面可能出现执行 下面是我遇到的问题 image-0d33f2bc0b124bebbc8ecbd847504fbf.png 报错是这样的, 说明没有用户名密码,解决办法 image.png 解决方案 执行 git 然后刷新,就已经是最新代码了。 我觉得这个文章已经很详细了,因为我在这个jenkins自动化部署上已经消磨了一整天了。 希望大家可以避坑! 今天shell里执行的是一个简单的html文件。 回头需要自动化部署vue, 应该会有点麻烦, 我还没有看, 后续继续更新! ---- 时隔一夜,我来更新了, 自动化部署vue项目的步骤。
// ... } 下图可以看到,我们的 input 已经绑定上 data 中的数据,而且当data中的数据发生变化时也能实时更新,但是在输入框输入值时,data中的数据便没有进行一个更新,接下来我们实现一下它就大功告成了 要实现 input 值的改变去改变data中的值,就需要监听 input 输入并获取输入的值,可以使用 addEventListener('事件名',处理函数(event),false/true(冒泡/ 但是这里是设置而不是取值,所以需要留出最后一级属性进行赋值 const arr1 = attr.nodeValue.split("."); const arr2 = arr1.slice(0, arr1.length - 1); const prefix = arr2.reduce( (prev, current
以前别人说会selenium就是会自动化。好像很高大上的样子。现在会selenium估计是基本的。大家都忙着内卷,各种轮子越来越多,自动化的门槛也越来越低。 我们聊到自动化,一般会聊到自动化的测试框架。 最近,微软开源了一个项目叫「playwright-python」这个项目是针对Python语言的纯自动化工具,连代码都不用写,就能实现自动化功能。对于小白来说,只要操作一遍,简单看懂代码,就完事了。 ,我们只需手动操作浏览器,它会录制我们的操作,然后自动生成代码脚本。 show this again\"]") # Click text=Yes # with page.expect_navigation(url="https://qadeepblue2.
由于项目需要,写了版针对业务的自动化测试代码,主要应用场景在于由于业务日趋复杂,一些公共代码的改动,担心会影响已有业务。还没进行重写,但知识点还是不少的与大家分享实践下。 那么下面对整个自动化测试的流程进行说明: 一、导入前台活动 由于是自动化测试,我们不可能每次都手工上下线,或在页面配置启用某个活动,所以通过直接调用前台系统 导入功能 的方法,将活动配置写入mysql
=selector 例子:page.click('div') 可转换为 page.click('css=div') 链式选择器 选择器可以与>>组合使用,例如selector1 >> selector2 弹框: 我最开始遇到就是这个拦路虎,虽然录制时有代码,但是运行的时候总是不通过。 文档这句话提醒了我. or decline it. page.on("dialog", lambda dialog: dialog.accept()) page.click("button") 我在录制的基础上,然后又加了代码点击了一下