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

使用choco安裝LxRunOffline 在wsl2的CentOs

這個標題真的是有點深奧難懂XD

wsl2是沒有CentOS,而Ubuntu在18以後的hosts 與local dns的設定令我嫌棄,所以來安裝CentOS.
LxRunOffline是來控制wsl2安裝非原廠套件的一個東西,而choco(chocolatey的簡稱)這個windows版本的套件管理工具是很方便的安裝LxRunoffline
所以要先安裝choco,我是在cmder的as admin環境下安裝的,還不錯用

1.install lxrunoffline
choco install lxrunoffline
這樣就把lxrunoffline裝好了
2.test lxrunoffline
LxRunOffline.exe 執行後可以看到所有相關指令
3.下載CentOS image file
這裡用的方式是走docker image的方式當作他的主要檔案,github上的build.sh編譯需要安裝很多環境,就直接給下載網址比較快

https://raw.githubusercontent.com/CentOS/sig-cloud-instance-images/CentOS-7-x86_64/docker/centos-7-x86_64-docker.tar.xz

4.安裝CentOS
LxRunOffline.exe install -n CentOS -d D:\wsl\CentOS -f D:\wsl_img\centos-7-x86_64-docker.tar.xz

啟動wsl的CentOS
輸入wsl -l 可以看到CetnOS 安裝起來了
輸入wsl -d CentOS 就會直接進入到CentOs內
剩下的就可以操作了

docker ip 查詢 – how to get docker container’s ip

大部分查詢docker ip的時候 都是用 docker-machine

docker-machine ip [machine name]

但是如果沒有docker machine呢?

使用指令
docker inspect

先查詢docker container
docker ps -a

4aed2ceb06c0 mysql:5.7 “docker-entrypoint.s…” 12 minutes ago Up 12 minutes 127.0.0.1:3306->3306/tcp mysql57

docker inspect mysql57

[以上省略]

“Gateway”: “172.20.0.1”,
“IPAddress”: “172.20.0.2”,

這樣就可以知道 container ip 是多少了

windows 10 home with docker use vmware player part 1

寫在前面

幹嘛要做一個這麼自找麻煩的方式?

其實自己有一台mac,在docker當局發布了mac 原生版後,基本上幾分鐘就搞定了mac版本.但是看著旁邊的筆電 vx-15 i7版,他的cpu能力是甩macbook pro 2012好幾條街,不來跑個vm或docker就太可惜了,就動了這無聊的念頭…後來覺得…真他媽的自虐..

 

Continue reading