PHP JENKINS 設定紀錄

原始碼管理

Repository URL

這裡是填入Repository URL 的地方 這裡的設定用http

Credentials

因為用的是http,所以輸入git 帳號密碼

Branches to build

*/master

如果是別的branch 就寫branch名稱 當然 這個branch是在線上的 不是你本地端的

建置環境

Delete workspace before build starts

建置bash

#遠端主機 ,你可以設定多個 這個是單主機設定
HOST="{your_host_ip}"
#多主機 中間空白
HOST="{ip1} {ip2} {ip3}" 

#PHP 安裝 composer
#主機要先裝好composer
COMPOSER=/usr/local/sbin/composer
COMPOSERINSTALL=".composer.sh"

#遠端主機 的HTM資料來 設定擁有者 這裡設計上是讓nginx掌管php目錄
HTM=/var/html/blog
HTMOWNER="nginx:nginx"
 

#遠端主機 的 SSH 登入設定
RUSER="{user}"

# SSH 連線參數
#登入遠端主機要用的key,這裡的位址是指jenkins的位置
OPT="-i ~/.ssh/key.pem"
OPT="$OPT -o StrictHostKeyChecking=no"
OPT="$OPT -o UserKnownHostsFile=/dev/null"
OPT="$OPT -o LogLevel=ERROR"
OPT="$OPT -o ConnectTimeout=20"

SCP="scp $OPT -r -p "

SRC=$WORKSPACE

FAILHOST=""
FAILTOTAL=0
TOTAL=0
for IP in $HOST
do
    TOTAL=$((TOTAL+1))
done

IPSEQ=0
# 上傳到 遠端主機
for IP in $HOST
  
do
	IPSEQ=$(($IPSEQ+1))
    echo "Update Server : $IP ($IPSEQ/$TOTAL/$FAILTOTAL)"
	SSH="ssh $OPT $RUSER@$IP "
	SCP="scp $OPT -r -p "
    RSYNC="rsync -a"
    # 測試連線
    if ! $SSH /bin/true; then
        echo "Update Fail $IP"
        FAILHOST="$FAILHOST $IP"
        FAILTOTAL=$((FAILTOTAL+1))
        continue 
    fi
    
    # 先建資料夾
    $SSH sudo mkdir -p $HTM
    sleep 1
	# 複製 HTM
    $RSYNC --chown=$HTMOWNER -e "ssh $OPT" $SRC/ $RUSER@$IP:$HTM/
    sleep 1
    # 更換設定檔
   #把正式的.env檔設定上去 這裡設定檔叫做.prod
    $RSYNC --chown=$HTMOWNER -e "ssh $OPT" $SRC/.prod $RUSER@$IP:$HTM/.env
    # 檢查 composer 安裝
    $SSH sudo sh $HTM/$COMPOSERINSTALL $HTM
    # 用 composer 安裝
    $SSH sudo $COMPOSER i -d $HTM
    #LARAVEL  清緩存 三指令
    CMD="cd $HTM;
    php artisan cache:clear;
    php artisan config:clear;
    php artisan route:clear;
    "
    $SSH $CMD
done

if [ ! -z "$FAILHOST" ];then
    echo "FAIL IP TOTAL $FAILTOTAL / $TOTAL"
	echo $FAILHOST
    /bin/false
fi

發佈留言