開発者ドキュメント

Ubuntu16.04にBuildbotをインストールする方法

序章

Buildbotは、ソフトウェアのビルド、テスト、リリースのプロセスを自動化するためのPythonベースの継続的インテグレーションシステムです。 PythonのTwistedライブラリを使用して、ビルドマスターと1つ以上のワーカー間の非同期通信を処理し、複数のプラットフォームでのビルドのテストを容易にします。 Buildbotは高度に構成可能であり、ビルドプロセスがどのように機能するかについてほとんど想定していないため、プロジェクトの固有のニーズに合わせてツールを拡張する必要がある複雑なビルドプロセスやプロジェクトに適しています。

このチュートリアルでは、Buildbotビルドマスターとワーカーを同じマシンにインストールして構成します。

前提条件

このチュートリアルに従うには、次のものが必要です。

サーバーがセットアップされると、フォローする準備が整います。

ステップ1—Buildbotをインストールする

Buildbotプロジェクトでは、Python Package Index(pip)を使用してBuildbotをインストールし、最新バージョンを取得することをお勧めします。最新バージョンは、Ubuntuパッケージで利用できるものよりも数リリース進んでいることがよくあります。

私たちは私たちとして始めます sudo ユーザー、および使用 apt-get update パッケージの最新リストを確実に入手するには:

  1. sudo apt-get update

次に、pip自体をインストールします。

  1. sudo apt-get install python-pip

pipが利用可能になったら、それを使用してBuildbotバンドルをインストールします。これには、マスターとワーカー、およびWebインターフェイスに必要な依存関係を含むその他の依存関係が含まれます。 ピップは作成します .cache それを実行するユーザーのホームディレクトリ内のファイル。 使用します sudo-H これらのファイルを正しい場所に配置するためのフラグ:

  1. 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の最新リリースにアップグレードするために少し時間がかかります。

  1. sudo -H pip install --upgrade pip
Output
Collecting 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のインストールを確認します。

  1. buildbot --version
Output
Buildbot version: 1.0.0 Twisted version: 17.9.0

チュートリアルの前提条件では、SSHトラフィックのみを許可するようにUFWファイアウォールを構成しました。 ステータスを確認します。

  1. sudo ufw status
Output
Status: active To Action From -- ------ ---- OpenSSH ALLOW Anywhere OpenSSH (v6) ALLOW Anywhere (v6)

BuildbotはWebインターフェイスにポート8010を使用しますが、これは許可されていないため、ここで開きます。

  1. sudo ufw allow 8010

次に、Buildbotサービスを実行するための専用のシステムユーザーとグループを追加します。

  1. sudo addgroup --system buildbot
  2. sudo adduser buildbot --system --ingroup buildbot --shell /bin/bash

最後に、Buildbotをインストールするための新しいユーザーとしてログインします。

  1. sudo --login --user buildbot

これにより、としてログインします buildbot ユーザーと私たちを /home/buildbot マスターとワーカーを構成するディレクトリ:

ステップ2—マスターの構成

buildbotコマンドを使用します create-master その後にベースディレクトリの値が続きます。

  1. buildbot create-master ~/master
Output
mkdir /home/buildbot/master creating /home/buildbot/master/master.cfg.sample creating database (sqlite:///state.sqlite) buildmaster configured in /home/buildbot/master

次にコピーします master.cfg.samplemaster.cfg 参照用にオリジナルをそのままにしておきます。

  1. cp ~/master/master.cfg.sample ~/master/master.cfg

次に、ファイルを編集して、ローカルマシンからWebインターフェイスにアクセスできるようにします。

  1. 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 行、保存してファイルを終了します。

次のように入力して、マスターの構成を確認します。

  1. buildbot checkconfig ~/master

構文に問題がない場合は、次のメッセージで終わる出力が表示されます。

Output
. . . Config file is good!

出力に構文エラーがあったことが示されている場合は、戻ってファイルを再度確認してください。 一度 checkconfig コマンドは成功を示し、マスターを起動します。

  1. buildbot start ~/master

再起動が成功すると、次の確認が表示されます。

Output
Following 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-workercreate-worker コマンドと4つの設定の受け渡し:

  1. buildbot-worker create-worker ~/worker localhost example-worker pass
Output
mkdir /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> 名前とメールアドレスに置き換えます。

  1. nano ~/worker/info/admin
〜/ worker / info / admin
Sammy Shark <sammy@digitalocean.com>

完了したら、ファイルを保存して終了します。

The info/host ファイルは、慣例により、OS、バージョン、メモリサイズ、CPU速度、インストールされている関連ライブラリのバージョン、そして最後にワーカーで実行されているBuildbotバージョンを提供します。

ファイルを開いて関連情報を貼り付け、システムの必要に応じてサンプルコンテンツを更新します。

  1. nano ~/worker/info/host

システムの詳細を反映するために使用する情報を更新します。

〜/ worker / info / host
Ubuntu 16.04.2 2GB Droplet - Buildbot version: 1.0.0 - Twisted version: 17.1.0

完了したら、保存して終了します。 最後に、ワーカーを開始します。

  1. buildbot-worker start ~/worker
Output
Following twistd.log until startup finished.. The buildbot-worker appears to have (re)started correctly.

マスターとワーカーの両方が構成されて実行されたので、テストビルドを実行します。

ステップ4—テストビルドの実行

テストビルドを実行するには、Webインターフェイスで[ビルド]メニューを開き、[ワーカー]を選択します。 サンプルワーカーと設定した情報 info/admininfo/host 表示されます。 ここから、デフォルトのビルダーである「runtests」をクリックして、ビルドを強制できます。

「runtests」画面には、最初のビルド要求が行われるまでほとんど情報がありません。 画面の右上にある[強制]ボタンをクリックして、強制します。

これにより、強制ビルドに関する情報を入力できるダイアログが表示されます。

このテストビルドでは、フィールドを空白のままにして、ポップアップウィンドウの[ビルドの開始]ボタンをクリックします。 「あなたの名前」フィールドに値を入力する場合は、有効なメールアドレスが含まれている必要があることに注意してください。

数秒で、ビルドは正常に完了するはずです。

名前の横にある番号または矢印をクリックすると、ビルドの各ステップの詳細を調べることができます。

このビルドを実行するためにログインする必要がないことに気付いたかもしれません。 デフォルトでは、誰でも管理機能にアクセスできるため、終了する前に、それをロックしてユーザーアカウントを作成します。 使用可能なオプションの詳細については、[Buildbotの認証ドキュメント]( http://docs.buildbot.net/current/developer/authz.html )を参照してください。

を開きます master.cfg 再度ファイル:

  1. 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'})

終了したら、ファイルに対して別の構文チェックを実行します。

  1. buildbot checkconfig ~/master
Output
Config file is good!

エラーが表示されない場合は、マスターサービスを再起動します。

  1. buildbot restart ~/master

Webインターフェイスをリロードすると、右上に「匿名」というリンクが表示され、管理機能にアクセスできなくなります。

「匿名」をクリックして追加した資格情報をテストします。ログインボックスが表示され、設定したユーザー名とパスワードを入力できます。 ログインすると、「匿名」はビルドを開始するためのアクセス権を失っていますが、「サミー」ユーザーはアクセス権を持っていることがわかります。

この時点で、Buildbotのインストールは完了し、インターフェースを保護するための最小限の手順を実行しました。 ただし、ユーザー名とパスワードはプレーンテキストで送信されています。 次のステップとして、Buildbotを本格的に使用する前に、リバースプロキシを使用してWebインターフェイスを保護することをお勧めします。

結論

このチュートリアルでは、BuildbotマスターとローカルのBuildbotワーカーを同じマシンにインストールして構成しました。 Buildbotを評価している場合は、プロジェクトのクイックツアーを利用することをお勧めします。

それ以外の場合は、次のチュートリアル BuildbotのSystemdユニットファイルを作成する方法に進み、サーバーのinitシステムがBuildbotプロセスを管理できるようにします。

モバイルバージョンを終了