git, svn등, 소스관리 툴을 사용하다 보니, 다수의 사용자에 의해서 소스가 관리된다.
그러나, 어느 누군가가 소스서버에 commit or push할때, 뭔가 빠뜨리는 경우가 발생한다.
분명, 그 어느 누군가의 환경에서는 컴파일이 되나, 다른 사용자가 소스서버에서 fetch한 소스는 컴파일이 되지 않을 것 이다.
이런 경우를 사전에 회피하기 위해, continuous integration tool이 사용된다.
그 중, 본인은 buildbot를 사용해 보았다.
기본적인 buildbot의 정보는 아래의 사이트에서 구한다.
그러나, 어느 누군가가 소스서버에 commit or push할때, 뭔가 빠뜨리는 경우가 발생한다.
분명, 그 어느 누군가의 환경에서는 컴파일이 되나, 다른 사용자가 소스서버에서 fetch한 소스는 컴파일이 되지 않을 것 이다.
이런 경우를 사전에 회피하기 위해, continuous integration tool이 사용된다.
그 중, 본인은 buildbot를 사용해 보았다.
기본적인 buildbot의 정보는 아래의 사이트에서 구한다.
완성된 master.cfg
c = BuildmasterConfig = {}
####### BUILDSLAVES
# The 'slaves' list defines the set of recognized buildslaves. Each element is
# a BuildSlave object, specifying a username and password. The same username and
# password must be configured on the slave.
from buildbot.buildslave import BuildSlave
['slaves'] = [BuildSlave("아무개", "아무개암호")]
c['slavePortnum'] = 9989
from buildbot.changes.gitpoller import GitPoller
from buildbot.changes.pb import PBChangeSource
c['change_source'] = PBChangeSource()
#master.cfg.sample에서는 GitPoller를 사용하고 있으나, 잘 안 되더라...
#GIT repository가 갱신이 되어도, 잘 안 되고.
#force build는 잘 되던데... 여하튼
#본인 PBChangeSource 클래스를 사용했음.
####### SCHEDULERS
# Configure the Schedulers, which decide how to react to incoming changes. In this
# case, just kick off a 'runtests' build
from buildbot.scheduler import Scheduler, Periodic
c['schedulers'] = []
# 매 2시간마다 컴파일 하도록 했다.
c['schedulers'].append(Periodic(name="20 minutes build scheduler",
builderNames=["mediamanager1"],
periodicBuildTimer=2*60))
from buildbot.process.factory import BuildFactory
from buildbot.steps.source import Git
from buildbot.steps.shell import ShellCommand
factory1 = BuildFactory()
factory1.addStep(Git(repourl='file:///git/mediaserver/appl.git', mode='update'))
factory1.addStep(ShellCommand(command=["make"], workdir="build"))
from buildbot.config import BuilderConfig
c['builders'] = []
c['builders'].append(
BuilderConfig(name="mediamanager1",
slavenames=["아무개"],
factory=factory1))
c['status'] = []
from buildbot.status import html
from buildbot.status.web import auth, authz
authz_cfg=authz.Authz(
gracefulShutdown = False,
forceBuild = True, # 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))
c['projectName'] = "원하는 대로"
c['projectURL'] = "Trac이나 wiki주소등.."
c['buildbotURL'] = "http://localhost:8010/"
c['db_url'] = "sqlite:///state.sqlite"
Comments