Ubuntu16.04にBuildbotをインストールする方法
序章
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インターフェイスに必要な依存関係を含むその他の依存関係が含まれます。 Pipは、それを実行するユーザーのホームディレクトリに.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アドレスまたはドメイン名に置き換えます。
〜/ master / master.cfg
c['buildbotURL'] = "http://IP_or_site_domain:8010/"
注: master.cfg
は、「ワーカー」セクションでワーカーを事前定義します。
〜/ master / 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グローバル構成ドキュメントを参照してください。
〜/ master / master.cfg
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.
最後に、構成したbuildbotURL
のポート8010のWebブラウザーでサイトにアクセスしてみましょう。
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
ディレクトリ内のファイルが実行されるビルドマスターに送信されます。 これらはWebインターフェイスに表示され、開発者にテストの失敗に関する詳細情報を提供します。
これらを構成します。 まず、管理者の電子メールを含むファイルを開き、例の行Your Name Here <[email protected]>
を削除して、名前と電子メールアドレスに置き換えます。
nano ~/worker/info/admin
〜/ worker / info / admin
Sammy Shark <[email protected]>
完了したら、ファイルを保存して終了します。
info/host
ファイルは、慣例により、OS、バージョン、メモリサイズ、CPU速度、インストールされている関連ライブラリのバージョン、そして最後にワーカーで実行されているBuildbotバージョンを提供します。
ファイルを開いて関連情報を貼り付け、システムの必要に応じてサンプルコンテンツを更新します。
nano ~/worker/info/host
システムの詳細を反映するために使用する情報を更新します。
〜/ 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
ファイルの最後に、ユーザー名とパスワードを変更して、次の行を追加します。
ファイル:〜/ 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プロセスを管理できるようにします。