Дженкінс для автоматизації розгортання програм ASP.NET


13

Чи є можливість автоматизувати / напівавтоматизувати розгортання веб-додатків ASP.NET за допомогою Дженкінса. Він може знаходитись у контрольованому та неконтрольованому середовищі, оскільки для неконтрольованих користувачів потрібно ввести userid та пароль. Я шукаю способи скопіювати файли з цільового пункту до пункту призначення та запустити сценарії sql у сценарії веб-ферми.

Редагувати В даний час ми використовуємо файли bat для xcopy / налаштування пулу програм / sql cmd тощо для розгортання програми. Але для цього команді для підтримки виробництва потрібно завантажити вихідний код, створити проект та запустити файли bat для розгортання програми.

Тепер ми хочемо автоматизувати розгортання без завантаження користувачем вихідного коду, а кінцевому користувачеві просто необхідно відвідати URL-адресу та заповнити параметри користувача і пароля та вибрати тег svn, і він повинен бути розгорнутий. Але Дженкінс працює за анонімним входом, тому існуючий файл bat не працюватиме, оскільки у нього немає дозволів на запуск сценарію.

Отже, я хотів би знати, чи існують альтернативи для подібної ситуації. Буде добре, якщо контекст користувача буде представлений особою за допомогою введеного userid та пароля, що дозволить існуючому пакетному файлу працювати без додаткових змін. Якщо це неможливо, ми також хотіли б вивчити інші ідеї, але у нас немає гнучкості для вибору автоматизованого інструменту, такого як лялька тощо, ми повинні дотримуватися цих пакетних файлів.


Обмін дослідженнями допомагає всім. Розкажіть, що ви пробували і чому це не відповідало вашим потребам. Це свідчить про те, що ви знайшли час, щоб спробувати допомогти собі, це позбавляє нас від повторення очевидних відповідей, а найбільше це допомагає вам отримати більш конкретну та релевантну відповідь. Також дивіться Як запитувати
gnat

Оновіть моє запитання, будь ласка, повідомте мене, чи потрібно мені надати додаткову інформацію.
Сонячно

Відповіді:


11

Я поділюся тим, що ми використовували, і куди ми плануємо поїхати, можливо, це допоможе вам краще зрозуміти.

  • В даний час ми використовуємо Дженкінса і Гітбуба разом - як тільки щось об'єднано в майстра, Гітбб каже Дженкінсу, і це починає складати.
  • Ми використовуємо сценарій Nant на Jenkins для створення проекту, проведення тестів на одиниці, і якщо все виглядає добре, це починає черговий проект Jenkins. Сценарій Nant також випилює каталог із повністю складеним кодом / мінімізований CSS / JS тощо.
  • Вторинний проект Дженкінса бере висновок з збірки і відправляє його назад до Github, в окремий сховище.
  • Файл .BAT запускається кожні 5 хвилин на веб-сервері інсценізації, і він в основному перевіряє наявність оновлень цього сховища. Якщо знайдено оновлення, ми завантажуємо останню збірку, створюємо резервну копію файлів постановки, а потім розгортаємо новітню збірку до папки інсценізації.
  • Щоб перейти у прямому ефірі, у нас є .BAT-файл, який обробляє резервне копіювання живих файлів та копіює файли репозиторію через живі файли. Запускається вручну. Він не обробляє оновлення SQL (ми робимо це вручну).

Очевидно, це не зовсім ідеально, але це працює для нас. Ми хочемо в майбутньому розширити це на:

  • Використовуйте веб-розгортання, щоб перемістити файли з Дженкінса прямо в IIS, і виконувати будь-які інші команди, які нам потрібно виконати.
  • Використовуйте автоматичні міграції (особливість Entity Framework) для обробки всіх оновлень SQL, як частини роботи в прямому ефірі.

Це майже те саме, що ми стежимо. Але я поцікавився, чи може Web Deploy встановити служби Windows тощо, і все, що потрібно для складних веб-додатків. В даний час ми використовуємо інструменти ps та його прекрасний робочий стан. Для БД ми плануємо використовувати інструмент DeployDB.
Сонячно

Як ви вирішуєте ситуації, коли IIS блокує файли? Як вирішувати ситуації, коли хтось працює з вашим додатком. Чи є у вас кілька вузлів або просто зламаєте програму для користувачів, які працюють на момент публікації?
Пьотр Перак

1
@Peri - я забув згадати у своїй оригінальній відповіді, але ми плануємо мати два виробничі сервери та перегортати між ними, коли потрібно (використовуючи IIS або nginx). Це дозволить нам «розігріти» інший живий сервер, коли відбувається розгортання, а потім переключимось на нього, так що не повинно бути помітного простою.
Миколай

4

Я вже використовую Jenkins для .Net додатків і TFS.

  1. Додайте необхідну конфігурацію у свій проект та код перетворення та реєстрації.
  2. Отримайте останню інформацію від TFS (використовуйте TFS Plug-in)
  3. Створіть проект (використовуйте плагін MSBuild). ви можете опублікувати код з Msbuild, використовуючи аргументи командного рядка.
  4. Синхронізуйте код з місця публікації до місця призначення за допомогою команди msdeploy.exe (розташована за адресою "C: \ Program Files (x86) \ IIS \ Microsoft Web Deploy V2 \ msdeploy.exe")
  5. Ви можете надсилати електронні листи та робити резервну копію і через Дженкінс.

Ви також можете використовувати MSTest.exe, щоб виконати тест одиниці та показати його на консолі jenkin або також опублікувати результат тесту.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.