定时构建脚本创作

这几天一直试图搞定Jenkins,最后发现Jenkins最后还是要执行Shell语句。笔者想了想,还不如自己制作一个Shell脚本简单。

需要构建的工程为QT工程,因此,自己制作的脚本应该有以下几个目的:

1)对QT工程进行构建;

2)可以把构建过程的日志进行输出;

3)保证按周期获得最新版本;

4)记录程序运行的日期;

5)定时执行。

QT的构建,本身就是qmake 和 make 的结合,这个可以参照QT工程本身来完成;其实现过程,说白了就是把QT的pro文件读取成Make file,再执行make。

更新最新代码比较简单,git工具强制覆盖最新代码即可。

然后,日志写入操作,并让定时执行。

提供了两个shell脚本,build.sh 和  run.sh。

build.sh如下所示:

#!/bin/bash

QMAKE=QT安装目录/gcc_64/bin/qmake
MAKE=/usr/bin/make(make安装目录)
GIT=/usr/bin/git(git安装目录)
BRANCH=origin/master(主分支,也可以是其他分支)
PRO_FILE=X.prp(QT工程文件)
PROJECT_PATH=工程下载路径
MAKEFILE_FROMAT=linux-g++(Linux格式,也可以为其他格式)
DES_PATH=编译路径



cd $PROJECT_PATH
$GIT fetch --all
$GIT reset --hard origin/master
$GIT pull
cd $DES_PATH
# make clean
$MAKE clean 
# 生成Makefile
$QMAKE  $PROJECT_PATH/$PRO_FILE -spec $MAKEFILE_FROMAT 
#make运行
$MAKE

run.sh 如下所示:

#!/bin/bash

MAKE_FILE=生成的makeshell文件路径/make.sh
MAKE_LOG=日志路径/makeLog.log

#PIPE方式
log_pipe() {
    while read line; do
        echo [$(date +%Y-%m-%d\ %H:%M:%S)] "$line"
    done
}

# 保证运行不受打扰
exec nohup sh $MAKE_FILE | log_pipe > $MAKE_LOG 2 >> $MAKE_LOG &

然后,用超级用户vim /etc/crontab,可见crontab上的说明:

# m h dom mon dow user  command

也就是上面分别是定时任务的分、时、一个月的日期,月份,星期,用户和命令,我的样例如下

0 14 * * * (用户) run文件的路径/run.sh

保证文件每天下午2点执行。

任务完成。

也说明下,shell文件里的shell函数,执行是没有参数的,用()表示函数。

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章