12

現在、Buildbot は複数のリポジトリをサポートしていません。これが必要な場合は、Buildbot の個別のインスタンスを実行する必要があります。

とにかく、この機能を機能させるための創造的な回避策を誰かが思いついたかどうか、私は興味があります.

4

4 に答える 4

21

アップデート

この回答は最近、いくつかの反対票を受け取りました。この回答は、2012 年末から 2013 年の初めにかけて公開/使用された buildbot のリリースに適用され、将来のバージョンには適用されない可能性があることに注意してください。

元の回答

@Macke が言ったように、buildbot (>= 0.8.x) は複数のプロジェクト/リポジトリをサポートしています。これは、次のような構成で行われます。

# Set configuration to watch the Git repository for possible
# changes. When a change does occur the schedulers will be
# notified with the project data (TestProj).
c['change_source'] = []
c['change_source'].append(
        GitPoller( 
                repourl ='git://github.com/SO/my_test_project.git',
                project = 'TestProj',  
                branch  = 'master',
                workdir = '/home/buildmaster/repos/TestProj'
        )
)

# Set the schedule to run on each change, but only for the project
# specified above via the project information.
c['schedulers'] = []
c['schedulers'].append(
        SingleBranchScheduler(
                name = "TestProj-master",
                builderNames = ['TestProj-master-builder'],
                change_filter = ChangeFilter(
                        project = 'TestProj',
                        branch  = 'master'
                )
        )
)

project変更元のパラメーターがスケジューラーのchange_filterプロパティで再び使用され、スケジューラーがその特定の変更元にのみ応答するようになっていることがわかります。これにより、複数の変更ソースと、明示的に選択された変更ソースに応答する複数のスケジューラを構成できます。

于 2011-08-22T13:54:28.093 に答える
2

0.8.7p1 リリース以降、buildbot は複数のコードベースをサポートしています

于 2014-08-28T09:31:30.047 に答える
1

確かに、複数のリポジトリをサポートしていないと言う理由がわかりません....リポジトリごとにポーラーを作成し、さまざまなポーラーにpingを実行して、さまざまなリポジトリのビルドを取得する複数のスケジューラを作成できます(マスターが実行されているのと同じマシン、または別のボックスに専用のスレーブを配置できます)。

複数のインスタンスを持つことを避けたいが、たとえば、マスターとスレーブを順番に開始および停止するのが面倒な場合でも、マスターとスレーブが同じマシン上に共存します。そうしないと、競合エラーが発生します:)

于 2011-02-08T21:16:44.223 に答える
0

|> 現在、Buildbot は複数のリポジトリをサポートしていません。

質問がよくわかりません..すみません。複数のマスターサーバーを実行する必要があるということですか? buildbot 開発者は実際にそうするようにアドバイスしていますが、私にとっては逆のことがうまくいきます: 同じmaster.cfg複数のスレーブ (ウォーターフォールの列) を使用し、それぞれBuildFactoryに異なるタイプの最初のステップを持つことができます:Git(repourl=...)および/またはMercurial(repourl=...)

それぞれが異なるリポジトリからクローン/プルし、後続のステップで必要なチェックアウトをさらに追加することもできます (maven を使用するか、scm クライアントを直接使用します)。一意のファイルを持つことの唯一の問題master.cfgは、すべてのビルダーが変更の通知を取得する方法が 1 つしかないことです。たとえば、PBChangeSource()(マスターはリモート コードによって通知されますが、何もする必要はありません)。たとえば、PBChangeSource が適切にサポートされている SCM (svn、hg、git など) とサポートが不十分な SCM (MKS など) がある場合、それに対処するために 2 つのマスター サーバー インスタンスが必要です。

それが役立つことを願っています。

于 2010-06-30T09:04:39.063 に答える