Ubuntu16.04にGoCDをインストールして構成する方法

提供:Dev Guides
移動先:案内検索

序章

GoCD は、テストとリリースのプロセスを自動化するように設計された強力な継続的インテグレーションおよびデリバリープラットフォームです。 GoCDは、ビルドの比較、複雑なワークフローの視覚化、ビルドバージョンの追跡の自動化などの多くの高度な機能を備えており、チームが十分にテストされたソフトウェアを本番環境に提供するのに役立つ柔軟なツールです。

このガイドでは、Ubuntu16.04でGoCDサーバーをセットアップする方法を示します。 サーバーとエージェントをインストールして、プロジェクトが提供するパッケージを使用してCI/CD作業を完了します。 その後、認証を構成し、サーバーをセットアップするためのいくつかの基本的なオプションを変更します。

前提条件

GoCDプロジェクトの推奨事項に基づいて、このガイドを完了するには、少なくとも2GのRAMと2つのCPUコアを備えたUbuntu16.04サーバーが必要です。 さらに、データを破損せずにビルドアーティファクトを処理するために、サーバーにはアーティファクトの保存場所として機能する専用のパーティションまたはディスクが必要です。 このガイドでは、アーティファクトストレージのマウントポイントとして/mnt/artifact-storageを使用します。

  • サーバーホストとしてDigitalOceanを使用している場合は、アーティファクトの保存場所としてブロックストレージボリュームを使用できます。 このガイドに従って、 DigitalOceanブロックストレージボリュームをプロビジョニング、フォーマット、およびマウントする方法を学習してください。
  • DigitalOceanを使用していない場合は、このガイドに従って、汎用ホストでデバイスをパーティション分割、フォーマット、およびマウントする方法を学習してください。

サーバーが/mnt/artifact-storageにマウントされた追加のストレージで構成されたら、 Ubuntu 16.04初期サーバーセットアップガイドに従って、sudo特権を持つ非rootユーザーをセットアップし、基本的なファイアウォール。 これらの手順を完了したら、このガイドに進んでください。

GoCDサーバーとエージェントのインストール

まず、GoCDプロジェクトが提供する専用リポジトリからサーバーとエージェントのパッケージをダウンロードしてインストールします。

まず、次のように入力して、新しいリポジトリ定義をAPTソース構成ディレクトリに追加します。

echo "deb https://download.gocd.org /" | sudo tee /etc/apt/sources.list.d/gocd.list

また、GoCDパッケージの署名を検証できるように、GoCDGPGキーをAPTに追加する必要があります。 次のように入力して、キーをダウンロードしてシステムに追加できます。

curl https://download.gocd.org/GOCD-GPG-KEY.asc | sudo apt-key add -

これで、ローカルパッケージインデックスを更新して、新しいパッケージのリストを取得し、ソフトウェアをインストールできます。 GoCDを実行するにはJava8が必要なので、default-jreパッケージをCIサーバーおよびエージェントと一緒にインストールします。 また、認証ファイルの生成に使用するapache2-utilsパッケージもインストールします。

sudo apt-get update
sudo apt-get install default-jre go-server go-agent apache2-utils

依存関係と継続的インテグレーションソフトウェアがダウンロードされ、サーバーにインストールされます。

初めて使用するためのGoCDの準備

GoCDサーバーを起動する前に、コマンドラインでいくつかのタスクを完了して準備をします。

まず、GoCDプロセスがアーティファクトのマウントポイントにアクセスできることを確認して、そこにアセットを保存できるようにする必要があります。 CIサーバーはgoユーザーおよびグループとして実行されるため、それに応じて/mnt/artifact-storageマウントポイントの所有権を割り当てることができます。

sudo chown -R go:go /mnt/artifact-storage

次に、認証情報用のパスワードファイルを作成して入力します。 GoCDのファイルベースの認証プラグインは、htpasswdユーティリティによって作成されたユーザー認証形式を使用します。

以下のコマンドの-Bオプションは、bcrypt暗号化アルゴリズムを選択します。 -cオプションは、htpasswdに、指定されたパスに新しい認証ファイルを作成するように指示します。 コマンドは、パスワードを作成するユーザー名で終了します。 このユーザー名はオペレーティングシステムのユーザーとは完全に別のものであるため、この値には好きなものを使用できます。

sudo htpasswd -B -c /etc/go/authentication sammy

新しいユーザーのパスワードを入力して確認するように求められます。 ユーザー名とパスワードの暗号化されたバージョンがファイルに書き込まれます。

OutputNew password:
Re-type new password:
Adding password for user sammy

:ファイルに複数のユーザー名とパスワードの組み合わせを追加して、追加のログインを許可できます。 ただし、最初のユーザーを追加した後、-cオプションを指定せずにhtpasswdコマンドを呼び出す必要があります。

sudo htpasswd -B /etc/go/authentication next_user

最初のユーザーの後に-cオプションを使用すると、htpasswdは、既存のクレデンシャルに追加するのではなく、すべてのクレデンシャルを置き換えます。


認証ファイルを取得したら、GoCDサーバーとエージェントのプロセスを開始できます。 これは完了するまでに時間がかかる場合があります。

sudo systemctl start go-server go-agent

コマンドが終了した後でも、プロセスは完全には稼働していません。 まず、サービスが正常に開始されたことを確認します。

sudo systemctl status go-*

出力がこれに似ている場合は、両方のプロセスがsystemdによって初期化されています。

Output● go-agent.service - LSB: Go Agent
   Loaded: loaded (/etc/init.d/go-agent; bad; vendor preset: enabled)
   Active: active (exited) since Thu 2017-07-27 19:39:18 UTC; 1min 36s ago
     Docs: man:systemd-sysv-generator(8)
  Process: 8911 ExecStart=/etc/init.d/go-agent start (code=exited, status=0/SUCCESS)

. . .
Jul 27 19:39:18 go5 systemd[1]: Started LSB: Go Agent.

● go-server.service - LSB: Go Server
   Loaded: loaded (/etc/init.d/go-server; bad; vendor preset: enabled)
   Active: active (exited) since Thu 2017-07-27 19:39:33 UTC; 1min 21s ago
     Docs: man:systemd-sysv-generator(8)
  Process: 8867 ExecStop=/etc/init.d/go-server stop (code=exited, status=0/SUCCESS)
  Process: 8907 ExecStart=/etc/init.d/go-server start (code=exited, status=0/SUCCESS)

. . .
Jul 27 19:39:33 go5 systemd[1]: Started LSB: Go Server.

次に、サービスがポート8153と8154にバインドされるのを待つ必要があります。 GoCDは、最初のポートでHTTPトラフィックをリッスンし、2番目のポートでHTTPSで保護されたトラフィックをリッスンします。 プロセスは完了していますが、まだWebトラフィックの受け入れを開始していない可能性があります。

次のように入力して、現在リッスンされているポートを監視します。

sudo watch netstat -plnt

これにより、リッスンしているTCPポートがチェックされ、2秒ごとに画面が更新されます。 GoCDがポート8153および8154のリッスンを開始すると、画面は次のようになります。

OutputEvery 2.0s: netstat -plnt                                                    Thu Jul 27 20:16:20 2017

Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      1736/sshd
tcp6       0      0 :::22                   :::*                    LISTEN      1736/sshd
tcp6       0      0 :::8153                 :::*                    LISTEN      8942/java
tcp6       0      0 :::8154                 :::*                    LISTEN      8942/java

これらのリスニングポートが表示されたら、CTRL-Cを押してプロセスモニターを終了します。

ソフトウェアが完全に稼働しているので、UFWファイアウォールでGoCDのHTTPSポート(ポート8154)を開くことができます。 すべての接続を安全にしたいので、HTTPポートを開く必要はありません。

sudo ufw allow 8154

警告:ポート8154が開かれると、すべてのインターフェイスでGoCDWebインターフェイスにアクセスできるようになります。 htpasswdコマンドで/etc/go/authenticationファイルを作成してインターフェイスをロックダウンする準備をしましたが、現在GoCDではパスワード認証が有効になっていません。 これは次のセクションで構成する最初の項目であり、CI/CDサーバーを保護するためにできるだけ早くその手順を完了する必要があります。


これでサーバーが稼働しています。 Webインターフェイスに接続して、構成を続行します。

パスワード認証の設定

GoCDサーバーコンポーネントが初期化されて接続をリッスンし、ファイアウォールが接続を許可すると、Webブラウザーでサービスに接続できます。

ブラウザで、https://プロトコルに続けて、サーバーのドメイン名またはIPアドレスを指定し、:8154ポートの指定で終了します。

https://server_domain_or_IP:8154

ブラウザには、サービスのSSL証明書が信頼できる認証局によって署名されていないことを示す警告が表示される可能性があります。

GoCDは証明書に自己署名するため、これは予想される動作です。 ADVANCED またはブラウザで利用可能な同様のオプションをクリックして、とにかくリクエストを続行することを選択します。

最初にGoCDに接続すると、パイプライン定義画面が表示されます。 パイプラインをすぐに定義するのではなく、htpasswdで以前に作成したパスワードファイルを使用して認証を有効にすることを優先する必要があります。 上部のナビゲーションメニューでADMINをクリックし、セキュリティサブメニューで認証構成を選択します。

次のページで、右上隅にある追加ボタンをクリックします。 認証プロバイダーの詳細を入力できる画面が表示されます。

まず、Idフィールドに新しい認証方法の任意の名前を入力します。 プラグインIDの選択を「GoCD用のパスワードファイル認証プラグイン」に設定したままにします。 最後に、パスワードファイルパスボックスに、htpasswdで作成したファイルである/etc/go/authenticationと入力します。 終了したら、接続の確認をクリックして、GoCDがファイルに正しくアクセスできることを確認します。

GoCDに「接続OK」メッセージが表示された場合は、保存をクリックして新しい認証を実装します。

新しいスキームを使用して認証するように求められます。 これは、最初に標準のブラウザログインボックスとして表示されるか、GoCDログインページにリダイレクトされる場合があります。 構成したユーザー名とパスワードを使用してログインします。

GoCDのインストールは、不正アクセスを防ぐためにパスワードで保護されています。

サイトのURLとアーティファクトの場所の設定

Webインターフェースが適切に保護されたので、WebUIを介してCIサーバーの構成を完了することができます。

Webインターフェイスに再度ログインした後、トップメニューの ADMIN をクリックし、ドロップダウンメニューからサーバー構成を選択します。

いくつかの設定を調整できるメインの構成ページに移動します。

最初に確認する必要があるのは、ページのサーバー管理セクション内のサイトURLです。 GoCDは、CIサーバーのURLを決定する2つの設定、「サイトURL」と「セキュアサイトURL」を提供します。 「サイトURL」は、ほとんどの状況で使用されるデフォルトのサイトURLです。 「セキュアサイトURL」は、通常の「サイトURL」がHTTPを使用するように構成されており、GoCDが機密データを送信する必要がある場合に使用されます。 「サイトURL」がHTTPSアドレスを使用する場合、すべての接続が暗号化され、「セキュアサイトURL」を設定する必要はありません。

ファイアウォールを介したHTTPSポートへのアクセスのみを許可しているため、サイトURLhttps://プロトコル指定子、サーバーのドメインまたはIPアドレス、[ X205X]。 通常のURLはすでに安全であるため、安全なサイトのURLは空白のままにします。

次に、ページの PipelineManagementセクションまで下にスクロールします。 Artifacts DirectoryLocationを前に作成した/mnt/artifact-storageマウントポイントに設定します。 GoCDでアーティファクトの保持を自動的に管理する場合は、オプションでアーティファクトの削除ポリシーを調整できます。 アーティファクトを手動で管理するには、「しない」のままにします。

終了したら、ページの下部にある SAVE ボタンをクリックして、変更を実装します。

上部のメニューバーに警告が表示される場合があります。

警告インジケータをクリックすると、GoCDが再起動されるまで/mnt/artifact-storageの場所を使用しないことを通知する完全な警告メッセージが表示されます。

X をクリックして、警告メッセージを終了します。

サーバーを再起動する前に、エージェントがサーバーに正常に登録されたことを確認しましょう。 トップメニューのAGENTS項目をクリックします。 エージェントのリストが表示されます。

開始したエージェントプロセスはサーバーに正常に登録され、そのステータスは「アイドル」に設定されています。 これは、エージェントが有効になっているが、作業が割り当てられていないことを意味します。これは、私たちが期待していることです。

エージェントが存在することを確認したので、GoCDサーバープロセスを再起動して、アーティファクトの場所の変更を完了することができます。 コマンドラインに戻り、次のように入力してサービスを再起動します。

sudo systemctl restart go-server

サービスが再起動し、ポート8154での接続のリッスンを再開すると、WebUIに再接続できるようになります。

結論

このガイドでは、Ubuntu16.04で実行されるGoCDサーバーとエージェントをインストールして構成しました。 生成されたビルドアセットを処理するために別のパーティションに専用のアーティファクトストレージスペースを設定し、Webインターフェイスを保護するために認証を構成しました。

GoCDが起動して実行されたら、次のステップとして、信頼できるSSL証明書を使用してインストールを保護することをお勧めします。 Let's Encrypt SSL証明書を使用してGoCDを構成する方法のガイドに従って、これを設定する方法を学習してください。