序章
Buildbotは、ソフトウェアのビルド、テスト、リリースのプロセスを自動化するためのPythonベースの継続的インテグレーションシステムです。 PythonのTwistedライブラリを使用して、ビルドマスターと1つ以上のワーカー間の非同期通信を処理し、複数のプラットフォームでのビルドのテストを容易にします。 Buildbotは高度に構成可能であり、ビルドプロセスがどのように機能するかについてほとんど想定していないため、プロジェクトの固有のニーズに合わせてツールを拡張する必要がある複雑なビルドプロセスやプロジェクトに適しています。
このチュートリアルでは、Buildbotビルドマスターとワーカーを同じマシンにインストールして構成します。
前提条件
このチュートリアルに従うには、次のものが必要です。
- 少なくとも1GBのRAMを搭載したUbuntu16.04サーバー、非ルートで構成
sudo
Ubuntu16.04初期サーバーセットアップガイドで説明されているユーザーとファイアウォール。
サーバーがセットアップされると、フォローする準備が整います。
ステップ1—Buildbotをインストールする
Buildbotプロジェクトでは、Python Package Index(pip)を使用してBuildbotをインストールし、最新バージョンを取得することをお勧めします。最新バージョンは、Ubuntuパッケージで利用できるものよりも数リリース進んでいることがよくあります。
私たちは私たちとして始めます sudo
ユーザー、および使用 apt-get update
パッケージの最新リストを確実に入手するには:
- sudo apt-get update
次に、pip自体をインストールします。
- sudo apt-get install python-pip
pipが利用可能になったら、それを使用してBuildbotバンドルをインストールします。これには、マスターとワーカー、およびWebインターフェイスに必要な依存関係を含むその他の依存関係が含まれます。 ピップは作成します .cache
それを実行するユーザーのホームディレクトリ内のファイル。 使用します sudo
の -H
これらのファイルを正しい場所に配置するためのフラグ:
- sudo -H pip install 'buildbot[bundle]'
サーバーの速度によっては、これが完了するまでに少し時間がかかる場合があります。 インストールが成功した場合の出力の終わりは、次のようになります。
Output. . .
Successfully installed Automat-0.6.0 Jinja2-2.10 MarkupSafe-1.0
PyJWT-1.6.0 Tempita-0.5.2 Twisted-17.9.0 attrs-17.4.0 autobahn-18.3.1
buildbot-1.0.0 buildbot-console-view-1.0.0 buildbot-grid-view-1.0.0
buildbot-waterfall-view-1.0.0 buildbot-worker-1.0.0 buildbot-www-1.0.0
constantly-15.1.0 decorator-4.2.1 future-0.16.0 hyperlink-18.0.0 idna-2.6
incremental-17.5.0 pbr-3.1.1 python-dateutil-2.6.1 six-1.11.0 sqlalchemy-1.2.5
sqlalchemy-migrate-0.11.0 sqlparse-0.2.4 txaio-2.9.0 zope.interface-4.4.3
また、pip自体をアップグレードするための推奨事項が表示される場合があります。
Output. . .
You are using pip version 8.1.1, however version 9.0.1 is available.
You should consider upgrading via the 'pip install --upgrade pip' command.
これはBuildbotのインストールには影響しませんが、pipの最新リリースにアップグレードするために少し時間がかかります。
- sudo -H pip install --upgrade pip
OutputCollecting pip
Downloading pip-9.0.1-py2.py3-none-any.whl (1.3MB)
100% |████████████████████████████████| 1.3MB 768kB/s
Installing collected packages: pip
Found existing installation: pip 8.1.1
Not uninstalling pip at /usr/lib/python2.7/dist-packages, outside environment /usr
Successfully installed pip-9.0.1
最後に、バージョンを確認して、Buildbotのインストールを確認します。
- buildbot --version
OutputBuildbot version: 1.0.0
Twisted version: 17.9.0
チュートリアルの前提条件では、SSHトラフィックのみを許可するようにUFWファイアウォールを構成しました。 ステータスを確認します。
- sudo ufw status
OutputStatus: active
To Action From
-- ------ ----
OpenSSH ALLOW Anywhere
OpenSSH (v6) ALLOW Anywhere (v6)
BuildbotはWebインターフェイスにポート8010を使用しますが、これは許可されていないため、ここで開きます。
- sudo ufw allow 8010
次に、Buildbotサービスを実行するための専用のシステムユーザーとグループを追加します。
- sudo addgroup --system buildbot
- sudo adduser buildbot --system --ingroup buildbot --shell /bin/bash
最後に、Buildbotをインストールするための新しいユーザーとしてログインします。
- sudo --login --user buildbot
これにより、としてログインします buildbot
ユーザーと私たちを /home/buildbot
マスターとワーカーを構成するディレクトリ:
ステップ2—マスターの構成
buildbotコマンドを使用します create-master
その後にベースディレクトリの値が続きます。
- buildbot create-master ~/master
Outputmkdir /home/buildbot/master
creating /home/buildbot/master/master.cfg.sample
creating database (sqlite:///state.sqlite)
buildmaster configured in /home/buildbot/master
次にコピーします master.cfg.sample
に master.cfg
参照用にオリジナルをそのままにしておきます。
- cp ~/master/master.cfg.sample ~/master/master.cfg
次に、ファイルを編集して、ローカルマシンからWebインターフェイスにアクセスできるようにします。
- nano ~/master/master.cfg
デスクトップまたは他のデバイスからWebインターフェイスにアクセスするために、 buildbotURL
から localhost
サーバーのIPアドレスまたはドメイン名に。 また、使用状況レポートポリシーを設定します。 その他の重要な構成値は、 master.cfg
、ただし、残りのデフォルトは今のところ保持します。
ファイルの下部近くで、 buildbotURL
ラインと交換 localhost
サイトのIPアドレスまたはドメイン名を使用して:
c['buildbotURL'] = "http://IP_or_site_domain:8010/"
注: master.cfg
また、「ワーカー」セクションでワーカーを事前に定義します。
. . .
####### WORKERS
# The 'workers' list defines the set of recognized workers. Each element is
# a Worker object, specifying a unique worker name and password. The same
# worker name and password must be configured on the worker.
c['workers'] = [worker.Worker("example-worker", "pass")]
. . .
チュートリアルの後半で、これらの資格情報を使用してワーカーを作成します。
次に、ファイルの下部で、の値を設定します buildbotNetUsageData
指令。 これは、Buildbotがアプリケーションの改善を支援するために開発者に使用統計を報告するかどうかを定義します。 これをに設定できます None
これをオプトアウトします。 使用法に関する基本情報を返送してもかまわない場合は、文字列を使用してください "basic"
代わりは。 この設定の詳細については、Buildbotグローバル構成ドキュメントを参照してください。
c['buildbotNetUsageData'] = None
# To send back basic information, use this instead:
#c['buildbotNetUsageData'] = 'basic'
変更したとき 'buildbotURL'
と追加しました buildbotNetUsageData
行、保存してファイルを終了します。
次のように入力して、マスターの構成を確認します。
- buildbot checkconfig ~/master
構文に問題がない場合は、次のメッセージで終わる出力が表示されます。
Output. . .
Config file is good!
出力に構文エラーがあったことが示されている場合は、戻ってファイルを再度確認してください。 一度 checkconfig
コマンドは成功を示し、マスターを起動します。
- buildbot start ~/master
再起動が成功すると、次の確認が表示されます。
OutputFollowing twistd.log until startup finished..
The buildmaster appears to have (re)started correctly.
最後に、ポート8010のWebブラウザでサイトにアクセスしてみましょう。 buildbotURL
構成しました:
http://IP_or_site_domain:8010/
マスターを実行し、Webインターフェイスにアクセスできることを確認したので、サンプルワーカーを作成します。
ステップ3—ワーカーの構成
マスターとワーカーの関係は、ワーカーの名前とパスワードが master.cfg
ファイルは、マスターを使用するように構成されたワーカーの名前とパスワードと一致します。
このステップでは、を呼び出してワーカーを作成および構成します buildbot-worker
の create-worker
コマンドと4つの設定の受け渡し:
worker
ワーカーの設定が保存されるディレクトリの名前ですlocalhost
ワーカーのマスターが実行されているアドレスですexample-worker
はワーカーの名前であり、でワーカーを一意に識別する必要があります~/master/master.cfg
ファイル。pass
はワーカーのパスワードであり、このパスワードは次の値と一致する必要があります~master/master.cfg
.
- buildbot-worker create-worker ~/worker localhost example-worker pass
Outputmkdir /home/buildbot/worker
mkdir /home/buildbot/worker/info
Creating info/admin, you need to edit it appropriately.
Creating info/host, you need to edit it appropriately.
Not creating info/access_uri - add it if you wish
Please edit the files in /home/buildbot/worker/info appropriately.
worker configured in /home/buildbot/worker
ワーカーが最初に接続すると、ファイルが info
それが実行されるbuildmasterへのディレクトリ。 これらはWebインターフェイスに表示され、開発者にテストの失敗に関する詳細情報を提供します。
これらを構成します。 まず、管理者の電子メールを含むファイルを開き、例の行を削除します。 Your Name Here <admin@youraddress.invalid>
名前とメールアドレスに置き換えます。
- nano ~/worker/info/admin
Sammy Shark <sammy@digitalocean.com>
完了したら、ファイルを保存して終了します。
The info/host
ファイルは、慣例により、OS、バージョン、メモリサイズ、CPU速度、インストールされている関連ライブラリのバージョン、そして最後にワーカーで実行されているBuildbotバージョンを提供します。
ファイルを開いて関連情報を貼り付け、システムの必要に応じてサンプルコンテンツを更新します。
- nano ~/worker/info/host
システムの詳細を反映するために使用する情報を更新します。
Ubuntu 16.04.2 2GB Droplet - Buildbot version: 1.0.0 - Twisted version: 17.1.0
完了したら、保存して終了します。 最後に、ワーカーを開始します。
- buildbot-worker start ~/worker
OutputFollowing twistd.log until startup finished..
The buildbot-worker appears to have (re)started correctly.
マスターとワーカーの両方が構成されて実行されたので、テストビルドを実行します。
ステップ4—テストビルドの実行
テストビルドを実行するには、Webインターフェイスで[ビルド]メニューを開き、[ワーカー]を選択します。 サンプルワーカーと設定した情報 info/admin
と info/host
表示されます。 ここから、デフォルトのビルダーである「runtests」をクリックして、ビルドを強制できます。
「runtests」画面には、最初のビルド要求が行われるまでほとんど情報がありません。 画面の右上にある[強制]ボタンをクリックして、強制します。
これにより、強制ビルドに関する情報を入力できるダイアログが表示されます。
このテストビルドでは、フィールドを空白のままにして、ポップアップウィンドウの[ビルドの開始]ボタンをクリックします。 「あなたの名前」フィールドに値を入力する場合は、有効なメールアドレスが含まれている必要があることに注意してください。
数秒で、ビルドは正常に完了するはずです。
名前の横にある番号または矢印をクリックすると、ビルドの各ステップの詳細を調べることができます。
このビルドを実行するためにログインする必要がないことに気付いたかもしれません。 デフォルトでは、誰でも管理機能にアクセスできるため、終了する前に、それをロックしてユーザーアカウントを作成します。 使用可能なオプションの詳細については、[Buildbotの認証ドキュメント]( http://docs.buildbot.net/current/developer/authz.html )を参照してください。
を開きます master.cfg
再度ファイル:
- nano ~/master/master.cfg
ファイルの最後に、ユーザー名とパスワードを変更して、次の行を追加します。
. . .
c['www']['authz'] = util.Authz(
allowRules = [
util.AnyEndpointMatcher(role="admins")
],
roleMatchers = [
util.RolesFromUsername(roles=['admins'], usernames=['Sammy'])
]
)
c['www']['auth'] = util.UserPasswordAuth({'Sammy': 'Password'})
終了したら、ファイルに対して別の構文チェックを実行します。
- buildbot checkconfig ~/master
OutputConfig file is good!
エラーが表示されない場合は、マスターサービスを再起動します。
- buildbot restart ~/master
Webインターフェイスをリロードすると、右上に「匿名」というリンクが表示され、管理機能にアクセスできなくなります。
「匿名」をクリックして追加した資格情報をテストします。ログインボックスが表示され、設定したユーザー名とパスワードを入力できます。 ログインすると、「匿名」はビルドを開始するためのアクセス権を失っていますが、「サミー」ユーザーはアクセス権を持っていることがわかります。
この時点で、Buildbotのインストールは完了し、インターフェースを保護するための最小限の手順を実行しました。 ただし、ユーザー名とパスワードはプレーンテキストで送信されています。 次のステップとして、Buildbotを本格的に使用する前に、リバースプロキシを使用してWebインターフェイスを保護することをお勧めします。
結論
このチュートリアルでは、BuildbotマスターとローカルのBuildbotワーカーを同じマシンにインストールして構成しました。 Buildbotを評価している場合は、プロジェクトのクイックツアーを利用することをお勧めします。
それ以外の場合は、次のチュートリアル BuildbotのSystemdユニットファイルを作成する方法に進み、サーバーのinitシステムがBuildbotプロセスを管理できるようにします。