2013-03-05 35 views
19

Tôi đã xây dựng một trang web cục bộ với Jekyll và đã đẩy nó vào một trang tổng thể mới (username.github.com) và trang web hoạt động rất tuyệt. Câu hỏi của tôi là, làm cách nào để di chuyển chỉ phần có thể triển khai, thư mục _ trang web vào chi nhánh gh-trang? Hay đúng hơn, nội dung của thư mục đó nếu đó là cách tốt nhất để triển khai?Triển khai Jekyll to Github Pages

Tôi định sử dụng miền tùy chỉnh. Luồng công việc của tôi sẽ hoạt động trong nhánh chính, có thể là một số nhánh tính năng, và sau đó đẩy (hợp nhất) kết quả đã biên dịch vào nhánh gh-pages. Điều đó có đúng không?

Tôi đang gặp khó khăn trong việc tìm ra thông qua tài liệu, sẽ đánh giá cao bất kỳ trợ giúp nào, cảm ơn bạn!

Trả lời

17

Quy trình làm việc của bạn không chính xác dựa trên các chi tiết trong câu hỏi của bạn.

Nếu bạn đã đẩy trang web dựa trên Jekyll của mình đến một kho lưu trữ username.github.io, thì bạn không cần chi nhánh gh-pages. Chi nhánh gh-pages chỉ bắt buộc đối với các kho lưu trữ nơi bạn muốn có mã và trang web trong cùng một kho lưu trữ. GitHub Pages sẽ chăm sóc chạy Jekyll cho bạn và phục vụ trang được biên dịch trong cả hai trường hợp.

Trang GitHub chạy Jekyll theo cách rất cụ thể để giữ an toàn cho trang đó. Nếu bạn đang sử dụng các plugin tùy chỉnh với trang web Jekyll, thì bạn sẽ cần lưu trữ trang web đã biên dịch của mình (thư mục _site mà bạn đã đề cập) trên nhánh chính và nguồn trong một nhánh khác.

Để tóm tắt, quy trình làm việc của bạn phải hoạt động trong kho lưu trữ cục bộ - trong chi nhánh master chi nhánh hoặc tính năng (hợp nhất chi nhánh cho chi nhánh địa phương của bạn khi cần) - và khi bạn sẵn sàng xuất bản, hãy đẩy kho lưu trữ cục bộ cho chi nhánh master trên GitHub.

3

Điều bạn muốn làm rất giống với cách hoạt động của Octopress. Hãy để tôi giải thích cho bạn làm thế nào bạn có thể làm một cái gì đó như thế này.

Bạn muốn triển khai dữ liệu có trong số _site đến chi nhánh gh-pages. Vì vậy, bước đầu tiên của bạn sẽ là đặt chi nhánh mặc định cho kho lưu trữ của bạn username.github.com thành các trang gh và không phải master hoặc source (về cơ bản bất kỳ điều gì bạn muốn). Những gì bạn cần làm bây giờ là viết các nhiệm vụ trong Rakefile của bạn sao chép nội dung của _site đến chi nhánh gh-pages. Khi đã xong, bạn có thể tự động hóa thủ tục push hoặc thực hiện thủ công. Bằng cách đó, GitHub sẽ không xây dựng trang web của bạn khi bạn push nhánh mặc định của bạn, thay vào đó, nó sẽ chỉ chạy các trang tĩnh có trong _site.

Nếu bạn muốn hiểu các tập lệnh hoạt động như thế nào, bạn nên xem số Rakefile có trong Octopress. Nó có hai nhiệm vụ được gọi là generatedeploy. Khi bạn chạy rake generate, nó sẽ chạy jekyll --no-auto với thông số để đặt mã vào thư mục có tên _deploy và khi bạn chạy rake deploy, nó sao chép nội dung của _deploy thành chi nhánh gh-pages và thực hiện cam kết. Cá nhân, tôi thích thủ tục này rất nhiều nhưng tôi đã không thực hiện nó trong trang web Jekyll của tôi như vậy.

3

Thử đá quý jgd của mình.Tất cả những gì bạn cần làm là cài đặt và chạy:

gem install jgd 
jgd 

Xong! Trang web của bạn được xây dựng và triển khai thành gh-pages. Ngoài ra jgd tích hợp hoàn hảo với travis-ci hoặc bất kỳ máy chủ CI nào khác.

bài này giải thích cơ chế chi tiết: http://www.yegor256.com/2014/06/24/jekyll-github-deploy.html

+0

Bất kỳ ý tưởng về [này] (http://stackoverflow.com/q/34532476/2404470) – xameeramir

1

Bạn không muốn thực hiện bất kỳ thay đổi các tập tin trong thư mục _site. _site là Jekyll lưu các trang html tĩnh mà nó tạo ra. Chúng sẽ tự động được ghi đè vào lần sau khi máy chủ Jekyll tạo lại trang web. Ví dụ nếu bạn tạo một bài đăng blog mới, máy chủ sẽ thấy tệp mới (hoặc tệp được cập nhật) và sau đó máy chủ sẽ tạo lại các trang tĩnh với nội dung mới trong đó. Đây là cách bài đăng blog mới của bạn ở đầu trang.

Cách tốt nhất là thêm _site vào tệp .gitignore của bạn. Không cần phải đẩy thư mục đó vào repo của bạn, vì nó sẽ bị ghi đè ngay sau khi chúng tấn công các máy chủ của github.

Tôi nghĩ rằng những gì bạn muốn làm là checkout một chi nhánh mới, thực hiện thay đổi và sau đó hợp nhất thành chi nhánh gh-pages.

1

Luồng công việc của bạn phải hoạt động trong chi nhánh phát triển hoặc tính năng, sau đó CHỈ CHỈ chuyển các tệp được tạo thành chi nhánh chính của bạn để chúng được Github Pages phân phát.

Để làm điều này:

  1. Start trong ngành development của bạn với tất cả các thay đổi của bạn đã sẵn sàng để được xây dựng và đăng trực tuyến.
  2. Run trong ngành phát triển của bạn: rm -rf _site (điều này sẽ loại bỏ các tập tin được xây dựng cũ sang thư mục _site)
  3. Run git clone -b master 'git config remote.origin.url' _site (điều này sẽ tạo ra một chi nhánh tổng thể cho các tập tin được xây dựng của bạn)
  4. Run jekyll build (xây dựng trang web của bạn)
  5. cd _site
  6. Nếu bạn có một tên miền tùy chỉnh, đừng 7-8, nếu không bỏ qua bước 9
  7. touch CNAME
  8. Thêm tên miền tùy chỉnh của bạn để mà tập tin CNAME
  9. git add. (Bạn nên có trong tổng thể/chi nhánh _site bây giờ)
  10. git commit
  11. git push

Bây giờ, chỉ có file xây dựng của bạn nên được trên master, các file làm việc của bạn sẽ được chi nhánh development hoặc tính năng của bạn !

tôi vật lộn với điều này trong một thời gian, vì vậy xây dựng một kịch bản nếu bạn muốn sử dụng nó: https://github.com/andimiya/deploy-jekyll-gh-pages

Các vấn đề liên quan