Git Push ในการผลิต (FTP)


130

ฉันต้องการทราบว่ามีวิธีง่ายๆในการพุชที่เก็บ GIT ไปยังการใช้งานจริง (บนเซิร์ฟเวอร์ FTP) หรือไม่? ขอบคุณ

คำตอบ:


162

เครื่องมือบางอย่างที่เพิ่งเพิ่มลงในGit wiki :

git-ftpโดยRené Moser เป็นเชลล์สคริปต์อย่างง่ายสำหรับทำ FTP ด้วยวิธี Git ใช้ git-ftp.sh เพื่ออัปโหลดเฉพาะไฟล์ที่ติดตาม Git ไปยังเซิร์ฟเวอร์ FTP ซึ่งมีการเปลี่ยนแปลงตั้งแต่การอัปโหลดครั้งล่าสุด ช่วยประหยัดเวลาและแบนด์วิดธ์ แม้ว่าคุณจะเล่นกับสาขาที่แตกต่างกัน git-ftp.sh ก็รู้ว่าไฟล์ใดแตกต่างกัน ไม่มีไคลเอนต์ FTP ธรรมดาสามารถทำได้

git-ftpโดย Edward Z. Yang เป็นสคริปต์ง่ายๆที่เขียนด้วย python สำหรับการอัปโหลดไฟล์ในที่เก็บ Git ผ่าน FTP โดยจะถ่ายโอนไฟล์ใหม่และลบไฟล์เก่าเท่านั้น


3
โดยใช้ git-ftp มีวิธีการพุชไดเร็กทอรีย่อย (เช่นโฟลเดอร์เผยแพร่ของ html5 สำเร็จรูป) ไปยังไดเร็กทอรี ftp ที่ระบุหรือไม่
แก๊ง

และถ้ามีนักพัฒนาหลายคนในทีม ยังสามารถใช้สคริปต์นี้ได้หรือไม่?
Trilliput

@Trilliput: ช้าไปหน่อย แต่ใช่เซิร์ฟเวอร์ระดับกลาง / vm บนเครือข่ายเป็นสถานที่ที่ทุกคนผลักดันจากนั้น: github.com/ezyang/git-ftp#using-a-bare-repository-as-a -proxy
Pranav 웃

github.com/banago/PHPloyทำสิ่งที่คล้ายกัน แต่ใช้งานได้กับโมดูลย่อยซึ่งฉันสงสัยว่าเครื่องมือที่กล่าวถึงบางตัวอาจใช้งานได้
Simon East

ปัญหาหลักของ git-ftp (ไม่แน่ใจว่า script หรือ python) ฉันพยายามแล้วมันแย่มากเมื่ออัปโหลดไฟล์จำนวนมากและรายการไฟล์ที่ยาว
indianwebdevil

14

หากคุณชอบ GUI ให้ใช้ SourceTree คุณสามารถตั้งค่า Custom Action ที่ใช้ git-ftp ดังกล่าวข้างต้นได้อย่างง่ายดาย คำอธิบายสั้น ๆ เกี่ยวกับการตั้งค่า (สำหรับ Mac) ที่Push a Git repository ไปยัง FTP

ป้อนคำอธิบายภาพที่นี่


@Julix สำหรับบทความที่กล่าวถึง
Geri Borbás

11

ฉันพบว่าPHPloyเป็นเครื่องมือที่ยอดเยี่ยมสำหรับการส่ง Git ของคุณไปยังเซิร์ฟเวอร์ระยะไกลผ่าน FTP ทำงานจากบรรทัดคำสั่งและเขียนด้วย PHP (และตรวจพบการเปลี่ยนแปลงในโมดูลย่อย)

https://github.com/banago/PHPloy

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

ทำ!

(ข้อจำกัดความรับผิดชอบ: หลังจากใช้งานไประยะหนึ่งตอนนี้ฉันได้สนับสนุนการแก้ไขโค้ดและการปรับปรุงบางอย่างทำให้เข้ากันได้กับ Windows)


10

หากคุณใช้ Mac และมี Transmit ฉันขอแนะนำสคริปต์ git-tranmit ต่อไปนี้ ( https://gist.github.com/379750 ) ใช้ DockSend เพื่อส่งเฉพาะไฟล์ที่อัปเดตล่าสุด หากคุณไม่คุ้นเคยกับ DockSend โปรดดูที่http://www.panic.com/blog/2010/11/15-secrets-of-transmit/ http://www.panic.com/blog/2010/11/15-secrets-of-transmit/

ติดตั้ง:

  1. cp git-transit / usr / sbin /.
  2. cd / usr / sbin
  3. chmod + x git- ส่ง
  4. การตั้งค่าลดลงส่งสำหรับแอปสดของคุณ
  5. เรียกใช้ git-transmit ในที่เก็บ git ของคุณ

1
สคริปต์นี้ค่อนข้างเงอะงะในการเลือก 'ไฟล์ที่อัปเดตล่าสุด' ลองใช้ส้อมนี้เพื่อดูโซลูชันที่หรูหรายิ่งขึ้น
quickshiftin

นอกจากนั้นคุณอาจต้องการส่งเฉพาะไฟล์ที่ถูกติดตามและไม่ถูกคอมมิตเท่านั้น นี่คือสคริปต์เล็ก ๆ ที่ทำเช่นนั้น: gist.github.com/borisdiakur/37b8f512f6f8865b79c7
borisdiakur

5

นั่นไม่ใช่สิ่งที่มีไว้เพื่อพูดอย่างเคร่งครัด แต่ถ้าแหล่งที่มาของคุณเป็นสิ่งที่ไม่จำเป็นต้องรวบรวมหรือการประมวลผลกล่าวว่าเว็บไซต์ประกอบด้วยทั้งหมดของไฟล์ HTML และ JavaScript และชอบที่คุณอาจมีโคลนของ repo บนเว็บเซิร์ฟเวอร์และการใช้งานของคุณgit pullจากเซิร์ฟเวอร์ที่จะให้มันขึ้น -to-date หมายเหตุฉันจะกำหนดค่าเว็บเซิร์ฟเวอร์ของคุณเพื่อซ่อนไดเรกทอรี git และสิ่งนั้น และนั่นเป็นเพียงจุดเริ่มต้นของปัญหาด้านความปลอดภัย

หากคุณมีการคอมไพล์หรือประมวลผลประเภทใด ๆ คุณควรเริ่มดูAnt , Maven , BuildR , SBTและอื่น ๆ


29
ปัญหาเดียวคือเมื่อคุณไม่สามารถเข้าถึงเซิร์ฟเวอร์ที่ใช้งานจริงนั่นคืออาจเป็นโฮสติ้งที่ใช้ร่วมกันแบบธรรมดาโดยมีเพียงการเข้าถึง FTP เท่านั้น
dodgy_coder

4

คุณสามารถใช้Deployhq.comได้สิ่งเดียวที่คุณต้องทำคือตั้งค่าที่เก็บและบัญชี FTP ของคุณ

ขณะนี้ระบบควบคุมเวอร์ชันต่อไปนี้:

Git, Subversion, Mercurial

ด้วยพื้นที่เก็บข้อมูลที่โฮสต์

  • GitHub
  • Bitbucket
  • GitLab
  • codebase

ป้อนคำอธิบายภาพที่นี่




1

มีสคริปต์ Ruby อยู่ที่นี่ - Ruby git-deploy ผ่าน FTP หรือ SSHซึ่งอัปโหลดเฉพาะไฟล์ที่เปลี่ยนแปลงใน git repo ผ่าน FTP หรือ SSH

ตามที่กล่าวไว้ในคำตอบอื่นนี่คือสคริปต์ Python git-ftp.pyซึ่งทำสิ่งที่คล้ายกัน

และนี่ก็เป็นรุ่นเชลล์สคริปต์ของGit-FTP

นอกจากนี้ยังมีโปรเจ็กต์ Ruby gem ที่เรียกว่าgit-deployซึ่งให้คุณตั้งค่าการปรับใช้แบบกำหนดเองผ่าน git remote โดยใช้ไฟล์git pushคำสั่งในลักษณะเดียวกับบริการ Heroku และ Azure สำหรับวิธีนี้คุณอาจต้องเขียนวิธีการที่กำหนดเองเพื่อปรับใช้ผ่าน FTP และฉันคิดว่าคุณมีสิทธิ์เข้าถึง SSH ไปยังเซิร์ฟเวอร์การผลิตของคุณ


0

หากคุณกำลังใส่โค้ดในการใช้งานจริงขอแนะนำให้ใช้ "ตัวติดตั้ง" เช่นแพ็กเกจ RPM เพื่อติดตั้งโค้ดของคุณ ด้วยวิธีนี้จะมีการประทับเวอร์ชันและคุณจะสามารถใช้ประโยชน์จากแพ็คเกจโปรแกรมติดตั้งเพื่อรองรับการอัปเดตรหัสการผลิตได้ Git ไม่ได้ออกแบบมาเพื่อรองรับการติดตั้งการใช้งานจริงมันมีจุดประสงค์เพื่อติดตามการเปลี่ยนแปลงของโค้ดเอง

ไม่ว่าในกรณีใดก็ตามด้วย. RPM (หรือ EXE หรืออะไรก็ได้) ที่สร้างขึ้นคุณสามารถ FTP ไปยังระบบการผลิตและติดตั้งได้เหมือนกับแพ็คเกจอื่น ๆ


5
git สามารถใช้ประโยชน์ได้ดีสำหรับจุดประสงค์นี้ในความเป็นจริง ตรวจสอบแท็กและสร้างตะขอหลังการชำระเงินหลังการรวม ฯลฯ เพื่อจัดการขั้นตอนการติดตั้งที่จำเป็น เราเคยใช้แพ็กเกจ RPM แต่หลังจากย้ายไปคอมไพล์มันก็เกินความสามารถ
d11wtq

0

เพิ่มเป็นรีโมตจากนั้นคุณสามารถพุชได้ แต่การกดรหัสนั้นไม่เพียงพอจำเป็นต้องรวมเข้ากับโครงสร้างการทำงาน วิธีที่ง่ายที่สุดคือไปอีกทางหนึ่งมีต้นไม้ที่ใช้งานได้บนเซิร์ฟเวอร์แล้วดึงและรวมเข้าด้วยกัน


0

คุณสามารถพยายามที่จะกำหนด FTP ไปยังไดเรกทอรีท้องถิ่นโดยใช้http://linuxconfig.org/mount-remote-ftp-directory-host-locally-into-linux-filesystem

จากนั้นคุณสามารถใช้วิธีเดียวกันกับนี้


0

ฉันดิ้นรนมากเพื่อหาสิ่งนี้ ฉันได้หาวิธีง่ายๆในการทำสิ่งนี้จากแหล่งต่างๆ ( git-ftpINSTALL , git-ftpUPLOAD , git-ftpIssue , git-ftpPUSH ) คุณสามารถอ่านเพื่ออ้างอิงได้ แต่ไม่จำเป็นเพราะฉันได้กล่าวถึงกระบวนการทีละขั้นตอนด้านล่าง

สิ่งแรกแรก: ติดตั้ง git และ curl โดยใช้ brew บน MAC OS

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

รันคำสั่งต่อไปนี้:

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

การอัปเดตโดยใช้ git

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

ติดตั้ง

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

อัปโหลดไฟล์ทั้งหมด

git ftp init

หรือถ้าไฟล์นั้นมีอยู่แล้ว

git ftp catchup

ทำงานและปรับใช้

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

หากมีข้อผิดพลาด: pathspec 'index.txt' ไม่ตรงกับไฟล์ใด ๆ (s) ที่รู้จักกันในคอมไพล์ หมายความว่าไฟล์ยังไม่ได้รับการจัดเตรียมดังนั้นให้เพิ่มไฟล์แล้วลองคอมมิต

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

หวังว่านี่จะช่วยได้


0

คุณสามารถลอง FTPloy ...

https://ftploy.com

"พุชการเปลี่ยนแปลงไปยัง GitHub หรือ Bitbucket"

"ปรับใช้การเปลี่ยนแปลงโดยอัตโนมัติกับเซิร์ฟเวอร์ของคุณ"

คุณมีโครงการฟรี 1 โครงการที่จะทดลองใช้ ตอนนี้ฉันใช้สำหรับเว็บไซต์ php ขนาดเล็กและทำงานได้ดีทีเดียว ข้อบกพร่องบางอย่างในไซต์ แต่เป็นโครงการที่ใช้งานอยู่ดังนั้นอย่างน้อยพวกเขาก็กำลังดำเนินการอยู่


1
ฉันโพสต์คำตอบนี้ก่อนกำหนด FTPloy ไม่ค่อย 'พร้อมใช้งานจริง' และมีข้อบกพร่องจำนวนมาก ฉันไม่สามารถทำให้มันทำงานได้ ฉันใช้ DeployHQ ซึ่งทำงานได้ดีมาก
Dave Thompson

0

ตรวจสอบhttps://gitftp-deploy.com/หากคุณใช้ MacOS และคุณชอบ GUI

เป็นแอปพลิเคชั่นเล็ก ๆ ที่ดีที่ใช้ Git เพื่อติดตามการเปลี่ยนแปลงและอัปโหลดเฉพาะไฟล์ที่เปลี่ยนแปลงด้วย FTP

มีประโยชน์อย่างยิ่งหากคุณไม่ชอบจ่ายค่าธรรมเนียมรายเดือนสำหรับโครงการขนาดเล็กหลายสิบโครงการกับทีมงานขนาดเล็ก

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.