假如你在本地的虛擬機或者公司內網服務器部署了gitlab,但願版本控制管理本地化或內網化,那如何實現版本控制管理本地化或內網化的同時,可以將項目基於版本控制管理部署在線上服務器,這就是如下要討論的問題。html
上面方案存在的關卡git
遠程服務器如何同步或克隆本地gitlab的代碼服務器
gitlab如何項目實現自動化同步部署遠程服務器markdown
在gitlab創建項目(即在gitlab創建倉庫過程)app
在遠程服務器創建裸倉庫ssh
本地克隆gitlab倉庫ide
ssh-keygen -t rsa -C "your_email@example.com"
在gitlab部署本地ssh-keygitlab
第一步:post
第二步:測試
host test hostname 0.0.0.0 #你的主機地址 user root port 22 identityfile ~/.keys/test #你的私鑰地址
#!/bin/sh # example hook script for the "post-receive" event. # # The "post-receive" script is run after receive-pack has accepted a pack # and the repository has been updated. It is passed arguments in through # stdin in the form # <oldrev> <newrev> <refname> # For example: # aa453216d1b3e49e7f6f98441fa56946ddcd6a20 68f7abf4e6f922807889f52bc043ecd31b79f814 refs/heads/master # # see contrib/hooks/ for a sample, or uncomment the next line and # rename the file to "post-receive". #. /usr/share/git-core/contrib/hooks/post-receive-email while read oldrev newrev ref do branch=$(git rev-parse --symbolic --abbrev-ref $ref) if [ "$branch" = "1.0" ] then git push -f test:/var/www/html/test.git $branch fi done
#!/bin/sh # # An example hook script for the "post-receive" event. # # The "post-receive" script is run after receive-pack has accepted a pack # and the repository has been updated. It is passed arguments in through # stdin in the form # <oldrev> <newrev> <refname> # For example: # aa453216d1b3e49e7f6f98441fa56946ddcd6a20 68f7abf4e6f922807889f52bc043ecd31b79f814 refs/heads/master # # see contrib/hooks/ for a sample, or uncomment the next line and # rename the file to "post-receive". #. /usr/share/git-core/contrib/hooks/post-receive-email while read oldrev newrev ref do if [[ $ref =~ .*/1.0$ ]]; then echo "1.0 ref received. Deploying 1.0 branch to test server..." git --work-tree=/var/www/html/test--git-dir=$GIT_DIR checkout -f $ref fi done
注意:
(1)出現下面
緣由:gitlab未把host添加進kown_hosts