2008-08-31 28 views
24

Có ai sử dụng Phing để triển khai các ứng dụng PHP không và nếu bạn sử dụng nó thì sao? Chúng tôi hiện có một kịch bản "thiết lập" viết tay mà chúng tôi chạy bất cứ khi nào chúng tôi triển khai một phiên bản mới của dự án của chúng tôi. Chúng tôi chỉ cần kiểm tra từ SVN và chạy nó. Nó thiết lập một số biến cấu hình cơ bản, cài đặt hoặc tải lại cơ sở dữ liệu và tạo một máy chủ lưu trữ v cho cá thể trang web.Bạn có sử dụng Phing không?

Tôi thường nghĩ rằng có lẽ chúng ta nên sử dụng Phing. Tôi đã không sử dụng kiến ​​nhiều, vì vậy tôi không có một ý nghĩa thực sự của những gì Phing là nghĩa vụ phải làm khác hơn là kịch bản sao chép các tập tin từ một nơi khác nhiều như kịch bản thiết lập của chúng tôi không. Một số cách sử dụng nâng cao hơn mà bạn có thể đưa ra các ví dụ để giúp tôi hiểu lý do tại sao chúng tôi sẽ hoặc sẽ không muốn tích hợp Phing vào quy trình của chúng tôi.

Trả lời

16

Từ Federico Cargnelutti của blog post:

tính năng bao gồm chuyển đổi tập tin (ví dụ như thẻ thay thế, XSLT chuyển đổi, Smarty template biến đổi), nộp hoạt động hệ thống, hỗ trợ tương tác xây dựng , thực hiện SQL, CVS hoạt động , các công cụ để tạo các gói PEAR và nhiều hơn nữa.

Tất nhiên bạn có thể viết tập lệnh tùy chỉnh cho tất cả những điều trên. Tuy nhiên, bằng cách sử dụng một công cụ xây dựng chuyên ngành như Phing cung cấp cho bạn một số lợi ích. Bạn sẽ sử dụng một khung đã được chứng minh để thay vì phải lo lắng về việc thiết lập "cơ sở hạ tầng", bạn có thể tập trung vào mã bạn cần viết. Sử dụng Phing cũng sẽ giúp dễ dàng hơn khi các thành viên mới tham gia nhóm của bạn, họ sẽ có thể hiểu những gì đang xảy ra nếu họ đã sử dụng Phing (hoặc Ant, đó là những gì Phing dựa vào) trước đây.

3

Tôi không thấy bất kỳ lý do thuyết phục nào để đi với phing. Ý tôi là, các lập trình PHP nên cố gắng viết lại Eclipse "chỉ vì" nó bằng cách nào đó có thể dễ dàng hơn để viết các trình bổ sung Eclipse trong PHP? Tôi không nghĩ vậy. Ant có tài liệu tốt hơn, bao gồm một số sách đẹp o'reilly, và nó được thiết lập tốt trong vũ trụ Java, vì vậy bạn tránh được các vấn đề của (1) "chúng tôi chưa sao chép tính năng X vào phing" và (và) 2) nguy cơ của dự án phing sẽ chết. Here's một bài viết về cấu hình PHPUnit để làm việc với ant và cruisecontrol: không phải là khó. Và bạn nhận được tích hợp nhật thực miễn phí.

Chúc may mắn!

+4

Vâng, viết lại Eclipse có lẽ không phải là ý tưởng tốt nhất, có cổng Ant trong PHP thực sự là một ý tưởng tuyệt vời. Lý do rất đơn giản: các nhiệm vụ tùy chỉnh, có thể được thực hiện bằng PHP cũ đơn giản (không phải ai cũng biết Java đủ tốt). Ứng dụng xây dựng, thường xuyên hơn, liên quan đến chức năng tùy chỉnh cầu xin tự động và khả năng làm như vậy bằng ngôn ngữ bạn thành thạo - tốt với tôi, nó có thể được coi là một điểm cộng tuyệt vời. P.S. Nếu bạn đang sử dụng Java, thì có thể bạn nên xem Maven :)) –

+0

Tài liệu của Ant không tốt hơn là của Phing. Vâng, tài liệu của Phing thiếu nhiều ví dụ hơn nhưng Ant cũng vậy. – cweiske

+0

Bạn không phải viết lại ANT trong PHP để tạo các tác vụ tùy chỉnh. Tất cả những gì bạn cần là một adaptertask hoặc trình biên dịch cho phép bạn thực thi các script PHP từ ANT. –

7

Tôi đã chuyển từ Ant sang Phing 'chỉ vì' đó là PHP. Tôi sử dụng nó để xuất từ ​​các kho lưu trữ lật đổ khác nhau, sao chép các thứ xung quanh, xây dựng các gói cài đặt khác nhau, v.v. với một tệp xml có thể tái sử dụng 20 dòng và tệp cấu hình với các công cụ cụ thể của dự án. Không có cách nào tôi có thể làm điều đó nhanh chóng với một kịch bản tùy chỉnh. Tôi cũng có kế hoạch tích hợp tạo tài liệu api và thử nghiệm đơn vị. Yêu nó!

7

Câu trả lời hấp dẫn đối với tôi là phing hiểu đường dẫn PHP. Ant thì không. Tôi không muốn có một build.xml ant đầy đủ các lệnh exec. Tôi xảy ra chủ yếu là một lập trình java và vẫn sử dụng phing. Đó là công cụ tốt nhất cho công việc.

+2

UMMM ... để thực thi các tập lệnh PHP với ANT, tất cả những gì bạn cần là "#!/Usr/local/bin/php" (hoặc vị trí của tệp php của bạn) ở đầu tập lệnh PHP của bạn. Sau đó, bạn chỉ cần gọi kịch bản từ ANT như bạn làm cho bất kỳ hoạt động dòng lệnh Linux nào. Bạn có thể giải quyết bất kỳ hoạt động mã tùy chỉnh nào, bao gồm các lệnh SQL từ PHP, theo cách đó. –

3

Chúng tôi sử dụng Phing để triển khai SemanticScuttle:

  • tạo lưu trữ zip để phân phối
  • tạo PEAR gói
  • upload zip để SourceForge
  • cập nhật các PEAR channel với gói tập tin mới
  • làm tài liệu reStructuredText thành các tệp html và tải chúng lên. Hiện tại với exec nhưng tôi đang viết một cách separate task cho nó.

Tải lên tệp zip và kênh được thực hiện qua rsync, tiếc là không được phing hỗ trợ thông qua tác vụ đặc biệt - nhưng việc sử dụng exec luôn có thể và hoạt động tốt.

Cuối cùng, nó tiết kiệm rất nhiều thời gian và chúng tôi có thể kiểm tra, đóng gói và triển khai ứng dụng của chúng tôi với một lệnh duy nhất (cung cấp cho chúng tôi một điểm khác trên Joel Test). Tôi không muốn sống thiếu nó.

Xem build.xml code.