TeamCity состоит из двух частей – директории/файлы в файловой системе, и база данных.
Рабочая директория сервера:
$ tree -d -L 1 -a .BuildServer/
.BuildServer/
├── config
├── lib
├── plugins
└── system
Располагается, как правило, в домашней директории пользователя, от которого работает сам TeamCity, например:
$ pwd /home/teamcity/.BuildServer
Подробнее – в статье TeamCity: структура и описание рабочей директории сервера — BuildServer.
База данных (в случае использования базы HSQLDB) представлена скриптами:
$ ls -lh ~/.BuildServer/system/ | grep build -rw-rw-r-- 1 teamcity teamcity 16M Nov 30 15:27 buildserver.data -rw-rw-r-- 1 teamcity teamcity 16 Nov 30 15:57 buildserver.lck -rw-rw-r-- 1 teamcity teamcity 49K Nov 30 15:56 buildserver.log -rw-rw-r-- 1 teamcity teamcity 85 Nov 30 15:29 buildserver.properties -rw-rw-r-- 1 teamcity teamcity 36K Nov 30 15:29 buildserver.script drwxrwxr-x 2 teamcity teamcity 4.0K Nov 30 15:29 buildserver.tmp
О назначении каждого скриптов можно прочитать тут>>>.
TeamCity поддерживает три способа создания резервной копии:
– из веб-интерфейса;
– с помощью командной строки и утилиты maintainDB
;
– полностью ручной.
Мы будем использовать скрипт maintainDB.sh
. Располагается он в каталоге /bin
директории, в которую был установлен TeamCity.
Для получения справки – выполните:
$ ./TeamCity/bin/maintainDB.sh
без команд и опций.
Для создания архива сервера полезными будут следующие опции команды backup
:
-S <source-db-settings>
– в случае, если используется база данных не HSQLDB, или используется не стандартный файл настроек – укажите его при помощи этой опции;
-F <backup-archive-file>
– путь и имя архива (без расширения), в который мы будем сохраняться наш бекап;
-M
– добавить указание времени создания бекапа к его имени;
-C
– включить в бекап конфигурации проектов;
-D
– включить в бекап базу данных;
--basic
– добавить настройки билдов, базу данных и плагины в бекап;
--all
– то же самое, плюс персональные изменения и логи.
Полное описание процесса создания backup
-копии сервера TeamCIty – тут>>>.
Что НЕ будет сохранено в бекапе по-умолчанию:
– артефакты билдов;
– данные сторонних плагинов;
– все ручные изменения;
– лог-файлы.
Выполним полное копирование в файл.
Находясь в каталоге bin
, выполняем:
$ ./maintainDB.sh backup --all -M -F /home/teamcity/backups/TeamCity
В случае ошибки такого вида:
Failed: Unexpected exception SQLException/HsqlException: SQL error when doing: Connecting to HSQL2 SQL query: connect SQL exception: Database lock acquisition failure: lockFile: org.hsqldb.persist.LockFile@fb91050c[file =/home/teamcity/.BuildServer/system/buildserver.lck, exists=true, locked=false, valid=false, ] method: checkHeartbeat read: 2013-11-30 13:31:11 heartbeat - read: -2443 ms.
Остановите сервер:
$ ./teamcity-server.sh stop
Ошибка может возникать, если имеются отложенные задания, или задания в очереди.
Так же – лучше остановить и build
-агент, если он работает на этом же хосте:
$ ~/TeamCity/buildAgent/bin/agent.sh stop
Снова запускаем:
$ ./maintainDB.sh backup --all -M -F /home/teamcity/backups/TeamCity TeamCity maintenance tool. Copyright 2013 JetBrains s.r.o. All Rights Reserved. Command line arguments: backup --all -M -F /home/teamcity/backups/TeamCity TeamCity Data Directory path is determined using the user home directory Using TeamCity data directory: /home/teamcity/.BuildServer Using internal database. Using source database database type: HSQLDB2 database driver: <not specified> connection: jdbc:hsqldb:file:/home/teamcity/.BuildServer/system/buildserver [...] Exporting TeamCity data directory: Exporting build logs Exporting TeamCity data directory: Exporting personal changes Finalizing export... Export has completed successfully. Backup file created: /home/teamcity/backups/TeamCity_20131130_152705.zip Backup finished Done.
Проверим наличие архива:
$ file /home/teamcity/backups/TeamCity_20131130_152705.zip /home/teamcity/backups/TeamCity_20131130_152705.zip: Zip64 archive data, at least v3.0 to extract
Запускаем сервер:
$ ./teamcity-server.sh start
Готово, резервное копирование TeamCity вместе с базой данных завершено.