ฉันสามารถโฮสต์เว็บไซต์ของฉันผ่าน gitlab อย่างที่คุณสามารถทำได้ด้วยหน้า github หรือไม่?


20

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

ฉันพบ Gitlab และสงสัยว่ามีอีกหรือไม่ฉันสามารถใช้ Gitlab เหมือนหน้า Github ได้ มันเป็นไปได้?


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

ฉันหมายถึงการอัปเดตเว็บไซต์ของฉันโดยอัตโนมัติเมื่อฉันทำการเปลี่ยนแปลงใน gitlab repo ดังนั้นใช่
Ben Watkins

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

สวัสดี @ Ajedi32 ปัญหาเกี่ยวกับวิธีการนี้คือสำหรับทุกโครงการใหม่คุณมี repo git และการตั้งค่าเว็บเซิร์ฟเวอร์ ด้วยหน้า GitHub มันเป็นเพียงอีกสาขาหนึ่งที่คุณผลักดัน
fiorix

@fiorix ใช่ถ้าคุณต้องการทำให้สิ่งต่าง ๆ เป็นแบบอัตโนมัติคุณจะต้องใช้วิธีแก้ปัญหาที่ซับซ้อนกว่านี้ ยังคงทำได้ แต่คุณเพียงแค่ต้องขอเข้าสู่ระบบการสร้างโครงการ GitLab อย่างใด (แม้ว่าฉันจะไม่รู้วิธีการเดาของฉันคือวิธีที่ง่ายที่สุดที่อาจเกี่ยวข้องกับการดูระบบไฟล์หรืออาจจะเรียก GitLab API)
Ajedi32

คำตอบ:


18

ข่าวดี!

ตั้งแต่ 8.3 (ธ.ค. 2558) GitLab มี "GitLab Pages" https://about.gitlab.com/2015/12/22/gitlab-8-3-released/

คุณลักษณะนี้มีอยู่ใน GitLab.com (ที่ทำงาน EE) ซึ่งคุณสามารถมีพื้นที่เก็บข้อมูลฟรีไม่ จำกัด สาธารณะ / ส่วนตัว

นี่คือเอกสารสำหรับ GitLab Pages อธิบายว่าคุณสามารถโฮสต์เว็บไซต์นิ่งของคุณบน GitLab ได้ฟรี http://doc.gitlab.com/ee/pages/README.html


5

ฉันไม่แน่ใจว่าสิ่งที่คุณถาม คุณบอกว่าคุณต้องการโฮสต์บนเซิร์ฟเวอร์ของคุณเอง แต่คำถามของคุณบอกว่าคุณต้องการโฮสต์เช่นหน้า gitlab ซึ่งไม่ใช่เซิร์ฟเวอร์ของคุณเอง

ไม่ว่าในกรณีใด ๆ สิ่งนี้อาจช่วยได้

นี่คือสิ่งที่ฉันทำ

บนพีซีในเครื่อง

mkdir folderforwebsite
cd folderforwebsite
git init
echo "hello world" > index.html
git add index.html
git commit -m "initial commit"

ตอนนี้ฉันมี repo ในพื้นที่ คัดลอกไปยังเซิร์ฟเวอร์

scp -r ../folderforwebsite username@mydomain.com:/path/from/root/to/webfolder

ตอนนี้ฉันมีมันบนเซิร์ฟเวอร์ระยะไกล

ssh name@mydomain.com 'cd path/to/webfolder; git checkout -b live`

ขณะนี้มีทั้งต้นแบบและสาขาสดบนเว็บไซต์ ฉันทำสิ่งนี้ตั้งแต่ AFAICT คุณไม่สามารถผลักดันไปยังสาขาปัจจุบัน ดังนั้นตอนนี้เรามีสาขา "สด" ซึ่งเป็นปัจจุบันในระยะไกลและสาขา "ต้นแบบ" ซึ่งไม่ได้เป็น

ในที่สุดก็เพิ่มรีโมตไปยัง repo ในพื้นที่ของฉัน

git remote add web ssh://name@mydomain.com/path/from/root/to/webfolder

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

#!/bin/sh
set -e
set -v
git push web master
ssh username@mydomain.com git merge --ff-only master

git pushผลักดันการเปลี่ยนแปลงของฉันไปที่สาขาไม่หมุนเวียนบนเว็บเซิร์ฟเวอร์ sshบันทึกแล้วเป็นเว็บเซิร์ฟเวอร์ได้อย่างรวดเร็วและส่งต่อการเปลี่ยนแปลงใน "ต้นแบบ" สาขาในปัจจุบัน ในกรณีนี้สาขา "สด"

--ff-only แจ้งว่าล้มเหลวหากมีการเปลี่ยนแปลงบนเซิร์ฟเวอร์

หากมีการเปลี่ยนแปลงบนเซิร์ฟเวอร์ฉันสามารถดึงพวกเขาเป็นเจ้านายท้องถิ่นของฉันด้วย

git pull web live

ในสิ่งที่มากขึ้น ก่อนที่ฉันจะทำสิ่งนี้ฉันตั้งค่าคีย์ SSH บนเซิร์ฟเวอร์ระยะไกลดังนั้นฉันไม่ต้องพิมพ์รหัสผ่านใด ๆ

สิ่งนี้ไม่มีการเชื่อมต่อกับ github หรือ gitlab ฉันอาจผลักดันการเปลี่ยนแปลงของฉันที่นั่นเช่นกัน แต่พวกเขาไม่ได้เชื่อมต่อ



2

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

เราพบว่าคุณสามารถปรับใช้รหัสของคุณกับเซิร์ฟเวอร์ของคุณผ่าน Git hooks สิ่งที่คุณต้องทำคือ SSH ในเซิร์ฟเวอร์ของคุณสร้าง git repo แล้วตั้งค่า hook สำหรับคุณเพื่อส่งคอมมิชชันไปยัง repo นี้ สิ่งนี้จะช่วยให้คุณสามารถส่งมอบความมุ่งมั่นไปยังเซิร์ฟเวอร์ของคุณ แต่ไม่มีอะไรเกี่ยวข้องกับ gitlab ในตอนนี้

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

ฉันพบวิธีใช้รหัสของคุณกับเซิร์ฟเวอร์ผ่าน git จากบล็อกโพสต์นี้: http://sebduggan.com/blog/deploy-your-website-changes-using-git/

ฉันพบว่าคุณสามารถเพิ่ม URL แบบพุชสองรายการในรีโมตของคุณในคอมไพล์จากคำถามนี้ใน stackoverflow: /programming/14290113/git-pushing-code-to-two-remotes

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


1

ในปัจจุบันสิ่งที่ดีที่สุดที่คุณสามารถทำได้คือ GitLab CI เพื่อผลักดันเซิร์ฟเวอร์แบบคงที่เช่น Amazon S3

หากคุณสามารถปรับใช้กับ Git คำถาม (ยังไม่ได้แก้ไข) ต่อไปนี้เป็นคำถามเฉพาะเกี่ยวกับวิธีการทำกับ gitlab: /programming/14288288/gitlab-repository-mirroring

มีคำขอเฉพาะสำหรับสิ่งนั้นที่ตัวติดตามคุณสมบัติ: http://feedback.gitlab.com/forums/176466-general/suggestions/5599145-preview-render-static-html-pages-pushedions

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