原始碼管理
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