2016-06-10 5 views
1

У меня есть по существу та же проблема, обсуждаемая здесь buildbot scheduler not work, но ответ не может применить - возможно потому, что у меня есть новая версия BuildBotBuildBot планировщик не работает

>buildbot --version 
Buildbot version: 0.8.12 
Twisted version: 16.2.0 

работает на Windows 7 64- немного.

Я бы хотел, чтобы svn commit запускал сборщики buildbot, но вместо этого строитель настраивает только периодический планировщик (когда он включен). Журнал показывает

2016-06-10 11:40:18-0700 [-] SVNPoller: polling 
2016-06-10 11:40:18-0700 [-] SVNPoller: svnurl=file:///G:/buildbot/buildbot_repo/trunk/triggers_for_testing, root=file:///G:/buildbot/buildbot_repo, so prefix=trunk/triggers_for_testing 
2016-06-10 11:40:18-0700 [-] SVNPoller: starting at change 31 
2016-06-10 11:40:18-0700 [-] SVNPoller: _process_changes None .. 31 
2016-06-10 11:40:18-0700 [-] SVNPoller: finished polling None 
2016-06-10 11:40:38-0700 [-] SVNPoller: polling 
2016-06-10 11:40:38-0700 [-] SVNPoller: _process_changes 31 .. 32 
2016-06-10 11:40:38-0700 [-] Adding change revision 32 
2016-06-10 11:40:38-0700 [-] SVNPoller: finished polling None 

Но планировщик не запускает строителей.

Ответ на указанный выше вопрос гласит, что в журнал должны входить записи «добавлено изменение Изменить (...», если SVNPoller работает, а затем советует, что искать в этих записях. Мой журнал не включает такие . записи

Ниже приведены надрез в master.cfg и (хвост) twistd.log файлы Любая помощь наиболее ценится

надрез из master.cfg:..

# -*- python -*- 
# ex: set syntax=python: 

_test_buildbot   = False # Set to True to use configuration settings that facilicate testing 
_poll_test_repository  = True # Set to True to enable testing of an SVNPoller and SingleBranchScheduler monitoring the local repository "file:///G:/buildbot/buildbot_repo/trunk/triggers_for_testing". 
_hypersensitive_SVNPoller = True # Set to True to facilicate testing of the SVNPoller and SingleBranchScheduler, making them poll frequently and look for changes *anywhere*. 


# This is a sample buildmaster config file. It must be installed as 
# 'master.cfg' in your buildmaster's base directory. 

# This is the dictionary that the buildmaster pays attention to. We also use 
# a shorter alias to save typing. 
c = BuildmasterConfig = {} 

####### STEPS 
<SNIPPED...> 

####### BUILDSLAVES 
from buildbot import buildslave 
from buildbot.schedulers.basic import SingleBranchScheduler 
from buildbot.changes import filter 

# The 'slaves' list defines the set of recognized buildslaves. Each element is 
# a BuildSlave object, specifying a unique slave name and password. The same 
# slave name and password must be configured on the slave. 
c['slaves'] = [ buildslave.BuildSlave("win64-worker", "pass"), 
       buildslave.BuildSlave("centos7-worker", "pass"), 
       ] 

# 'protocols' contains information about protocols which master will use for 
# communicating with slaves. 
# You must define at least 'port' option that slaves could connect to your master 
# with this protocol. 
# 'port' must match the value configured into the buildslaves (with their 
# --master option) 
c['protocols'] = {'pb': {'port': 9989}} 

####### SCHEDULERS 
from buildbot.schedulers.timed import Periodic 

# Configure the Schedulers, which decide how to react to incoming changes. In this 
# case, just kick off a 'ifort_win32_build', 'ifort_win64_build', gfortran_win64_build, and gfortran_centos7_build builds 

# define the dynamic scheduler 
trunk_sf_codechanged = SingleBranchScheduler(name = "trunk_sf_codechanged", 
            change_filter = filter.ChangeFilter(
                 repository = "svn://kraken", 
                 branch = None if _hypersensitive_SVNPoller else "trunk/sf_code", 
                 ), 
            treeStableTimer = 1 * 30 if _test_buildbot else 10 * 60, 
            builderNames = ["ifort_win32_build", 
                "ifort_win64_build", 
                "gfortran_win64_build", 
                "gfortran_centos7_build", 
                ], 
              ) 
triggers_for_testing_changed = SingleBranchScheduler(name = "test_triggers_changed", 
            change_filter = filter.ChangeFilter(
                 repository = "file:///G:/buildbot/buildbot_repo/trunk/triggers_for_testing", 
                 branch = None, 
                 ), 
            treeStableTimer = 1 * 20, 
            builderNames = ["ifort_win32_build", 
                "ifort_win64_build", 
                "gfortran_win64_build", 
                "gfortran_centos7_build", 
                ], 
              ) 

# define the periodic scheduler 
periodicscheduler = Periodic(name = "Every 4 Days", 
          builderNames = ["ifort_win32_build", 
              "ifort_win64_build", 
              "gfortran_win64_build", 
              "gfortran_centos7_build", 
              ], 
          periodicBuildTimer = 10*60 if _test_buildbot else 4*24*60*60, 
          ) 

# define the available schedulers 
c['schedulers'] = [ 
        trunk_sf_codechanged, 
        ] 
if _poll_test_repository: 
    c['schedulers'].append(triggers_for_testing_changed) 
if _test_buildbot: 
    c['schedulers'].append(periodicscheduler) 

####### CHANGESOURCES 
from buildbot.changes.svnpoller import SVNPoller, split_file_branches 
from twisted.python import log 

# the 'change_source' setting tells the buildmaster how it should find out 
# about source code changes. 

svn_nwra_mry_poller = SVNPoller(svnurl = "svn://kraken" if _hypersensitive_SVNPoller else "svn://kraken/trunk/sf_code", 
         svnuser = "buildbot", 
         svnpasswd = "buildbot", 
         svnbin = 'C:/Program Files/TortoiseSVN/bin/svn.exe', 
         pollinterval = 1 * 20 if _test_buildbot else 10 * 60, 
         split_file = split_file_branches) 

test_trigger_poller = SVNPoller(svnurl = "file:///G:/buildbot/buildbot_repo/trunk/triggers_for_testing", 
         svnuser = "buildbot", 
         svnpasswd = "buildbot", 
         svnbin = 'C:/Program Files/TortoiseSVN/bin/svn.exe', 
         pollinterval = 1 * 20, 
         split_file = split_file_branches) 

c['change_source'] = [ 
         svn_nwra_mry_poller, 
        ] 
if _poll_test_repository: 
    c['change_source'].append(test_trigger_poller) 

<SNIPPED...> 

хвост twistd.log:

2016-06-10 10:39:26-0700 [-] BuildMaster is running 
2016-06-10 10:39:26-0700 [-] Main loop terminated. 
2016-06-10 10:39:26-0700 [-] Server Shut Down. 
2016-06-10 10:39:26-0700 [-] Server Shut Down. 
2016-06-10 11:33:48-0700 [-] Loading buildbot.tac... 
2016-06-10 11:33:48-0700 [-] Loaded. 
2016-06-10 11:33:48-0700 [-] twistd 16.2.0 (C:\Users\buildbot\AppData\Local\Programs\WinPython-64bit-2.7.10.3\python-2.7.10.amd64\python.exe 2.7.10) starting up. 
2016-06-10 11:33:48-0700 [-] reactor class: twisted.internet.selectreactor.SelectReactor. 
2016-06-10 11:33:48-0700 [-] Starting BuildMaster -- buildbot.version: 0.8.12 
2016-06-10 11:33:48-0700 [-] Loading configuration from 'G:\\buildbot\\master\\master.cfg' 
2016-06-10 11:33:49-0700 [-] Setting up database with URL 'sqlite:///state.sqlite' 
2016-06-10 11:33:49-0700 [-] setting database journal mode to 'wal' 
2016-06-10 11:33:49-0700 [-] Using SQLite Version (3, 6, 21) 
2016-06-10 11:33:49-0700 [-] NOTE: this old version of SQLite does not support WAL journal mode; a busy master may encounter 'Database is locked' errors. Consider upgrading. 
2016-06-10 11:33:49-0700 [-] adding 2 new changesources, removing 0 
2016-06-10 11:33:49-0700 [-] adding 2 new slaves, removing 0 
2016-06-10 11:33:49-0700 [-] adding 4 new builders, removing 0 
2016-06-10 11:33:49-0700 [-] trying to load status pickle from G:\buildbot\master\ifort_win32_build\builder 
2016-06-10 11:33:49-0700 [-] added builder ifort_win32_build with tags None 
2016-06-10 11:33:49-0700 [-] trying to load status pickle from G:\buildbot\master\gfortran_win64_build\builder 
2016-06-10 11:33:49-0700 [-] added builder gfortran_win64_build with tags None 
2016-06-10 11:33:49-0700 [-] trying to load status pickle from G:\buildbot\master\gfortran_centos7_build\builder 
2016-06-10 11:33:49-0700 [-] added builder gfortran_centos7_build with tags None 
2016-06-10 11:33:49-0700 [-] trying to load status pickle from G:\buildbot\master\ifort_win64_build\builder 
2016-06-10 11:33:49-0700 [-] added builder ifort_win64_build with tags None 
2016-06-10 11:33:49-0700 [-] PBServerFactory starting on 9989 
2016-06-10 11:33:49-0700 [-] Starting factory <twisted.spread.pb.PBServerFactory instance at 0x00000000056AF508> 
2016-06-10 11:33:49-0700 [-] adding scheduler 'test_triggers_changed' 
2016-06-10 11:33:49-0700 [-] adding scheduler 'trunk_sf_codechanged' 
2016-06-10 11:33:49-0700 [-] WebStatus using (G:\buildbot\master\public_html) 
2016-06-10 11:33:49-0700 [-] RotateLogSite starting on 8010 
2016-06-10 11:33:49-0700 [-] Starting factory <buildbot.status.web.baseweb.RotateLogSite instance at 0x0000000005711208> 
2016-06-10 11:33:49-0700 [-] Setting up http.log rotating 10 files of 10000000 bytes each 
2016-06-10 11:33:49-0700 [-] BuildMaster is running 
2016-06-10 11:34:09-0700 [-] SVNPoller: polling 
2016-06-10 11:34:09-0700 [-] SVNPoller: svnurl=file:///G:/buildbot/buildbot_repo/trunk/triggers_for_testing, root=file:///G:/buildbot/buildbot_repo, so prefix=trunk/triggers_for_testing 
2016-06-10 11:34:09-0700 [-] SVNPoller: starting at change 30 
2016-06-10 11:34:09-0700 [-] SVNPoller: _process_changes None .. 30 
2016-06-10 11:34:09-0700 [-] SVNPoller: finished polling None 
2016-06-10 11:34:29-0700 [Broker,0,192.168.77.222] slave 'centos7-worker' attaching from IPv4Address(TCP, '192.168.77.222', 53458) 
2016-06-10 11:34:29-0700 [Broker,0,192.168.77.222] Got slaveinfo from 'centos7-worker' 
2016-06-10 11:34:29-0700 [Broker,0,192.168.77.222] Starting buildslave keepalive timer for 'centos7-worker' 
2016-06-10 11:34:29-0700 [Broker,0,192.168.77.222] bot attached 
2016-06-10 11:34:29-0700 [Broker,0,192.168.77.222] Buildslave centos7-worker attached to gfortran_centos7_build 
2016-06-10 11:34:29-0700 [-] SVNPoller: polling 
2016-06-10 11:34:29-0700 [-] SVNPoller: no changes 
2016-06-10 11:34:29-0700 [-] SVNPoller: _process_changes 30 .. 30 
2016-06-10 11:34:29-0700 [-] SVNPoller: finished polling None 
2016-06-10 11:34:49-0700 [-] SVNPoller: polling 
2016-06-10 11:34:49-0700 [-] SVNPoller: no changes 
2016-06-10 11:34:49-0700 [-] SVNPoller: _process_changes 30 .. 30 
2016-06-10 11:34:49-0700 [-] SVNPoller: finished polling None 
2016-06-10 11:35:09-0700 [-] SVNPoller: polling 
2016-06-10 11:35:09-0700 [-] SVNPoller: _process_changes 30 .. 31 
2016-06-10 11:35:09-0700 [-] Adding change revision 31 
2016-06-10 11:35:09-0700 [-] SVNPoller: finished polling None 
2016-06-10 11:35:26-0700 [Broker,1,169.254.203.227] slave 'win64-worker' attaching from IPv4Address(TCP, '169.254.203.227', 53461) 
2016-06-10 11:35:26-0700 [Broker,1,169.254.203.227] Got slaveinfo from 'win64-worker' 
2016-06-10 11:35:26-0700 [Broker,1,169.254.203.227] Starting buildslave keepalive timer for 'win64-worker' 
2016-06-10 11:35:26-0700 [Broker,1,169.254.203.227] bot attached 
2016-06-10 11:35:26-0700 [Broker,1,169.254.203.227] Buildslave win64-worker attached to ifort_win32_build 
2016-06-10 11:35:26-0700 [Broker,1,169.254.203.227] Buildslave win64-worker attached to gfortran_win64_build 
2016-06-10 11:35:26-0700 [Broker,1,169.254.203.227] Buildslave win64-worker attached to ifort_win64_build 
2016-06-10 11:35:29-0700 [-] SVNPoller: polling 
2016-06-10 11:35:29-0700 [-] SVNPoller: no changes 
2016-06-10 11:35:29-0700 [-] SVNPoller: _process_changes 31 .. 31 
2016-06-10 11:35:29-0700 [-] SVNPoller: finished polling None 
2016-06-10 11:35:49-0700 [-] SVNPoller: polling 
2016-06-10 11:35:49-0700 [-] SVNPoller: no changes 
2016-06-10 11:35:49-0700 [-] SVNPoller: _process_changes 31 .. 31 
2016-06-10 11:35:49-0700 [-] SVNPoller: finished polling None 
2016-06-10 11:36:09-0700 [-] SVNPoller: polling 
2016-06-10 11:36:09-0700 [-] SVNPoller: no changes 
2016-06-10 11:36:09-0700 [-] SVNPoller: _process_changes 31 .. 31 
2016-06-10 11:36:09-0700 [-] SVNPoller: finished polling None 
2016-06-10 11:36:29-0700 [-] SVNPoller: polling 
2016-06-10 11:36:29-0700 [-] SVNPoller: no changes 
2016-06-10 11:36:29-0700 [-] SVNPoller: _process_changes 31 .. 31 
2016-06-10 11:36:29-0700 [-] SVNPoller: finished polling None 
2016-06-10 11:36:49-0700 [-] SVNPoller: polling 
2016-06-10 11:36:49-0700 [-] SVNPoller: no changes 
2016-06-10 11:36:49-0700 [-] SVNPoller: _process_changes 31 .. 31 
2016-06-10 11:36:49-0700 [-] SVNPoller: finished polling None 
2016-06-10 11:37:09-0700 [-] SVNPoller: polling 
2016-06-10 11:37:09-0700 [-] SVNPoller: no changes 
2016-06-10 11:37:09-0700 [-] SVNPoller: _process_changes 31 .. 31 
2016-06-10 11:37:09-0700 [-] SVNPoller: finished polling None 
2016-06-10 11:37:29-0700 [-] SVNPoller: polling 
2016-06-10 11:37:29-0700 [-] SVNPoller: no changes 
2016-06-10 11:37:29-0700 [-] SVNPoller: _process_changes 31 .. 31 
2016-06-10 11:37:29-0700 [-] SVNPoller: finished polling None 
2016-06-10 11:37:49-0700 [-] SVNPoller: polling 
2016-06-10 11:37:49-0700 [-] SVNPoller: no changes 
2016-06-10 11:37:49-0700 [-] SVNPoller: _process_changes 31 .. 31 
2016-06-10 11:37:49-0700 [-] SVNPoller: finished polling None 
2016-06-10 11:38:09-0700 [-] SVNPoller: polling 
2016-06-10 11:38:09-0700 [-] SVNPoller: no changes 
2016-06-10 11:38:09-0700 [-] SVNPoller: _process_changes 31 .. 31 
2016-06-10 11:38:09-0700 [-] SVNPoller: finished polling None 
2016-06-10 11:38:29-0700 [-] SVNPoller: polling 
2016-06-10 11:38:29-0700 [-] SVNPoller: no changes 
2016-06-10 11:38:29-0700 [-] SVNPoller: _process_changes 31 .. 31 
2016-06-10 11:38:29-0700 [-] SVNPoller: finished polling None 
2016-06-10 11:38:32-0700 [-] Received SIGINT, shutting down. 
2016-06-10 11:38:32-0700 [-] (TCP Port 8010 Closed) 
2016-06-10 11:38:32-0700 [-] Stopping factory <buildbot.status.web.baseweb.RotateLogSite instance at 0x0000000005711208> 
2016-06-10 11:38:32-0700 [Broker,0,192.168.77.222] BuildSlave.detached(centos7-worker) 
2016-06-10 11:38:32-0700 [Broker,0,192.168.77.222] releaseLocks(<BuildSlave 'centos7-worker'>): [] 
2016-06-10 11:38:32-0700 [Broker,0,192.168.77.222] Buildslave centos7-worker detached from gfortran_centos7_build 
2016-06-10 11:38:32-0700 [Broker,1,169.254.203.227] BuildSlave.detached(win64-worker) 
2016-06-10 11:38:32-0700 [Broker,1,169.254.203.227] releaseLocks(<BuildSlave 'win64-worker'>): [] 
2016-06-10 11:38:32-0700 [Broker,1,169.254.203.227] Buildslave win64-worker detached from ifort_win32_build 
2016-06-10 11:38:32-0700 [Broker,1,169.254.203.227] Buildslave win64-worker detached from gfortran_win64_build 
2016-06-10 11:38:32-0700 [Broker,1,169.254.203.227] Buildslave win64-worker detached from ifort_win64_build 
2016-06-10 11:38:32-0700 [-] (TCP Port 9989 Closed) 
2016-06-10 11:38:32-0700 [-] Stopping factory <twisted.spread.pb.PBServerFactory instance at 0x00000000056AF508> 
2016-06-10 11:38:32-0700 [-] Main loop terminated. 
2016-06-10 11:38:32-0700 [-] Server Shut Down. 
2016-06-10 11:38:32-0700 [-] Server Shut Down. 
2016-06-10 11:39:56-0700 [-] Loading buildbot.tac... 
2016-06-10 11:39:57-0700 [-] Loaded. 
2016-06-10 11:39:57-0700 [-] twistd 16.2.0 (C:\Users\buildbot\AppData\Local\Programs\WinPython-64bit-2.7.10.3\python-2.7.10.amd64\python.exe 2.7.10) starting up. 
2016-06-10 11:39:57-0700 [-] reactor class: twisted.internet.selectreactor.SelectReactor. 
2016-06-10 11:39:57-0700 [-] Starting BuildMaster -- buildbot.version: 0.8.12 
2016-06-10 11:39:57-0700 [-] Loading configuration from 'G:\\buildbot\\master\\master.cfg' 
2016-06-10 11:39:57-0700 [-] Setting up database with URL 'sqlite:///state.sqlite' 
2016-06-10 11:39:57-0700 [-] setting database journal mode to 'wal' 
2016-06-10 11:39:57-0700 [-] Using SQLite Version (3, 6, 21) 
2016-06-10 11:39:57-0700 [-] NOTE: this old version of SQLite does not support WAL journal mode; a busy master may encounter 'Database is locked' errors. Consider upgrading. 
2016-06-10 11:39:58-0700 [-] adding 2 new changesources, removing 0 
2016-06-10 11:39:58-0700 [-] adding 2 new slaves, removing 0 
2016-06-10 11:39:58-0700 [-] adding 4 new builders, removing 0 
2016-06-10 11:39:58-0700 [-] trying to load status pickle from G:\buildbot\master\ifort_win32_build\builder 
2016-06-10 11:39:58-0700 [-] added builder ifort_win32_build with tags None 
2016-06-10 11:39:58-0700 [-] trying to load status pickle from G:\buildbot\master\gfortran_win64_build\builder 
2016-06-10 11:39:58-0700 [-] added builder gfortran_win64_build with tags None 
2016-06-10 11:39:58-0700 [-] trying to load status pickle from G:\buildbot\master\gfortran_centos7_build\builder 
2016-06-10 11:39:58-0700 [-] added builder gfortran_centos7_build with tags None 
2016-06-10 11:39:58-0700 [-] trying to load status pickle from G:\buildbot\master\ifort_win64_build\builder 
2016-06-10 11:39:58-0700 [-] added builder ifort_win64_build with tags None 
2016-06-10 11:39:58-0700 [-] PBServerFactory starting on 9989 
2016-06-10 11:39:58-0700 [-] Starting factory <twisted.spread.pb.PBServerFactory instance at 0x000000000575E8C8> 
2016-06-10 11:39:58-0700 [-] adding scheduler 'test_triggers_changed' 
2016-06-10 11:39:58-0700 [-] adding scheduler 'trunk_sf_codechanged' 
2016-06-10 11:39:58-0700 [-] WebStatus using (G:\buildbot\master\public_html) 
2016-06-10 11:39:58-0700 [-] RotateLogSite starting on 8010 
2016-06-10 11:39:58-0700 [-] Starting factory <buildbot.status.web.baseweb.RotateLogSite instance at 0x00000000057BB0C8> 
2016-06-10 11:39:58-0700 [-] Setting up http.log rotating 10 files of 10000000 bytes each 
2016-06-10 11:39:58-0700 [-] BuildMaster is running 
2016-06-10 11:40:03-0700 [Broker,0,169.254.203.227] slave 'win64-worker' attaching from IPv4Address(TCP, '169.254.203.227', 53479) 
2016-06-10 11:40:03-0700 [Broker,0,169.254.203.227] Got slaveinfo from 'win64-worker' 
2016-06-10 11:40:03-0700 [Broker,0,169.254.203.227] Starting buildslave keepalive timer for 'win64-worker' 
2016-06-10 11:40:03-0700 [Broker,0,169.254.203.227] bot attached 
2016-06-10 11:40:03-0700 [Broker,0,169.254.203.227] Buildslave win64-worker attached to ifort_win32_build 
2016-06-10 11:40:03-0700 [Broker,0,169.254.203.227] Buildslave win64-worker attached to gfortran_win64_build 
2016-06-10 11:40:03-0700 [Broker,0,169.254.203.227] Buildslave win64-worker attached to ifort_win64_build 
2016-06-10 11:40:05-0700 [Broker,1,192.168.77.222] slave 'centos7-worker' attaching from IPv4Address(TCP, '192.168.77.222', 53480) 
2016-06-10 11:40:05-0700 [Broker,1,192.168.77.222] Got slaveinfo from 'centos7-worker' 
2016-06-10 11:40:05-0700 [Broker,1,192.168.77.222] Starting buildslave keepalive timer for 'centos7-worker' 
2016-06-10 11:40:05-0700 [Broker,1,192.168.77.222] bot attached 
2016-06-10 11:40:05-0700 [Broker,1,192.168.77.222] Buildslave centos7-worker attached to gfortran_centos7_build 
2016-06-10 11:40:18-0700 [-] SVNPoller: polling 
2016-06-10 11:40:18-0700 [-] SVNPoller: svnurl=file:///G:/buildbot/buildbot_repo/trunk/triggers_for_testing, root=file:///G:/buildbot/buildbot_repo, so prefix=trunk/triggers_for_testing 
2016-06-10 11:40:18-0700 [-] SVNPoller: starting at change 31 
2016-06-10 11:40:18-0700 [-] SVNPoller: _process_changes None .. 31 
2016-06-10 11:40:18-0700 [-] SVNPoller: finished polling None 
2016-06-10 11:40:38-0700 [-] SVNPoller: polling 
2016-06-10 11:40:38-0700 [-] SVNPoller: _process_changes 31 .. 32 
2016-06-10 11:40:38-0700 [-] Adding change revision 32 
2016-06-10 11:40:38-0700 [-] SVNPoller: finished polling None 
2016-06-10 11:40:58-0700 [-] SVNPoller: polling 
2016-06-10 11:40:58-0700 [-] SVNPoller: no changes 
2016-06-10 11:40:58-0700 [-] SVNPoller: _process_changes 32 .. 32 
2016-06-10 11:40:58-0700 [-] SVNPoller: finished polling None 
2016-06-10 11:41:18-0700 [-] SVNPoller: polling 
2016-06-10 11:41:18-0700 [-] SVNPoller: no changes 
2016-06-10 11:41:18-0700 [-] SVNPoller: _process_changes 32 .. 32 
2016-06-10 11:41:18-0700 [-] SVNPoller: finished polling None 
2016-06-10 11:41:38-0700 [-] SVNPoller: polling 

ответ

1

мне удалось решить эту проблему путем удаления вообще аргумента

split_file = split_file_branches 

к двум SVNPoller конструкторов. Кажется, что split_file не требуется для опроса отдельной ветви в репозитории, организованной как моя.

Смежные вопросы