星期五, 7月 24, 2009

buildbot

Ubuntu上安裝Buildbot是很簡單的事情:sudo apt-get install buildbot

比較麻煩的是設定,大致瀏覽了一下 Manual,還是不知道怎麼設定,轉而找 Google 大神,Mousebender 的這篇Installing buildbot,就很簡單易懂。但由於這篇提供的設定是 2006 年的,現在的設定稍稍有改變,c['bots'] 必須修正為 c['slaves'],後面會提到。

依據 ArchitectureBuildbot必須要有 master 跟 slave,master 負責提供 web 介面跟叫 slave 做事,而 slave 就只聽命令做事,所以設定的時候就要分別設定 master 跟 slave。

master 的設定,得先使用 buildbot create-master [目錄名] 來建立,這會幫你建立一個目錄,並提供你設定檔的範本(master.cfg.sample)。第一步就是要把 master.cfg.sample 改為 master.cfg,然後修改 master.cfg。要調整的基本上有這幾個:
  • c['schedulers'],要排程的時間。
  • f1.addStep(),這決定怎麼編譯。
  • c['slaves']、c['slavePortnum'],slave的名稱、密碼以及要 listen 的 port,待會建立 slave 時會用到。
  • c['projectName'],你專案的名稱。
  • c['projectURL'],你專案的網址。


接著要建立 slave,這邊用 master.cfg.sample 來舉例,也就是假設你剛剛沒改 c['slaves']、c['slavePortnum'] 的內容,所以這邊用 buildbot create-slave [目錄名] localhost:9989 bot1name bot1passwd 來建立 slave,接著把 slave 目錄下的 Makefile.sample 改為 Makefile 即可。

啟動的時候,要先啟動 slave 再啟動 master,啟動的指令都是 buildbot start [目錄名],例如 buildbot start myproject-master、buildbot start myproject-slave。

這樣就大功告成,你可以打開 http://localhost:8010 來看 build 的進度了。

下面是我的設定檔:

# -*- python -*-
c = BuildmasterConfig = {}

####### BUILDSLAVES
from buildbot.buildslave import BuildSlave
c['slaves'] = [BuildSlave("myproject-slave", "password", max_builds=1)]
c['slavePortnum'] = 9989

####### CHANGESOURCES
from buildbot.changes.pb import PBChangeSource
c['change_source'] = PBChangeSource()

####### SCHEDULERS
from buildbot.scheduler import Scheduler, Periodic
c['schedulers'] = [
Periodic("every_12_hours", ["buildbot-full"], 12*60*60 )
]

####### BUILDERS
from buildbot.process import factory
from buildbot.steps.source import CVS
from buildbot.steps.shell import Compile, ShellCommand
from buildbot.steps.python_twisted import Trial
f1 = factory.BuildFactory()
f1.addStep(ShellCommand(command=["/home/user1/build/build.sh"]))
f1.addStep(Compile())

b1 = {'name': "buildbot-full",
'slavename': 'myproject-slave',
'builddir': "full",
'factory': f1,
}
c['builders'] = [b1]


####### STATUS TARGETS
c['status'] = []

from buildbot.status import html
c['status'].append(html.WebStatus(http_port=8010))

####### PROJECT IDENTITY
c['projectName'] = "myproject"
c['projectURL'] = "http://myproject-server"
c['buildbotURL'] = "http://localhost:8010/"

2 則留言:

匿名 提到...

您好,今天早上有用msn跟您連絡過,想請教buildbot的一些問題..若不方便的話,也可用blog連絡..謝謝

elleryq 提到...

什麼地方有問題呢?