Git Đẩy vào sản xuất (FTP)


130

Tôi muốn biết liệu có một cách dễ dàng để đẩy kho lưu trữ GIT vào sản xuất (trên máy chủ FTP) không? Cảm ơn

Câu trả lời:


162

Một số công cụ gần đây đã được thêm vào wiki Git :

git-ftp của René Moser là một tập lệnh shell đơn giản để thực hiện FTP theo cách Git. Sử dụng git-ftp.sh để chỉ tải lên các tệp được theo dõi Git lên máy chủ FTP, đã thay đổi kể từ lần tải lên cuối cùng. Điều này tiết kiệm thời gian và băng thông. Ngay cả khi bạn chơi với các nhánh khác nhau, git-ftp.sh vẫn biết tệp nào khác. Không có máy khách FTP thông thường nào có thể làm điều đó.

git-ftp của Edward Z. Yang là một tập lệnh đơn giản được viết bằng python để tải lên các tệp trong kho Git qua FTP, chỉ chuyển các tệp mới và xóa các tệp cũ.


3
bằng cách sử dụng git-ftp, có cách nào để đẩy chỉ một thư mục con (ví dụ: thư mục xuất bản của chương trình soạn thảo html5) sang thư mục ftp đã chỉ định không?
băng nhóm

Và nếu có một vài nhà phát triển trong nhóm. Vẫn có thể sử dụng tập lệnh này?
Trilliput

@Trilliput: Ở đây hơi muộn, nhưng vâng, một máy chủ trung gian / vm trên mạng là nơi mọi người đẩy, và sau đó: github.com/ezyang/git-ftp#USE-a-bare-reposeective-as-a -proxy
Pranav

github.com/banago/PHPloy cũng thực hiện một điều tương tự nhưng hoạt động với các mô hình con, mà tôi nghi ngờ một số công cụ được đề cập có thể đấu tranh với.
Simon East

Vấn đề chính với git-ftp (không chắc là script hay python) Tôi đã thử nó rất tệ khi tải lên các khối lớn các tệp và danh sách dài các tệp.
Ấn Độwebdevil

14

Nếu bạn thích GUI, hãy sử dụng SourceTree, bạn có thể dễ dàng thiết lập Hành động tùy chỉnh sử dụng git-ftp được đề cập ở trên. Mô tả ngắn gọn về thiết lập (dành cho Mac) tại Đẩy kho lưu trữ Git sang FTP

nhập mô tả hình ảnh ở đây


@Julix Cho bài viết đề cập.
Geri Borbás

11

Tôi đã tìm thấy PHPloy một công cụ tuyệt vời để gửi các cam kết Git của bạn đến các máy chủ từ xa qua FTP. Nó hoạt động từ dòng lệnh và được viết bằng PHP (và thậm chí phát hiện các thay đổi trong các mô hình con).

https://github.com/banago/PHPloy

git commit ...
phploy -s staging
phploy -s production

Làm xong!

(Tuyên bố miễn trừ trách nhiệm: sau khi sử dụng một thời gian, giờ đây tôi đã đóng góp một số bản vá và cải tiến mã, làm cho nó tương thích với Windows.)


10

Nếu bạn đang sử dụng máy Mac và có Truyền, tôi khuyên bạn nên sử dụng tập lệnh git-tranmit sau ( https://gist.github.com/379750 ). Nó sử dụng DockSend để chỉ gửi các tệp được cập nhật mới nhất. Nếu bạn không quen thuộc với DockSend, hãy xem http://www.panic.com/blog/2010/11/15-secrets-of-transmit/ .

Thiết lập:

  1. cp git-quá cảnh / usr / sbin /.
  2. cd / usr / sbin
  3. chmod + x git-truyền
  4. Thiết lập thả gửi cho ứng dụng trực tiếp của bạn
  5. Chạy git-Transmission trong kho git của bạn.

1
Kịch bản này khá vụng về về việc chọn 'các tệp được cập nhật mới nhất'. Kiểm tra ngã ba này cho một giải pháp thanh lịch hơn.
quickshiftin

Ngoài ra, bạn có thể chỉ muốn truyền các tệp được theo dõi và không được cam kết. Đây là một tập lệnh nhỏ chỉ thực hiện điều đó: gist.github.com/boritoriakur/37b8f512f6f8865b79c7
boronomiakur

5

Đó không phải là những gì git dành cho, nói đúng ra. Tuy nhiên, nếu nguồn của bạn là thứ không cần biên dịch hoặc xử lý, giả sử một trang web chứa toàn bộ tệp html và javascript và tương tự, bạn có thể sao chép repo trên máy chủ web của mình và sử dụng git pulltừ máy chủ để cập nhật -đến ngày. Lưu ý, tôi sẽ cấu hình máy chủ web của bạn để ẩn thư mục git và như vậy. Và đó chỉ là khởi đầu của mối quan tâm bảo mật.

Nếu bạn có bất kỳ loại biên dịch hoặc xử lý nào, bạn nên bắt đầu xem xét Ant , Maven , BuildR , SBT , v.v.


29
Vấn đề duy nhất với điều này là khi bạn không có quyền truy cập vào máy chủ sản xuất, tức là nó có thể là lưu trữ chia sẻ đơn giản, chỉ có quyền truy cập FTP.
dodgy_coder

4

Bạn có thể sử dụng Deployhq.com nó hoạt động như một bùa mê, điều duy nhất bạn cần làm là thiết lập kho lưu trữ và tài khoản FTP của mình.

Chúng hiện là các hệ thống kiểm soát phiên bản sau:

Git, lật đổ, Mercurial.

Với kho lưu trữ được lưu trữ

  • GitHub
  • Cai Xô nhỏ
  • GitLab
  • Cơ sở mã hóa

nhập mô tả hình ảnh ở đây




1

Có tập lệnh Ruby ở đây - Ruby git-triển khai qua FTP hoặc SSH chỉ tải lên các tệp đã thay đổi trong git repo qua FTP hoặc SSH.

Như đã đề cập trong một câu trả lời khác, đây là tập lệnh git-ftp.py của Python thực hiện một điều tương tự.

Và đây là phiên bản shell shell của git-ftp .

Ngoài ra còn có một dự án đá quý Ruby có tên git-triển khai cho phép bạn thiết lập một triển khai tùy chỉnh thông qua một điều khiển từ xa bằng cách sử dụng git pushlệnh, giống như các dịch vụ Heroku và Azure. Đối với điều này, bạn có thể cần phải viết các phương thức tùy chỉnh để triển khai qua FTP và tôi nghĩ rằng nó giả định rằng bạn có quyền truy cập SSH vào máy chủ sản xuất của mình.


0

Nếu bạn đang đưa mã vào sản xuất, tôi khuyên bạn nên sử dụng "trình cài đặt", chẳng hạn như gói RPM để cài đặt mã của bạn. Bằng cách đó, nó sẽ được đóng dấu phiên bản và bạn sẽ có thể tận dụng gói trình cài đặt để hỗ trợ cập nhật mã sản xuất. Git không thực sự được thiết kế để hỗ trợ cài đặt sản xuất, nó nhằm theo dõi các thay đổi đối với chính mã.

Trong mọi trường hợp, với .RPM (hoặc EXE hoặc bất cứ điều gì) được xây dựng, bạn có thể chỉ cần FTP nó đến hệ thống sản xuất và cài đặt nó như bất kỳ gói nào khác.


5
Chà, git có thể là đòn bẩy khá tốt cho mục đích này trong thực tế. Kiểm tra thẻ và tạo các móc nối sau kiểm tra, hậu hợp nhất vv để xử lý mọi thủ tục cài đặt cần thiết. Chúng tôi đã từng sử dụng các gói RPM nhưng sau khi chuyển sang git, nó chỉ đơn giản là quá mức cần thiết.
d11wtq

0

Thêm nó dưới dạng điều khiển từ xa, sau đó bạn có thể đẩy vào nó, tuy nhiên chỉ cần đẩy mã là không đủ, nó cần được hợp nhất với cây làm việc. Cách dễ nhất là đi theo đường vòng khác, có một cây làm việc trên máy chủ và tìm nạp và hợp nhất vào đó.



0

Tôi đã đấu tranh rất nhiều để tìm ra điều này. Tôi đã tìm ra một cách dễ dàng để thực hiện điều này từ nhiều nguồn khác nhau ( git-ftpINSTALL , git-ftpUPLOAD , git-ftpIssue , git-ftpPUSH ). Bạn có thể đọc để tham khảo nhưng không cần vì tôi đã đề cập từng bước quy trình dưới đây.

Điều đầu tiên: Cài đặt git và curl bằng brew trên MAC OS

brew install git
brew install curl --with-ssl --with-libssh2
brew install git-ftp

Chạy các lệnh sau:

git clone https://github.com/git-ftp/git-ftp.git
cd git-ftp
git tag # see available tags
git checkout <tag> # checkout the latest tag by replacing <tag>
sudo make install

Đang cập nhật bằng git

git pull
git tag # see available tags
git checkout <tag> # checkout the latest tag by replacing <tag>
sudo make install

Thiết lập

git config git-ftp.url YourFtpServerName.Net
git config git-ftp.user FtpUserName
git config git-ftp.password YourPassword

Tải lên tất cả các tập tin

git ftp init

Hoặc nếu các tập tin đã có

git ftp catchup

Làm việc và triển khai

echo "Hello StackOverflow" >> index.txt
git commit application/libraries/index.txt -m "I love StackOverflow"
git ftp push

Nếu có lỗi: pathspec 'index.txt' không khớp với bất kỳ (các) tệp nào được biết đến với git . Điều đó có nghĩa là tệp chưa được dàn dựng, vì vậy hãy thêm tệp và sau đó thử xác nhận.

git add application/libraries/index.txt
git commit application/libraries/index.txt -m "I love StackOverflow"

Hi vọng điêu nay co ich.


0

Bạn có thể thử FTPloy ...

https://ftploy.com

"Đẩy các thay đổi sang GitHub hoặc Bitbucket."

"Triển khai thay đổi tự động đến máy chủ của bạn"

Bạn có một dự án miễn phí để dùng thử. Tôi hiện đang sử dụng cho một trang web php nhỏ và nó hoạt động khá tốt. Một vài lỗi trên trang web nhưng đó là một dự án đang hoạt động nên ít nhất họ đang làm việc với nó.


1
Tôi đăng câu trả lời này sớm. FTPloy không hoàn toàn 'sẵn sàng sản xuất' và có rất nhiều lỗi. Tôi không thể làm cho nó hoạt động. Tôi đang sử dụng DeployHQ hoạt động rất tốt.
Dave Thompson

0

Hãy xem https://gitftp-deploy.com/ nếu bạn đang dùng MacOS và bạn thích GUI.

Đây là một ứng dụng nhỏ đẹp sử dụng Git để theo dõi các thay đổi và chỉ tải lên các tệp đã thay đổi bằng FTP.

Đặc biệt tiện dụng nếu bạn không thích trả phí hàng tháng cho hàng chục dự án nhỏ hơn với các nhóm nhỏ.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.