1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

60

61

62

63

64

65

66

67

68

69

70

71

72

73

74

75

76

77

78

79

80

81

82

83

84

85

86

87

88

89

90

91

92

93

94

95

96

97

98

99

100

101

102

103

104

105

106

107

108

109

110

111

112

113

114

115

116

117

118

119

120

121

122

123

124

125

126

# -*- python -*- 

# ex: set syntax=python: 

 

# 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 = {} 

 

####### BUILDSLAVES 

 

# 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. 

from buildbot.buildslave import BuildSlave 

c['slaves'] = [BuildSlave("example-slave", "pass")] 

 

# 'slavePortnum' defines the TCP port to listen on for connections from slaves. 

# This must match the value configured into the buildslaves (with their 

# --master option) 

c['slavePortnum'] = 9989 

 

####### CHANGESOURCES 

 

# the 'change_source' setting tells the buildmaster how it should find out 

# about source code changes.  Here we point to the buildbot clone of pyflakes. 

 

from buildbot.changes.gitpoller import GitPoller 

c['change_source'] = [] 

c['change_source'].append(GitPoller( 

        'git://github.com/buildbot/pyflakes.git', 

        workdir='gitpoller-workdir', branch='master', 

        pollinterval=300)) 

 

####### SCHEDULERS 

 

# Configure the Schedulers, which decide how to react to incoming changes.  In this 

# case, just kick off a 'runtests' build 

 

from buildbot.schedulers.basic import SingleBranchScheduler 

from buildbot.schedulers.forcesched import ForceScheduler 

from buildbot.changes import filter 

c['schedulers'] = [] 

c['schedulers'].append(SingleBranchScheduler( 

                            name="all", 

                            change_filter=filter.ChangeFilter(branch='master'), 

                            treeStableTimer=None, 

                            builderNames=["runtests"])) 

c['schedulers'].append(ForceScheduler( 

                            name="force", 

                            builderNames=["runtests"])) 

 

####### BUILDERS 

 

# The 'builders' list defines the Builders, which tell Buildbot how to perform a build: 

# what steps, and which slaves can execute them.  Note that any particular build will 

# only take place on one slave. 

 

from buildbot.process.factory import BuildFactory 

from buildbot.steps.source import Git 

from buildbot.steps.shell import ShellCommand 

 

factory = BuildFactory() 

# check out the source 

factory.addStep(Git(repourl='git://github.com/buildbot/pyflakes.git', mode='copy')) 

# run the tests (note that this will require that 'trial' is installed) 

factory.addStep(ShellCommand(command=["trial", "pyflakes"])) 

 

from buildbot.config import BuilderConfig 

 

c['builders'] = [] 

c['builders'].append( 

    BuilderConfig(name="runtests", 

      slavenames=["example-slave"], 

      factory=factory)) 

 

####### STATUS TARGETS 

 

# 'status' is a list of Status Targets. The results of each build will be 

# pushed to these targets. buildbot/status/*.py has a variety to choose from, 

# including web pages, email senders, and IRC bots. 

 

c['status'] = [] 

 

from buildbot.status import html 

from buildbot.status.web import authz, auth 

 

authz_cfg=authz.Authz( 

    # change any of these to True to enable; see the manual for more 

    # options 

    auth=auth.BasicAuth([("pyflakes","pyflakes")]), 

    gracefulShutdown = False, 

    forceBuild = 'auth', # use this to test your slave once it is set up 

    forceAllBuilds = False, 

    pingBuilder = False, 

    stopBuild = False, 

    stopAllBuilds = False, 

    cancelPendingBuild = False, 

) 

c['status'].append(html.WebStatus(http_port=8010, authz=authz_cfg)) 

 

####### PROJECT IDENTITY 

 

# the 'title' string will appear at the top of this buildbot 

# installation's html.WebStatus home page (linked to the 

# 'titleURL') and is embedded in the title of the waterfall HTML page. 

 

c['title'] = "Pyflakes" 

c['titleURL'] = "http://divmod.org/trac/wiki/DivmodPyflakes" 

 

# the 'buildbotURL' string should point to the location where the buildbot's 

# internal web server (usually the html.WebStatus page) is visible. This 

# typically uses the port number set in the Waterfall 'status' entry, but 

# with an externally-visible host name which the buildbot cannot figure out 

# without some help. 

 

c['buildbotURL'] = "http://localhost:8010/" 

 

####### DB URL 

 

c['db'] = { 

    # This specifies what database buildbot uses to store its state.  You can leave 

    # this at its default for all but the largest installations. 

    'db_url' : "sqlite:///state.sqlite", 

}