iT邦幫忙

0

使用 git 一次性的針對所有主機做更新(git pull)?

我網站目前是存在 bitbucket
因為目前是只要業主買一套,我就會複製一模一樣的程式碼到他自己的主機去,包含資料庫也都是獨立的(我擁有存取權)
所以一百家就會有一百台主機、一百份我的程式碼
先不說怎麼快速的安裝主機環境
我有什麼方式可以按下幾個鍵,我就能一起 git pull 一百台主機,獲得我 bitbucket 上的程式碼更新?
(業主的個人設定都放在資料庫中,之前問過的方式)

Tung iT邦新手 5 級 ‧ 2019-08-12 09:35:39 檢舉
可以搜尋 ansible和bitbucket CI/CD
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

1 個回答

5
暐翰
iT邦大師 1 級 ‧ 2019-08-11 21:58:50
最佳解答
  • 本地端要有排程器(windows可以註冊在任務排程)定期檢查更新
  • 每個版本要有自己不重複的hash code或是git SHA-1(假如不想架設server,此步可以省略,讓git pull自己去判斷)
  • 檢查hash code或是git SHA-1是否一致,假如不一致程式下git pull cmd命令

我有什麼方式可以按下幾個鍵,我就能一起 git pull 一百台主機,獲得我 bitbucket 上的程式碼更新?

假如想要即時性,可以做Socket,有版本更新推播告訴各個server請下git pull命令


更新回答1

本地端 : git rev-parse HEAD
最新版本Server端 : $ git ls-remote git://你的git連結 HEAD
對比兩者就可以
不想這麼麻煩可以直接git pull但會耗比較多效能


更新回答2

這邊寫一個windows powershell給大大參考

cd "C:\Users\HanYang\Downloads\HtmlTableHelper" #改成你的路徑

$localVersionSha = git rev-parse HEAD #抓取local端版本
$serverVersionSha = git ls-remote git://github.com/shps951023/HtmlTableHelper.git HEAD #抓取遠端版本

Write-Host($localVersionSha);
Write-Host($serverVersionSha);

if ($localVersionSha -ne $serverVersionSha) {
    # 版本不一致需要更新
    git pull
}

20190811224900.png

看更多先前的回應...收起先前的回應...
火爆浪子 iT邦研究生 1 級 ‧ 2019-08-11 22:13:12 檢舉

我想到的是用 php 搞 crontab?

火爆浪子 iT邦研究生 1 級 ‧ 2019-08-11 22:16:00 檢舉

但是我要怎麼做到檢查 hash code?

暐翰 iT邦大師 1 級 ‧ 2019-08-11 22:26:07 檢舉

小松菜奈 我更新回答了

火爆浪子 iT邦研究生 1 級 ‧ 2019-08-12 13:33:56 檢舉

我的伺服器是 linode ubuntu 18.04,我想像是設定 crontab 讓他每天凌晨十二點去跑 php 腳本?(我php有寫腳本可以git pull)但是可以怎麼通知所有伺服器我叫你 git pull 再 pull?

暐翰 iT邦大師 1 級 ‧ 2019-08-12 17:26:21 檢舉

小松菜奈

我想像是設定 crontab 讓他每天凌晨十二點去跑 php 腳本?

是的,這樣可以

但是可以怎麼通知所有伺服器我叫你 git pull 再 pull?

php socket

火爆浪子 iT邦研究生 1 級 ‧ 2019-08-14 02:10:18 檢舉

還是說有更好的做法?或是你推薦的做法?

火爆浪子 iT邦研究生 1 級 ‧ 2019-08-14 02:10:51 檢舉

用 php exec 這樣不就會看到 bitbucket 的帳號密碼了

我要發表回答

立即登入回答