Makefile

有時候在開發機向測試機部署代碼挺麻煩,搞個自動部署php

include mydev
#Create a file named "mydev"
#Write your dev machine's account&address in "mydev"
#eg:dev="uname@yourmac"
#also you can run this command : echo dev=\"uname@yourmac\" > mydev

#Description : Makefile
#Common conf

DATA_PATH="/home/work/odp/data/app/searchbox/"
RALCONF_PATH="/home/work/odp/conf/ral/services"
DATA_SRC_FILE=baiduboxapp baiduboxpad
RALCONF_SRC_FILE=ralconf/*
# Backup conf
BACKUPDIR=/home/work/backup/data/`date +%Y-%m-%d`/
BACKUPFILE=`date +%H-%M-%S`.data.tar.gz
BACKUPCODE=/home/work/odp/data/app/searchbox/ /home/work/odp/conf/ral/services/

dev :
    @# backup old code
    @echo "[step-1] backup your old code in you dev machine..."
    @ssh $(dev) "mkdir -p $(BACKUPDIR); cd $(BACKUPDIR); tar czPf $(BACKUPFILE) $(BACKUPCODE)"

    @# deloy new code
    @echo "[step-2] deploy your develop data code..."
    @ssh $(dev) "\rm -rf $(DATA_PATH) $(RALCONF_PATH);"
    @ssh $(dev) "mkdir -p $(DATA_PATH) $(RALCONF_PATH);"
    @scp -r $(DATA_SRC_FILE) $(dev):$(DATA_PATH) > /dev/null
    @scp -r $(RALCONF_SRC_FILE) $(dev):$(RALCONF_PATH) > /dev/null
    @ssh $(dev) "cd $(DATA_PATH); find ./ -type d -name .svn | xargs -i rm -rf {};"
    @ssh $(dev) "cd $(RALCONF_PATH); find ./ -type d -name .svn | xargs -i rm -rf {};"

    @echo -e "\e[1;32m[step-3] deploy success...\e[0m"
    
syntax :
    @echo "syntax"

 

#!/bin/bash
#desc 從開發機向測試機同步代碼
#author baijianmin

function __info() {
    echo -e "\e[0;32m---$1---\e[0m"
}


function __warning() {
    echo -e "\e[1;31m---$1---\e[0m"
}

function __checkphp() {
    local filename=$1
    local linenum=1
    __info '---檢測---'
    cat $filename | while read line
    do
        for keyword in ${KEYWORDS[@]}
        do
            if [[ $line =~ $keyword ]];then
                __warning "[ERROR] $filename $linenum 行 發現調試代碼 $keyword"
            fi
        done

        if [[ $line =~ 'private[[:blank:]]+function[[:blank:]]+[^_]' ]];then
            __info "[NOTICE] 私有方法須要以_開頭 $filename $linenum 行 不符合"
        fi
        let linenum++
    done
}

function __checkconf (){
    :
}

if [[ ! -e ./mydev ]]; then
    __warning '缺乏sync配置文件,或者沒有在項目根目錄下執行'
    exit 1
fi

source ./mydev

#防止--delete把app給幹掉
[[ -z $project ]] && __warning 'project is not set!' && exit 1

KEYWORDS=('print_r' 'var_dump' 'var_export' 'file_put_contents' 'echo')
APP_PATH="/home/work/orp/app/${project}"
CONF_PATH="/home/work/orp/conf/app/${project}"
APP_SRC_FILE="actions Bootstrap.php controllers library models plugins"

for file in `svn st`
do
    [[ $file =~ '\.php' ]] && __checkphp $file
    [[ $file =~ '\.conf' ]] &&  __checkconf $file
done

#--delete風險
/usr/bin/rsync -avzP --delete --exclude=.svn $APP_SRC_FILE $dev:$APP_PATH
/usr/bin/rsync -avzP --delete --exclude=.svn ./conf/ $dev:$CONF_PATH
相關文章
相關標籤/搜索
本站公眾號
   歡迎關注本站公眾號,獲取更多信息