有時候在開發機向測試機部署代碼挺麻煩,搞個自動部署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