前書き

Buildbotは、ソフトウェアのビルド、テスト、およびリリースのプロセスを自動化するためのPythonベースの継続的統合システムです。 Pythonのhttps://pypi.python.org/pypi/Twisted[Twisted library]を使用して、ビルドマスターと1つ以上のワーカー間の非同期通信を処理し、複数のプラットフォームでのビルドのテストを容易にします。 Buildbotは高度に構成可能であり、ビルドプロセスがどのように機能するかについてほとんど仮定しないため、プロジェクト固有のニーズに合わせてツールを成長させる必要がある複雑なビルドプロセスまたはプロジェクトに適しています。

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

前提条件

このチュートリアルを実行するには、次のものが必要です。

  • *非ルートの「+ sudo +」ユーザーとhttps://www.digitalocean.com/community/tutorials/initial-server-で説明されているファイアウォールで構成された、少なくとも1 GBのRAMを備えたUbuntu 16.04サーバーsetup-with-ubuntu-16-04 [Ubuntu 16.04初期サーバーセットアップガイド]。

サーバーのセットアップが完了したら、準備は完了です。

ステップ1-Buildbotのインストール

Buildbotプロジェクトは、Pythonパッケージインデックス(pip)を使用してBuildbotをインストールし、最新バージョンを取得することを推奨しています。

+ 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

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

nano ~/master/master.cfg

デスクトップまたは他のデバイスからウェブインターフェースにアクセスするには、「+ buildbotURL 」を「 localhost 」からサーバーのIPアドレスまたはドメイン名に変更します。 また、使用状況レポートポリシーも設定します。 他の重要な設定値は ` master.cfg +`で設定されますが、ここでは残りのデフォルトを保持します。

ファイルの下部近くで、 `+ buildbotURL `行を見つけ、 ` localhost +`をサイトのIPアドレスまたはドメイン名に置き換えます。

〜/ master / master.cfg

c['buildbotURL'] = "http://:8010/"

次に、ファイルの下部で、 `+ buildbotNetUsageData `ディレクティブの値を設定します。 これは、Buildbotがアプリケーションの改善を支援するために使用統計を開発者に報告するかどうかを定義します。 これを無効にするには、これを「 None 」に設定します。 使用法に関する基本的な情報を送り返したい場合は、代わりに文字列 `” basic “+`を使用します。 +この設定の詳細については、https://docs.buildbot.net/latest/manual/cfg-global.html#buildbotnetusagedata [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://:8010 / +

image:https://assets.digitalocean.com/articles/buildbot-install-ubuntu-1604/buildbot-welcome.png [Buildbotのウェルカム画面のスクリーンショット]

マスターを実行し、ウェブインターフェースにアクセスできることを確認したら、サンプルワーカーを作成します。

ステップ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 +`ディレクトリ内のファイルを実行するビルドマスターに送信します。 これらはウェブインターフェースに表示され、テストの失敗に関する詳細情報を開発者に提供します。

これらを設定します。 最初に、管理者の電子メールを含むファイルを開き、「+ Your Name Here <[email protected]> + `」の例の行を削除して、名前とメールアドレスに置き換えます。

nano ~/worker/info/admin

〜/ worker / info / admin

<>

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

慣例により、 `+ 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-テストビルドの実行

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

image:https://assets.digitalocean.com/articles/buildbot-install-ubuntu-1604/buildbot-workers.png [Buildbotのワーカー画面のスクリーンショット]

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

image:https://assets.digitalocean.com/articles/buildbot-install-ubuntu-1604/buldbot-force.png [強制ボタンを示すスクリーンショット]

これにより、強制ビルドに関する情報を入力できるダイアログが表示されます。 + image:https://assets.digitalocean.com/articles/buildbot-install-ubuntu-1604/buildbot-info.png [Buildbotの強制ビルドポップアップのスクリーンショット]

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

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

image:https://assets.digitalocean.com/articles/buildbot-install-ubuntu-1604/buildbot-success.png [ビルドの成功を示すスクリーンショット]

ビルドの各ステップの詳細を調べるには、名前の横にある数字または矢印をクリックします。

image:https://assets.digitalocean.com/articles/buildbot-install-ubuntu-1604/buildbot-build-details.png [ここに画像の説明を入力]

このビルドを実行するためにログインする必要がないことに気づいたかもしれません。 デフォルトでは、誰でも管理機能にアクセスできます。そのため、作業を終える前に、それをロックダウンしてユーザーアカウントを作成します。 利用可能なオプションの詳細については、[Buildbot’s Authorization documentation]。(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=[''])
      ]
)
c['www']['auth'] = util.UserPasswordAuth({'': ''})

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

buildbot checkconfig ~/master
OutputConfig file is good!

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

buildbot restart ~/master

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

image:https://assets.digitalocean.com/articles/buildbot-install-ubuntu-1604/buildbot-anonymous.png [ここに画像の説明を入力]

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

image:https://assets.digitalocean.com/articles/buildbot-install-ubuntu-1604/buildbot-sammy.png [ここに画像の説明を入力]

この時点で、Buildbotのインストールが完了し、インターフェイスを保護するための最小限の手順を実行しました。 ただし、ユーザー名とパスワードはプレーンテキストで送信されます。 次のステップとして、またBuildbotを本格的に使用する前に、http://docs.buildbot.net/current/manual/cfg-www.html?highlight = reverse%20proxy#reverse-proxy-でWebインターフェースを保護することをお勧めします。構成[リバースプロキシ]。

結論

このチュートリアルでは、BuildbotマスターとローカルBuildbotワーカーを同じマシンにインストールして構成しました。 Buildbotを評価する場合は、プロジェクトのhttp://docs.buildbot.net/current/tutorial/tour.html [クイックツアー]をご覧ください。

それ以外の場合は、次のチュートリアルhttps://www.digitalocean.com/community/tutorials/how-to-create-systemd-unit-files-for-buildbot[BuildbotのSystemdユニットファイルの作成方法]に進み、許可しますBuildbotプロセスを管理するサーバーの初期化システム。