“test-jb-setup”
默认情况下好像会自动关联编译,在maven的高级选项里面,有Enable triggering of downstream projects。
把复选框去掉,直接保存无效,需要先应用再保存才可以,比较坑爹
“test-jb-setup”
“test-jb-setup”
知道Jenkins是很久以前的事了,但是一直没有用,也没有特别的机会尝试。最近项目需要才去了解,看了很多文章,直接被吓倒了,看样子老了,这可不行啊。
Jenkins源于敏捷开发一个理念:持续集成。
随着项目复杂度的增加,需要很多人参与项目的开发,而这个时候就需要有一个人去负责整合所有开发的内容,进行总集成,发现其中的问题,反馈给相关人员做修改。而集成如果是失败,也就意味着无法进行后续的测试等工作,所以它的优先级是非常高的。
对于一个持续集成环境而已,应该具备以下几个部分:
一套自动集成的工具 简单的说,需要几个过程。
而Jenkins就是为此而生的
Jenkins把上面提到的几个过程分解出来,通过自动化方式完成。为了提供足够的灵活性,每个步骤都有插件可以扩展。 通过插件,可以支持git,svn等源码管理服务器,通过插件可以使用不同的编译方式。
jenkins本质上是把我们手工做的事情整合起来,调用shell脚本等等,所以它很好的兼顾了易用性和扩展性。
在linux下,更容易理解一点。Jenkins会调用很多脚本来执行任务。我们理解理解成它就是完成一个批处理的过程,所有的UI设定只是为了最后能有这么一个批处理
“test-jb-setup”
希望抓取某个网站的数据,并最终录入到mysql中去。最顺手的就是Delphi了,想想还是尝试一下新东西,想到用python。比较出名的爬虫工具是scrapy,可惜是python 2的,想想既然学了3,还是用3吧。目标是
因为无法用scrapy,另外对python爬虫也不熟悉,就想到暴力解析,直接http请求,然后解析返回的html,插入数据库,然后再请求再解析。 这里的核心问题是3个:
有几个问题:
另外因为数据量不算太小,一共大概5类数据,最大的16W条,最小的也要2W多条。都是表格形式。所以想了2个办法应对
###2.2 本地文本文件
具体页面信息是慢慢爬出来的,通过网页中的列表跳转过去,所以先在本地做了一个索引文件,也就是id文件,最后通过它来拼URL
生成的数据先不放数据库,生成一个本地文件,每条记录按行,每个字段用特殊字符分隔
所以在设计表结构的时候,增加了2个字段页码和数据id号,为将来更新预留
最终方案是基于上面的方法2做的。最关键是找到了python的解析神器,非常非常帅的神器BS4 。整体功能上有如下内容:
遍历所有列表。生成本地文件,格式为
页码:数据id
遍历前面生成的id文件,解析数据
通过Beautiful Soup 4解析表格
解析成功以后把索引文件的中的这部分内容删除
插入mysql利用load file命令
LOAD DATA LOCAL INFILE '文件名' into table 表名;
利用mysql的文件录入命令,需要把字段对齐。不算费劲。
即把字段在表中的相对位置弄成和文件一致
感觉比用Navicat方便,毕竟数据量毕竟大
用Navicat还需要一个个字段去对齐
通过命令导入的时候,如果想要导入NULL。可以把值改成\N。
我是直接用空格代替了……
如果用Navicat去导入数据,如果第一行(可能不对,反正它会选定一行)。某些字段是没有值的,那在对字段的时候就毕竟麻烦。我的做法是把这些值补上,写个字段名也好。大不了导入进去再改
用bs去处理数据的时候,如果一个条件不够,我是另外换个条件遍历了一次,可能有别的好的办法吧。
403错误问题
一直报403错误,开始怀疑是cookie问题,找了很多代码都不行,结果尼玛坑爹是user agent问题
“test-jb-setup” #1、准备工作 考虑到通过scp远程备份,所以需要把本地的key传到远程服务器上。
ssh-keygen -t rsa
一路回车即可。会在/root/.ssh文件夹下生成2个文件id_rsa,id_rsa.pub
将其中的pub文件传到远程服务器的相同文件夹下,改名为 authorized_keys
scp /root/.ssh/id_rsa.pub xxxx@xxxxxx:/home/.ssh/authorized_keys
#2、备份mysql
参考 [mysql 数据库自动备份]: http://www.xuchanggang.cn/archives/640.html
###2.1、建立备份脚本
#vim backup.sh
#!/bin/bash
# 进入mysqldump命令目录
# 设置备份的时间,备份信息存放文件,备份路径,压缩路径,备份的用户,密码,主机,端口,数据库
DD=`date +%y-%m-%d==%H:%M:%S`
LOGFILE=/var/lib/mysql/mysqlbackup.log
backup_dir=/var/lib/mysql/dbbackup/
zip_dir=/var/lib/mysql/zipdir/
dbusername=mysql
dbpassword=mysql
host=127.0.0.1
port=3306
database1=alldb
# 指定生成备份的文件名,压缩后的文件名
DumpFile="$database1"$(date +%y%m%d).dump
NewFile="$database1"$(date +%y%m%d).tgz
# 查看备份的目录是否存在,不存在建立,并修改为mysql权限,并将相应输出信息写入日志文件
echo "check directory..." >> $LOGFILE
if [ ! -d $backup_dir ] ;then
mkdir -p $backup_dir
chown mysql:mysql $backup_dir
fi
echo $DD " backup start..." >> $LOGFILE
echo $DD >>$LOGFILE
echo "backup "$database1" ..." >> $LOGFILE
# 备份数据库,
# --all-databases表示所有数据库
# 否则用 --databases db1 db2
mysqldump -h$host -P$port -u$dbusername -p$dbpassword --all-databases > $backup_dir$DumpFile
# 进入数据备份目录,压缩备份的文件,压缩完后删除dump文件
cd $backup_dir
tar czvf $NewFile $DumpFile >> $LOGFILE 2>&1
rm -rf $DumpFile
# 判断压缩存放目录是否存在,不存在,建立,修改权限,并将压缩过的备份文件移送到压缩目录
echo "moving zipfiles ..." >> $LOGFILE
cd $backup_dir
if [ ! -d $zip_dir ] ;then
mkdir -p $zip_dir
chown mysql:mysql $zip_dir
fi
mv *.tgz $zip_dir
# 备份到远程服务器
echo "copy to remote server" >> $LOGFILE
scp $zip_dir$NewFile root@xxxx:/home/backup/
echo "scp complete.." >> $LOGFILE
#remove before 7 days
echo "remove before 7 days..." >> $LOGFILE
find $zip_dir -type f -mtime +7 -exec rm -f {} \;
echo "backup over" >> $LOGFILE
###2.2、建立定时任务
crontab -e
添加下面这行 0 3 * * * ./tmp/backup.sh