1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/donhui-JENKINS_HOME_BAKCUP

Присоединиться к Gitlife
Откройте для себя и примите участие в публичных проектах с открытым исходным кодом с участием более 10 миллионов разработчиков. Приватные репозитории также полностью бесплатны :)
Присоединиться бесплатно
В этом репозитории не указан файл с открытой лицензией (LICENSE). При использовании обратитесь к конкретному описанию проекта и его зависимостям в коде.
Клонировать/Скачать
Внести вклад в разработку кода
Синхронизировать код
Отмена
Подсказка: Поскольку Git не поддерживает пустые директории, создание директории приведёт к созданию пустого файла .keep.
Loading...
README.md

Автоматическое ежедневное резервное копирование JENKINS_HOME в систему управления версиями SVN

Jenkins — это расширяемый открытый инструмент непрерывной интеграции, который также является одним из самых популярных инструментов этого типа.

Основные возможности Jenkins

  • Легкая установка
  • Легкое конфигурирование
  • Поддержка набора изменений
  • Постоянные ссылки
  • Интеграция с RSS/E-mail/IM
  • После факта тегирование
  • Отчеты тестирования JUnit/TestNG
  • Распределенные сборки
  • Указатель отпечатков файлов
  • Поддержка плагинов

Поддержка плагинов делает Jenkins гибким и расширяемым.

Структура директории JENKINS_HOME

Файлы, связанные с Jenkins, хранятся в файловой системе, а JENKINS_HOME используется для хранения этих файлов, таких как файлы конфигурации системы, плагины, файлы конфигурации каждого задания и т.д.

Структура директории JENKINS_HOME выглядит следующим образом:

 +- config.xml     (корневая конфигурация Jenkins)
 +- *.xml          (другие глобальные файлы конфигурации)
 +- userContent    (файлы в этой директории будут доступны по адресу http://сервер/userContent/)
 +- fingerprints   (хранение записей отпечатков)
 +- plugins        (хранение плагинов)
 +- jobs
     +- [ИМЯ_ЗАДАНИЯ]      (поддиректория для каждого задания)
         +- config.xml     (файл конфигурации задания)
         +- latest         (символическая ссылка на последний успешный сбор)
         +- builds
             +- [ID_СБОРА]     (для каждого сбора)
                 +- build.xml      (сводка результата сборки)
                 +- log            (файл лога)
                 +- changelog.xml  (лог изменения)
+- workspace      (рабочий каталог для системы управления версиями)

Обновление, миграция, резервное копирование или восстановление Jenkins требуют работы с директорией JENKINS_HOME. Для резервного копирования достаточно сделать копию JENKINS_HOME.

Некоторые директории внутри JENKINS_HOME не требуются для резервного копирования, такие как workspace.

Это потому что workspace — это рабочий каталог системы управления версиями, и все файлы в нем могут быть получены из системы управления версиями.

Плагины резервного копирования Jenkins

Jenkins является расширяемым и предлагает множество плагинов, среди которых есть два плагина для резервного копирования: thinBackup и backup.

Плагин thinBackup автоматически создает резервные копии глобальной конфигурации и конфигураций заданий (не включая archive и workspace).

Плагин backup позволяет делать резервные копии JENKINS_HOME, выбирая, какие директории следует включить в резервное копирование (например, workspace, история сборок и т.д.).

Основные различия между плагинами backup и thinBackup заключаются в следующем:

  1. Плагин backup может быть запущен только вручную, в то время как thinBackup может быть настроен на регулярное выполнение.
  2. Плагин backup позволяет выбрать содержимое для резервного копирования, в то время как thinBackup ограничивается важнейшими данными.

Эти два плагина обычно удовлетворяют основные требования к резервному копированию.

Часто серверы непрерывной интеграции используются только для этой цели, и Jenkins установлен на специализированном сервере (например, виртуальной машине). Однако если эта машина выйдет из строя, восстановление займет некоторое время, и восстановление данных будет затруднено (оба плагина выполняют резервное копирование на локальном сервере).

Поэтому для защиты от такого сценария следует выполнять резервное копирование JENKINS_HOME на другом месте.

Резервное копирование JENKINS_HOME в систему управления версиями

Автор выбрал резервное копирование JENKINS_HOME в систему управления версиями SVN:

  1. Выбор системы управления версиями — SVN
  2. Ежедневное автоматическое резервное копирование JENKINS_HOME в SVN
  3. Кроме того, через SVN можно сравнивать изменения между двумя редакциями, просматривать изменения и легко восстанавливать данные

Перед началом резервного копирования необходимо выполнить несколько начальных шагов:

  1. Создайте новую директорию в SVN-версионной базе данных, например, JENKINS_HOME_BAK
  2. Выполните checkout JENKINS_HOME_BAK на сервере Jenkins в определенной папке, например E:/JENKINS_HOME_BAK

Конкретные шаги резервного копирования следующие:

  1. Копируйте JENKINS_HOME в JENKINS_HOME_BAK
  2. Добавьте в SVN файлы и директории, которые еще не находятся под управлением версий (операция svn add)
  3. Пройдитесь по всем файлам и директориям в JENKINS_HOME_BAK и удалите те, которые отсутствуют в JENKINS_HOME (операция svn delete)
  4. Наконец, выполните команду svn commit, чтобы отправить изменения в SVN-версионную базу данных

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

Эти процессные шаги являются повторяющимися и сложными для выполнения вручную, поэтому их следует автоматизировать.

Для автоматизации резервного копирования используются скрипты, которые реализуют вышеупомянутые четыре шага:

  1. Первый шаг реализуется с помощью скриптов Apache Ant

    • Скрипты Apache Ant не только используются для сборки, но и для других задач
    • Ант имеет гибкий синтаксис и множество задач
    • Копирование выполняется с использованием задачи copy Ant, которая использует excludes для исключения файлов и директорий, которые не должны быть скопированы (например, workspace)
    • Задача copy Ant может выполнять инкрементальное копирование
  2. Второй, третий и четвертый шаги реализованы с помощью Python и команд клиента SVN

    • Выбор Python связан с тем, что автор недавно изучил этот язык
    • Выбор команд клиента SVN вместо pysvn связан с проблемами установки pysvn на WindowsКроме того, автоматизация резервного копирования может быть организована путём создания задания Jenkins для периодического выполнения резервного копирования JENKINS_HOME.

Конкретные реализации скриптов представлены здесь:

Дополнительно, ниже указаны используемые инструменты и среды:

* Jenkins 1.592
* Python 2.7.8
* Команды клиента SVN (установлены вместе с TortoiseSVN)
* Apache Ant 1.8.1
* Тестировано на Windows и Linux
* Тестировано на SVN клиенте версий 1.6 и выше

Ссылки

Комментарии ( 0 )

Вы можете оставить комментарий после Вход в систему

Введение

Описание недоступно Развернуть Свернуть
Отмена

Обновления

Пока нет обновлений

Участники

все

Недавние действия

Загрузить больше
Больше нет результатов для загрузки
1
https://api.gitlife.ru/oschina-mirror/donhui-JENKINS_HOME_BAKCUP.git
git@api.gitlife.ru:oschina-mirror/donhui-JENKINS_HOME_BAKCUP.git
oschina-mirror
donhui-JENKINS_HOME_BAKCUP
donhui-JENKINS_HOME_BAKCUP
master