Jenkins để tự động triển khai các ứng dụng ASP.NET


13

Có khả năng tự động hóa / bán tự động triển khai các ứng dụng web ASP.NET bằng Jenkins không. Nó có thể trong môi trường được kiểm soát hoặc không được kiểm soát, đối với người dùng không được kiểm soát cần nhập userid và mật khẩu. Tôi đang tìm cách để sao chép các tập tin từ đích đến đích và chạy các tập lệnh sql trong kịch bản trang trại web.

Chỉnh sửa Hiện tại chúng tôi đang sử dụng các tập tin bat để xcopy / cấu hình nhóm ứng dụng / cml cmd, vv để triển khai ứng dụng. Nhưng để làm việc này, nhóm hỗ trợ sản xuất cần tải xuống mã nguồn, xây dựng dự án và chạy các tệp bat để triển khai ứng dụng.

Bây giờ, chúng tôi muốn tự động hóa việc triển khai mà không cần người dùng tải xuống mã nguồn và người dùng cuối chỉ cần truy cập một url và điền thông số userid và mật khẩu và chọn thẻ svn và nó sẽ được triển khai. Nhưng Jenkins đang chạy dưới đăng nhập ẩn danh, vì vậy tệp bat hiện tại sẽ không hoạt động vì nó không có quyền để chạy tập lệnh.

Vì vậy, tôi muốn biết liệu có tồn tại bất kỳ sự thay thế nào cho loại tình huống này không. Sẽ tốt hơn nếu bối cảnh người dùng bị mạo danh bằng cách sử dụng userid và mật khẩu đã nhập cho phép tệp bó hiện có chạy mà không cần thay đổi thêm. Nếu không thể, chúng tôi cũng muốn khám phá những ý tưởng khác nhưng chúng tôi không linh hoạt chọn một công cụ tự động như con rối, v.v., chúng tôi nên sử dụng các tệp bó này.


Chia sẻ nghiên cứu của bạn giúp mọi người. Hãy cho chúng tôi những gì bạn đã cố gắng và tại sao nó không đáp ứng nhu cầu của bạn. Điều này chứng tỏ rằng bạn đã dành thời gian để cố gắng tự giúp mình, nó giúp chúng tôi tránh nhắc lại các câu trả lời rõ ràng và hầu hết nó giúp bạn có được câu trả lời cụ thể và phù hợp hơn. Xem thêm Cách hỏi
gnat

Cập nhật câu hỏi của tôi, xin vui lòng cho tôi biết nếu tôi cần cung cấp thêm thông tin.
Nắng

Câu trả lời:


11

Tôi sẽ chia sẻ những gì chúng tôi đã sử dụng và nơi chúng tôi dự định sẽ thực hiện, có thể nó sẽ giúp bạn hiểu rõ hơn.

  • Chúng tôi hiện đang sử dụng Jenkins và Github cùng nhau - một khi một thứ gì đó được hợp nhất thành chủ, Github nói với Jenkins và nó khởi động một bản dựng.
  • Chúng tôi sử dụng một kịch bản tiếng Nam trên Jenkins để xây dựng dự án, chạy thử nghiệm đơn vị và nếu mọi thứ có vẻ tốt, nó sẽ khởi động một dự án khác của Jenkins. Tập lệnh Nant cũng tạo ra một thư mục với mã được biên dịch đầy đủ / CSS / JS được thu nhỏ, v.v.
  • Dự án Jenkins thứ cấp lấy đầu ra từ bản dựng và gửi lại cho Github, trên một kho lưu trữ riêng.
  • Một tệp .BAT chạy cứ sau 5 phút trên máy chủ web dàn và về cơ bản nó sẽ kiểm tra các bản cập nhật cho kho lưu trữ đó. Nếu tìm thấy bản cập nhật, chúng tôi tải xuống bản dựng mới nhất, sao lưu các tệp dàn của chúng tôi, sau đó triển khai bản dựng mới nhất vào thư mục dàn.
  • Để phát trực tiếp, chúng tôi có tệp .BAT xử lý sao lưu các tệp trực tiếp và sao chép các tệp lưu trữ qua các tệp trực tiếp. Nó chạy thủ công. Nó không xử lý các bản cập nhật SQL (chúng tôi thực hiện bằng tay).

Bây giờ, rõ ràng điều này không hoàn toàn lý tưởng nhưng nó hiệu quả với chúng tôi. Chúng tôi muốn mở rộng điều này trong tương lai để:

  • Sử dụng Triển khai Web để đẩy các tệp từ Jenkins thẳng lên IIS và thực hiện bất kỳ lệnh nào khác mà chúng tôi cần chạy.
  • Sử dụng di chuyển tự động (một tính năng của Entity Framework) để xử lý tất cả các cập nhật SQL, như một phần của hoạt động trực tiếp.

Nó gần như giống với những gì chúng ta đang theo dõi. Nhưng, tôi tự hỏi liệu Web Deployment có thể cài đặt các dịch vụ windows, v.v. và tất cả những gì cần thiết cho các ứng dụng web phức tạp. Hiện tại, chúng tôi đang sử dụng các công cụ ps và nó hoạt động tốt. Đối với DB, chúng tôi dự định sử dụng công cụ DeployDB.
Nắng

Làm thế nào để bạn xử lý các tình huống khi IIS đang khóa các tập tin? Làm thế nào để bạn xử lý các tình huống khi ai đó đang làm việc với ứng dụng của bạn. Bạn có nhiều nút hoặc chỉ ngắt ứng dụng cho người dùng làm việc tại thời điểm xuất bản không?
Piotr Perak

1
@Peri - Tôi đã quên đề cập đến trong câu trả lời ban đầu của mình, nhưng chúng tôi đang lên kế hoạch có hai máy chủ sản xuất và lật giữa chúng khi cần (sử dụng IIS hoặc nginx). Điều này sẽ cho phép chúng tôi "làm nóng" máy chủ trực tiếp khác khi triển khai, và sau đó chuyển sang nó, do đó không nên có thời gian chết đáng chú ý.
Nicholas

4

Tôi đã sử dụng Jenkins cho các ứng dụng .Net và TFS.

  1. Thêm cấu hình cần thiết trong dự án của bạn và chuyển đổi & đăng ký mã.
  2. Nhận bản mới nhất từ ​​TFS (sử dụng Trình cắm TFS)
  3. Xây dựng Dự án (sử dụng Trình cắm MSBuild). bạn có thể xuất bản mã từ Msbuild bằng cách sử dụng đối số dòng lệnh.
  4. Đồng bộ hóa mã từ vị trí xuất bản đến đích bằng lệnh msdeploy.exe (nằm ở "C: \ Chương trình tệp (x86) \ IIS \ Microsoft Web Triển khai V2 \ msdeploy.exe")
  5. Bạn cũng có thể gửi email và thực hiện sao lưu qua Jenkins.

Bạn cũng có thể sử dụng MSTest.exe để thực hiện kiểm tra đơn vị và hiển thị nó tại bảng điều khiển jenkin hoặc xuất bản kết quả kiểm tra.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.