當你將程式碼放到bitbucket或github上
要做source code deply除了可以透過CI來做自動deploy的工作
也可以利用git上所提供的git功能來做自動deploy
其原理很簡單
就是在你的server上也clone一份你的repos資料
當有人做commit push時,Server上的repos會自動pull最新的回來
就達到自動deploy的工作
以下是需要的工作
1.Server需要安裝git環境
因為是需要透過git pull去把code拉到Server上,會需要安裝git環境
ubuntu:
sudo apt-get install git-core
opensuse:
sudo zypper install git-core
2.建立Web 可以操作的 SSH Key
通常產生ssh key都會是建立在使用者的自己所在的
.ssh目錄下,
但因為要執行git command會是經由web page進來的
所以所建立的ssh key必須是要以web user的身分所建立
apache server進來的web user身分
ubuntu:www-data
sudo -u www-data ssh-keygen -t rsa
opensuse:wwwrun
sudo -u wwwrun ssh-keygen -t rsa
產生的key
ubuntu是在
/var/www/.ssh/
opensuse是在
/var/lib/wwwrun/.ssh下
3.設定Deploy Key
在Bitbucket上的repos設定
在Deploy key加上產生的key pub
使用Deploy Key
只能pull不能push
4.clone repos到server上
要clone repos到server上,先將使用者身分切換到web user
所clone下來的東西擁有者就會是web user,就可以允許透過
web page操作這些資料
ubuntu:
su www-data
git clone xxx
opensuse:
sudo -u wwwrun -s
git clone xxxx
5.寫git pull script
可以用一個script放到server上
例以下是以php寫的sample
http://brandonsummers.name/blog/2012/02/10/using-bitbucket-for-automated-deployments/
6.設定hook
到bitbucket上,設定加入一個POST Hook
只到上面所寫的script路徑即可