Назад | Перейти на главную страницу

Решение для сборки Jenkins с помощью Amazon EC2 - Как сохранить состояние между сборками

Я пытаюсь перенести среду сборки на EC2 с помощью Jenkins. Мне нужно проверять много исходного кода каждый раз, поэтому я хочу постоянно сохранять исходный код между сборками.

Это было бы легко, если бы Дженкинс останавливал / запускал экземпляры EC2, когда они ему нужны (поскольку я мог бы просто связать AMI с корневым томом EBS). Но Jenkins завершает экземпляры, когда они не используются.

Я попытался создать отдельный том EBS и подключить его к экземпляру EC2 с помощью команд запуска с Jenkins, и проблема заключается в том, что том EBS и экземпляр EC2 могут находиться в разных зонах доступности. А Дженкинс не может контролировать зону доступности при запуске экземпляра.

Итак, есть ли способ сохранить состояние между сборками с помощью интерфейса Jenkins / EC2. Возможно, снимки?

Видеть это не вопрос от меня для большего контекста.

Я взглянул на исходный код Дженкинса, и это разумное исправление. Не потребуется много времени на взлом, чтобы добавить возможность выбора зоны доступности в регионе или изменить завершение на простую остановку. Я считаю, что это лучший подход.

Если будет достаточно мотивации, я могу опубликовать патч. Исходный код находится на https://github.com/jenkinsci/ec2-plugin/ если вы умеете пользоваться Java.

Я бы посоветовал взглянуть на инструмент управления развертыванием для этого. Растущее число людей в поддон сообщество использует его вместе с Jenkins, чтобы делать именно то, что вы описываете.

Pallet - это среда закрытия, аналогичная Chef / Puppet, которая использует JClouds для взаимодействия с Amazon, Rackspace или другими облачными провайдерами. Использование Maven Pallet может быть вызвано Jenkins для развертывания всего кластера, если это необходимо для запуска набора тестов. Сделать то, что вы описываете, было бы вполне возможно, но в настоящее время для реализации потребуются некоторые конкретные знания о работе JClouds и Pallet.

Если все, что вам нужно сделать, это именно то, что вы описали, модификация плагина ec2, вероятно, лучший способ. Если вам нужно продвинуться немного дальше и вам нужны поддерживаемые экземпляры, вы можете взглянуть на Pallet + Jenkins.