Содержание

TeamCity

Установка

Скачиваем последний TeamCity, распаковываем и устанавливаем разрешения (на примере v8.1.2):

wget -P /tmp http://download.jetbrains.com/teamcity/TeamCity-8.1.2.tar.gz
sudo tar -C /var/www -xzf /tmp/TeamCity-*.tar.gz
sudo mv /var/www/TeamCity /var/www/teamcity
sudo chown www-data -R /var/www/teamcity

Если необходимо поменять порты, то это можно сделать в /var/www/teamcity/conf/server.xml

Создаем скрипт запуска /etc/init.d/teamcity:

teamcity
#!/bin/sh
# /etc/init.d/teamcity -  startup script for teamcity
export TEAMCITY_DATA_PATH="/var/www/teamcity/.BuildServer"
 
case $1 in
start)
start-stop-daemon --start  -c www-data --exec /var/www/teamcity/bin/teamcity-server.sh start;;
 
stop)
start-stop-daemon --start -c www-data  --exec  /var/www/teamcity/bin/teamcity-server.sh stop;;
 
esac
 
exit 0

Делаем его запускаемым и помещаем в автозагрузку:

sudo chmod 0755 /etc/init.d/teamcity
sudo update-rc.d teamcity defaults

Устанавливаем openjdk8 (openjdk поддерживается oфф.):

sudo apt-get install openjdk-8-jdk

или

добавляем репозиторий с последним oracle-java8:

sudo apt-get purge openjdk*
sudo add-apt-repository ppa:webupd8team/java
sudo apt-get update

и устанавливаем oracle-java8:

sudo apt-get install oracle-java8-installer

Запускаем TeamCity:

sudo /etc/init.d/teamcity start

и настраиваем на порту 8111 (по умолчанию).

http://blog.ttgame.ru/ustanovka-i-nastroyka-teamcity-pod-ubuntu/

Работа через прокси

Для исходящих запросов по http и https, добавляем в:

Administration → Diagnostics → Internal Properties

teamcity.http.nonProxyHosts=localhost|*.domain.com
teamcity.http.proxyHost=d2proxy.domain.com
teamcity.http.proxyPort=3128
teamcity.https.nonProxyHosts=localhost|*.domain.com
teamcity.https.proxyHost=d2proxy.domain.com
teamcity.https.proxyPort=3128

https://confluence.jetbrains.com/pages/viewpage.action?pageId=113084582#HowTo...-ConfigureTeamCitytoUseProxyServerforOutgoingConnections

Apache

Устанавливаем apache и его модули для проксирования:

sudo apt-get install libapache2-mod-proxy-html libapache2-mod-gnutls
sudo a2enmod proxy
sudo a2enmod proxy_http
sudo /etc/init.d/apache2 restart

Создаем сайт /etc/apache2/sites-available/teamcity.conf:

server {
    server_name teamcity.domain.com;
    listen 80;

    client_max_body_size 500M;

    access_log /var/log/nginx/teamcity_access.log;
    error_log /var/log/nginx/teamcity_error.log;

    location / {
      proxy_pass http://127.0.0.1:8111;
      proxy_set_header Host $host;
      proxy_set_header X-Real-IP $remote_addr;
      proxy_set_header X-Forwarded-for $remote_addr;
      port_in_redirect off;
      proxy_redirect http://127.0.0.1:8111/ /;
      proxy_connect_timeout 600;
    }
}

Добавляем сайт:

sudo a2ensite teamcity
sudo service apache2 reload

Nginx

Создаем сайт /etc/nginx/sites-available/teamcity:

map $http_upgrade $connection_upgrade {
    default upgrade;
    '' '';
}
server {
    server_name teamcity.domain.com;
    listen 80;

    proxy_read_timeout     1200;
    proxy_connect_timeout  240;
    client_max_body_size   500M;

    access_log /var/log/nginx/teamcity_access.log;
    error_log /var/log/nginx/teamcity_error.log;

    location / {
      proxy_pass http://127.0.0.1:8111;
      proxy_http_version  1.1;
      proxy_set_header    Host $server_name:$server_port;
      proxy_set_header    X-Forwarded-Host $http_host;
      proxy_set_header    X-Forwarded-Proto $scheme;
      proxy_set_header    X-Forwarded-For $remote_addr;
      proxy_set_header    Upgrade $http_upgrade;
      proxy_set_header    Connection $connection_upgrade;
    }
}

Подключаем сайт:

sudo ln -s /etc/nginx/sites-available/teamcity /etc/nginx/sites-enabled/
sudo service nginx reload

https://confluence.jetbrains.com/pages/viewpage.action?pageId=113084582#HowTo...-NGINX

Tomcat

После добавления проксирования через apache или nginx в /var/www/teamcity/conf/server.xml раскоментируем:

<Valve
    className="org.apache.catalina.valves.RemoteIpValve"
    remoteIpHeader="x-forwarded-for"
    protocolHeader="x-forwarded-proto"
    internalProxies="127\.0\.0\.1"
    />

https://confluence.jetbrains.com/display/TCD10/How+To...#HowTo...-Proxy-Tomcat-RemoteIpValve%22RemoteIpValve%22Approach

Внешние базы данных

Создаем базу:

export TEAMCITY_DB_PW=`dd if=/dev/urandom bs=1 count=32 2>/dev/null | base64 - | cut -c2-18`
mysql -u root -e "CREATE DATABASE teamcity default charset utf8;\
GRANT ALL PRIVILEGES ON teamcity.* TO teamcity@localhost IDENTIFIED BY '${TEAMCITY_DB_PW}';\
FLUSH PRIVILEGES;" -p
  1. Скачиваем последний mysql-connector http://dev.mysql.com/downloads/connector/j/ (Platform Independet)
  2. Перемещаем mysql-connector-java-*-bin.jar из архива в /var/www/teamcity/.BuildServer/lib/jdbc

Добавляем под «# * InnoDB» в /etc/mysql/mariadb.conf.d/50-server.cnf:

innodb_flush_log_at_trx_commit=2
innodb_log_file_size=1024M
innodb_buffer_pool_size=2000M
binlog-format=mixed

и приводим к виду кодировку:

character-set-server  = utf8
collation-server      = utf8_general_ci

https://confluence.jetbrains.com/display/TCD10/Setting+up+an+External+Database#SettingupanExternalDatabase-MySQL
https://confluence.jetbrains.com/pages/viewpage.action?pageId=74845225#HowTo...-ConfigureNewlyInstalledMySQLServer

Интеграция с LDAP/AD

https://confluence.jetbrains.com/display/TCD10/LDAP+Integration

Upgrade

  1. Сделать backup
  2. Останавить TeamCity
  3. Удалить рабочую директорию TeamCity
  4. Устанавить новый TeamCity
  5. Запустить TeamCity
  6. Сделать первую инициализацию (перейти по web для создания директории .BuildServer)
  7. Останавить TeamCity
  8. Копировать из бэкапа директорию config в .BuildServer
  9. Установить необходимые права на .BuildServer/config (www-data)
  10. Запустить TeamCity
  11. Перейти по web и следовать инструкции

Backup / Restore

Резервирование

Бэкап средствами TeamCity:

#export JAVA_HOME=/usr/lib/jvm/java-8-oracle/jre #Oracle Java
export JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64/jre #OpenJDK
/var/www/teamcity/bin/maintainDB.sh backup -A /var/www/teamcity/.BuildServer --all

Быкапы хранятся в /var/www/teamcity/.BuildServer/backup

https://confluence.jetbrains.com/display/TCD10/Creating+Backup+via+maintainDB+command-line+tool

Восстановление

Извлекаем из архива файл настроек и mysql-connector:

unzip -d /tmp TeamCity_Backup_20141201_105532.zip lib/jdbc/* config/database.properties
mkdir /var/www/teamcity/.BuildServer
mv /tmp/lib /var/www/teamcity/.BuildServer
#export JAVA_HOME=/usr/lib/jvm/java-8-oracle/jre #Oracle Java
export JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64/jre #OpenJDK
sudo /var/www/teamcity/bin/maintainDB.sh restore -A /var/www/teamcity/.BuildServer -F ~/TeamCity_Backup_20141201_105532.zip -T /tmp/config/database.properties
sudo chown www-data -R /var/www/teamcity/.BuildServer/
rm -rf /tmp/config

https://confluence.jetbrains.com/display/TCD10/Restoring+TeamCity+Data+from+Backup

Зависимости

  1. Mercurial
  2. C:\Program Files\Mercurial\default.d\extensions.rc:
    [extensions]
    purge = 
  3. IIS
  4. IIS Managment Scripts and Tools:
    install-WindowsFeature -name Web-Scripting-Tools
  5. Windows Identity Foundation
  6. Region → Administratirve → Current language for non-Unicode programs: Russian(Russia)
  7. SQL Server Compact
  8. Access Database Engine x32
  9. OLE DB Provider for Visual FoxPro
  10. .NET Framework 4.5.1 SDK
  11. Создаём символьную ссылку
    mklink /j C:\Windows\assembly\GAC_MSIL\Microsoft.SqlServer.SqlClrProvider\10.0.0.0__89845dcd8080cc91 C:\Windows\assembly\GAC_MSIL\Microsoft.SqlServer.SqlClrProvider\11.0.0.0__89845dcd8080cc91

Ошибки

hg: unknown command «purge» - 2 пункт
import-module : The specified module 'WebAdministration' was not loaded - 4 пункт (отсутствует C:\Windows\system32\inetsrv\Microsoft.Web.Administration.dll)
error CS0234: The type or namespace name 'IdentityModel' does not exist in the namespace 'Microsoft' - 5 пункт
Проблемы с кодировкой имен файлов (кириллица) - 6 пункт
error CS0234: The type or namespace name 'SqlServerCe' does not exist in the namespace 'System.Data' - 7 пункт
The 'Microsoft.ACE.OLEDB.12.0' provider is not registered on the local machine. - 8 пункт
The 'VFPOLEDB.1' provider is not registered on the local machine. - 9 пункт
warning MSB3644: The reference assemblies for framework «.NETFramework,Version=v4.5.1» were not found - 10 пункт
Could not load file or assembly 'Microsoft.SqlServer.SqlClrProvider, Version=10.0.0.0, Culture=neutral, PublicKeyToken=89845dcd8080cc91' or one of its dependencies - 11 пункт warning MSB3644: The reference assemblies for framework «.NETFramework,Version=v4.0» were not found.