I'm continuing to see some strange issues with Buildbot hanging. I tried
using a crontab to see if the worker or master had crashed and restart
them, but it looks like they're still running just fine. Buildbot's even
showing pending builds, but it's not ignoring them.

If I manually restart them, it immediately begins working again, but I have
no way to detect it being hung except to login and check if there are
pending builds with nothing being processed.

How do I diagnose and fix this?

My master's log is just a bunch of:

    2017-04-04 18:15:41-0400 [-] gitpoller: processing changes from
"[email protected]:myorg/myproject.git"
    2017-04-04 18:16:41-0400 [-] gitpoller: processing changes from
"[email protected]:myorg/myproject.git"
    2017-04-04 18:17:41-0400 [-] gitpoller: processing changes from
"[email protected]:myorg/myproject.git"
    2017-04-04 18:18:41-0400 [-] gitpoller: processing changes from
"[email protected]:myorg/myproject.git"

and my worker's log is just a bunch of:

    2017-04-04 16:13:02-0400 [-] sending app-level keepalive
    2017-04-04 16:23:02-0400 [-] sending app-level keepalive
    2017-04-04 16:33:02-0400 [-] sending app-level keepalive
    2017-04-04 16:43:02-0400 [-] sending app-level keepalive
    2017-04-04 16:53:02-0400 [-] sending app-level keepalive
    2017-04-04 17:03:03-0400 [-] sending app-level keepalive
    2017-04-04 17:13:03-0400 [-] sending app-level keepalive

This is my master.cfg:

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

    from buildbot.plugins import util, reporters, worker, changes,
schedulers, steps
    from buildbot.reporters.bitbucket import BitbucketStatusPush

    from bitbucket_sensitive import BITBUCKET_OATH_KEY,
BITBUCKET_OATH_SECRET # pylint: disable=import-error,no-name-in-module
    import master_sensitive # pylint: disable=import-error

    BASE_DIR = os.path.abspath(os.path.dirname(__file__))

    HOME_DIR = '/var/lib/buildbot'

    c = BuildmasterConfig = {}

    c['workers'] = [worker.Worker("example-worker", "pass")]
    c['protocols'] = {'pb': {'port': 9989}}
    c['change_source'] = []
    c['change_source'].append(changes.GitPoller(
            '[email protected]:myorg/myproject.git',
            workdir='gitpoller-workdir',
            branches=True,
            pollinterval=60, # interval in seconds between polls
    ))

    c['schedulers'] = []
    c['schedulers'].append(schedulers.AnyBranchScheduler(
        name="all",
        treeStableTimer=60,
        builderNames=["myproject_runtests"],
    ))
    c['schedulers'].append(schedulers.ForceScheduler(
        name="force",
        builderNames=["myproject_runtests"]))

    factory = util.BuildFactory()
    factory.addStep(steps.Git(
        repourl='[email protected]:myorg/myproject.git',
        mode='incremental',
    ))
    factory.addStep(steps.ShellCommand(
        command="rm -rf $(find . -name '*.pyc' 2>/dev/null)",
        workdir="/usr/local/myproject",
        haltOnFailure=True,
        env={'HOME': HOME_DIR},
    ))
    factory.addStep(steps.ShellCommand(
        command=['git', 'fetch', 'origin', 'master'],
        workdir="build",
        haltOnFailure=True,
        env={'HOME': HOME_DIR},
    ))
    factory.addStep(steps.ShellCommand(
        command=['git', 'merge', 'origin/master', '--no-edit'],
        workdir="build",
        haltOnFailure=True,
        env={'HOME': HOME_DIR},
    ))
    factory.addStep(steps.ShellCommand(
        command=['git', 'merge', 'origin/staging', '--no-edit'],
        workdir="build",
        haltOnFailure=True,
        env={'HOME': HOME_DIR},
    ))
    factory.addStep(steps.ShellCommand(
        command=['./init_virtualenv.sh'],
        workdir="build/src/scripts",
        haltOnFailure=True,
        env={'HOME': HOME_DIR},
    ))
    factory.addStep(steps.ShellCommand(
        command=['./checkjs.sh'],
        workdir="build",
        haltOnFailure=True,
        env={'HOME': HOME_DIR},
    ))
    factory.addStep(steps.ShellCommand(
        command=['./pep8.sh'],
        workdir="build",
        haltOnFailure=True,
        env={'HOME': HOME_DIR},
    ))
    factory.addStep(steps.ShellCommand(
        command=["./run_buildbot_tests"],
        workdir="build/src/myproject",
        env={'HOME': HOME_DIR},
    ))

    c['builders'] = []
    c['builders'].append(
        util.BuilderConfig(
            name="myproject_runtests",
            workernames=["example-worker"],
            collapseRequests=True,
            factory=factory))

    c['status'] = []

    authz = util.Authz(
      allowRules=[
        util.StopBuildEndpointMatcher(role="admins"),
        util.ForceBuildEndpointMatcher(role="admins"),
        util.RebuildBuildEndpointMatcher(role="admins")
      ],
      roleMatchers=[
        util.RolesFromEmails(admins=["[email protected]"]),
        util.RolesFromUsername(roles=["admins"], usernames=["myuser"]),
      ]
    )
    c['www'] = dict(
        port=8010,
        plugins=dict(waterfall_view={}, console_view={}),
        #auth=util.HTPasswdAuth(os.path.join(BASE_DIR, '../htpasswd')),
        auth=util.RemoteUserAuth(),
        authz=authz,
    )

    mn = reporters.MailNotifier(
        fromaddr="[email protected]",
        sendToInterestedUsers=True,
        useTls=True,
        relayhost="smtp.myproject.com",
        smtpPort=587,
        smtpUser="[email protected]",
        smtpPassword=master_sensitive.EMAIL_HOST_PASSWORD,
        extraRecipients=[
            '[email protected]',
        ],
    )
    c['services'] = []
    c['services'].append(mn)

    bs = BitbucketStatusPush(BITBUCKET_OATH_KEY, BITBUCKET_OATH_SECRET)
    c['services'].append(bs)

    c['title'] = "MyProject"

    c['buildbotURL'] = "http://buildbot.myproject.com/";

    c['db'] = {
        'db_url' : "sqlite:///state.sqlite",
    }

    c['changeHorizon'] = 200
    c['buildHorizon'] = 100
    c['logHorizon'] = 40
    c['buildCacheSize'] = 15
_______________________________________________
users mailing list
[email protected]
https://lists.buildbot.net/mailman/listinfo/users

Reply via email to