2014-06-26 16 views
8

Tôi hiện đang thiết lập máy chủ xây dựng tại văn phòng của chúng tôi và tôi đã tự hỏi thực tiễn tốt nhất cho việc này là gì. Tôi biết mỗi tình huống yêu cầu một cách tiếp cận khác nhau và có hàng triệu cách để đạt được mục tiêu tương tự, nhưng vì tôi là người mới đến Jenkins và khái niệm về máy chủ xây dựng nói chung, tôi đã tự hỏi liệu tôi có làm điều này không '.Thực hành tốt nhất của Jenkins khi xây dựng với Grunt và triển khai bằng Capistrano là gì?

Công ty chúng tôi tập trung xây dựng trang web cho nhiều khách hàng với nhiều nền tảng khác nhau như WordPress hoặc Magento. Bây giờ tôi có các thiết lập sau:

Chúng tôi đẩy các thay đổi của chúng tôi vào một nhánh chính hoặc nhánh trong Git. Jenkins các cuộc thăm dò các chi nhánh và thực hiện những điều sau khi một sự thay đổi được phát hiện:

  • Kéo kho từ Git (master trong ví dụ này)
  • Thanh toán một chi nhánh gọi build-master
  • Resets chi nhánh này để origin/master
  • Có phải là npm install nếu tìm thấy một số package.json không.
  • Có phải là grunt build nếu tìm thấy Gruntfile.js.
  • (ở đây là chỗ cho những thứ khác như phpunit hoặc casperJS kiểm tra)
  • cam kết thay đổi và đẩy nó trở lại origin/build-master.
  • Thực hiện một cap build-master deploy để cho phép Capistrano xử lý việc triển khai trên máy chủ từ xa.

Bây giờ tôi đã tự hỏi nếu đây là một cách 'chính xác' của việc sử dụng máy chủ xây dựng. Tôi gặp phải một số vấn đề logic. Ví dụ:

Nhà cung cấp phần mềm chẳng hạn. Khi tôi có nhiều thư viện JS với Bower chẳng hạn (được đặt trong một git-ignore js/vendor -folder), tôi có thể nối và làm xáo trộn chúng thành tệp JS được rút gọn để chúng git cam kết vào build-master -repository (cho Capistrano). Nhưng khi tôi có các thư viện PHP (với Composer chẳng hạn), tôi không chắc chắn cách xử lý vấn đề này. Đây được đặt trong một git-bỏ qua php/vendor -folder, nhưng họ cần phải được bao gồm trong các build-master -branch để được triển khai trên máy chủ trực tiếp. Hiện tại, tôi đang thực hiện việc này bằng cách thêm .gitignore.build vào kho lưu trữ của tôi, bao gồm php/vendor -folder và ghi đè số hiện có .gitignore bằng cái này trước khi cam kết và đẩy đến origin/build-master.

Và/hoặc:

Biên soạn file. Khi tôi không muốn bao gồm một số tệp (ví dụ như các tệp CSS được tạo từ SASS), tôi đặt các tệp này trong .gitignore. Nhưng một lần nữa, khi Capistrano sẽ triển khai nó, tôi muốn tập tin CSS được biên dịch, concatinated và rút gọn trong kho của tôi, nếu không nó không được đưa vào máy chủ sản xuất của tôi.

Bất cứ ai có thể cho tôi biết liệu tôi có đang xây dựng và triển khai theo cách 'phải' không? Hay tôi hoàn toàn quá phức tạp ở đây cho tôi? Tôi thực sự quan tâm đến cách những người có nhiều kinh nghiệm hơn với điều này đang sử dụng Jenkins, Grunt, Bower, Composer, Capistrano, vv trong quá trình xây dựng của họ.

+0

Một điều tôi đã tự hỏi là cam kết các tệp nhị phân. Kể từ khi bạn làm điều đó, tôi tự hỏi nếu bạn làm việc để đảm bảo thanh toán của một dev vẫn mỏng, mà không có các nhị phân? – AnneTheAgile

Trả lời

0


Tôi đang tìm câu trả lời giống hệt nhau. Tôi đang ở trong tình trạng tương tự, và tự hỏi làm thế nào điều này có thể được thực hiện với cấu hình khởi động tốt nhất.
Vì bạn đang băn khoăn về việc sử dụng grunt để triển khai, có hướng dẫn này hữu ích cho bạn, tôi hy vọng điều này sẽ đưa ra ý tưởng bắt đầu: https://weluse.de/blog/continuous-deployment-with-yeoman-and-jenkins.html
Ngoài ra, tôi quan tâm nếu bạn có bất kỳ phản hồi nào từ hiện tại của mình dự án.

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