程式狂想筆記

一個攻城師奮鬥史

0%

git push簡單自動部屬程式方法

其實最近想git有甚麼好方法做部屬動作
蒐集網路一些方法
都是delete all file再刪除….
但感覺這種作法,會讓服務中斷
有想到用git pull更新方法
但Server Web目錄會有git
雖然有想到用git方法
不過最終有找到不錯的做法

Git 如何針對其他路徑下的 Repository 執行指令

最近剛好看到這篇
git -–git-dir={專案路徑}.git\ -–work-tree={專案路徑} {git 指令}
看到這個舊感覺能用在git簡單部屬上面

所以就稍微在我Linux電腦主機上面玩了一下

簡單原理git-dir運用在git 資料夾,這邊範例是.git結尾
我一開始以為一定要用bare
但後來發現,除了可以用bare當git
還能用一般project_dir/.git/

work-tree 就是要對應其路徑

看到這個就能感覺輕鬆部屬
.git/hooks/post-receive

1
2
3
4
# !/bin/sh

# checkout HEAD
git --get-dir=xxxxx/.git/ --work-tree=xxxx(部屬位置) checkout -f

1
chmod +x .git/hooks/post-receive

How to deploy projects with Git - Buddy
雖然感覺也是能用git reset --hard head
不過網路上用這個比較多
也有看到做之前git checkout -fgit stash
雖然這篇是透過push git repo去做更新

但我覺得不應該讓bare有兩個
改天push錯就GG XD

之前也有研究用caddy-git使用webhook初體驗 | 程式狂想筆記
感覺可以運用這個上面
then command [args...]應該就可以做git --get-dir=xxxxx/.git/ --work-tree=xxxx(部屬位置) checkout -f

目前在想

1
dev_git --push-->git reop --> webhook --> caddy webhook --> git deploy

當然這邊只能做不需要編譯的部屬
例如PHP應該能這樣做
說不定哪天就有機會可以用到

2019-12-16

最近看到這篇 Hugo 博客折腾记 - 咸鱼的小鱼塘 有Webhook 程式
adnanh/webhook: webhook is a lightweight incoming webhook server to run shell commands
簡單可以用 shell 部屬
但我還沒測試過
不知道同一個時間做 webhook ,會不會影響部屬?

另類部屬方法
手摸手带你部署git服务器实现自动发布代码 - 个人文章 - SegmentFault 思否
通过Git将Hexo博客部署到服务器 - 掘金
上面有寫到

其他參考來源: