定時構建腳本創作

這幾天一直試圖搞定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函數,執行是沒有參數的,用()表示函數。

 

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