repo : /var/repo/site.git
directory deploy: /var/www/domain.com
NOTE: Với Gitlab, repo được tạo ở /var/opt/gitlab/git-data/repositories/$USER/repository_name
cd /var
mkdir repo && cd repo
mkdir site.git && cd site.git
git init --bareTùy chọn bare nghĩa là folder không có các tập tin nguồn, chỉ để kiểm soát phiên bản
Trong mỗi repo git sẽ có một folder tên là hooks, nó chứa các file mẫu cho phép bạn có thể tùy chỉnh các hành động với dữ liệu trong quá trình git.
Có 3 loại hooks : pre-receive, post-receive và update.
pre-receive thực thi ngay khi server nhận được push , update tương tự nhưng thực thi một lần cho mỗi nhánh, còn post-receive thực thi khi push hoàn tất.
Chúng ta cần quan tâm đến post-receive
cd hooks
cat > post-receive
Thêm nội dung sau vào post-receive, ấn Ctrl+D để ghi nhận
#!/bin/sh
echo "Start deploy"
git --work-tree=/var/www/domain.com --git-dir=/var/repo/site.git checkout -f
echo "Finish deploy"
Xem thêm : Code push theo branch xác định : post-receive
Cấp permission +x cho file
chmod +x post-receive
Tạo một folder git
mkdir project && cd project
git initCấu hình remote tới repo trên server deploy live
$ git remote add live ssh://user@mydomain.com/var/repo/site.git
echo "Hello " >> README.md
$ git add *
$ git commit -m "My project is ready"
$ git push live master
Kết quả
$ git push live master
Counting objects: 5, done.
Compressing objects: 100% (2/2), done.
Writing objects: 100% (3/3), 301 bytes | 0 bytes/s, done.
Total 3 (delta 0), reused 0 (delta 0)
remote: Start deploy
remote: Finish deploy
To ssh://user@mydomain.com/var/repo/site.git
4b052f6..6ad7de4 master -> master
Xem thêm về Git Hooks : https://git-scm.com/book/en/v2/Customizing-Git-Git-Hooks