前書き

GoCDは、テストおよびリリースプロセスを自動化するために設計された強力な継続的統合および配信プラットフォームです。 ビルドの比較、複雑なワークフローの視覚化、ビルドバージョンの追跡の自動化など、多くの高度な機能を備えたGoCDは、十分にテストされたソフトウェアを実稼働環境に提供するのに役立つ柔軟なツールです。

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

前提条件

the GoCD projectの推奨に基づいて、少なくとも2GのRAMと2 CPUを搭載したUbuntu 16.04サーバーが必要になります。このガイドを完了するにはコア。 さらに、https://docs.gocd.org/current/installation/system_requirements.html#additional-requirements-for-gocd-server [データを破損することなくビルドアーティファクトを処理するために]、サーバーには専用のパーティションまたはディスクが必要です。アーティファクトの保管場所として機能します。 このガイドでは、アーティファクトストレージのマウントポイントとして「+ / mnt / artifact-storage +」を使用します。

  • サーバーホストとしてDigitalOceanを使用している場合、ブロックストレージボリュームをアーティファクトストレージの場所として使用できます。 このガイドに従って、https://www.digitalocean.com/community/tutorials/how-to-use-block-storage-on-digitalocean [DigitalOceanブロックストレージボリュームをプロビジョニング、フォーマット、およびマウントする方法]を学習してください。

  • DigitalOceanを使用していない場合は、このガイドに従ってhttps://www.digitalocean.com/community/tutorials/how-to-partition-and-format-storage-devices-in-linux [パーティション分割、フォーマット、汎用ホストにデバイスをマウントします]。

サーバーが「+ / mnt / artifact-storage 」にマウントされた追加のストレージで構成されたら、https://www.digitalocean.com/community/tutorials/initial-server-setup-with-ubuntu-16-04 [ Ubuntu 16.04初期サーバーセットアップガイド] ` sudo +`権限を持つ非rootユーザーをセットアップし、基本的なファイアウォールを有効にします。 これらの手順を完了したら、このガイドに進みます。

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

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

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

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

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

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

これで、ローカルパッケージインデックスを更新して、新しいパッケージのリストをプルダウンし、ソフトウェアをインストールできます。 GoCDを実行するにはJava 8が必要なので、CIサーバーとエージェントとともに `+ default-jre `パッケージをインストールします。 また、認証ファイルの生成に使用する ` 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のhttps://github.com/gocd/gocd-filebased-authentication-plugin [ファイルベースの認証プラグイン]は、 `+ htpasswd +`ユーティリティによって作成されたユーザー認証形式を使用します。

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

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

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

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

認証ファイルを取得したら、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:  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:  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 :::                 :::*                    LISTEN      8942/java
tcp6       0      0 :::                 :::*                    LISTEN      8942/java

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

ソフトウェアが完全に起動して実行されたので、UFWファイアウォールでGoCDのHTTPSポート(ポート8154)を開くことができます。 すべての接続を保護するため、HTTPポートを開く必要はありません。

sudo ufw allow 8154

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

パスワード認証のセットアップ

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

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

https://:8154

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

image:https://assets.digitalocean.com/articles/gocd_install_1604/browser_ssl_warning.png [ブラウザーSSL警告]

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

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

image:https://assets.digitalocean.com/articles/gocd_install_1604/authorization_config_item.png [認可設定メニューの選択]

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

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

image:https://assets.digitalocean.com/articles/gocd_install_1604/enter_auth_and_check.png [認証を入力して接続を確認]

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

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

image:https://assets.digitalocean.com/articles/gocd_install_1604/gocd_login_page.png [GoCDログインページ]

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

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

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

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

image:https://assets.digitalocean.com/articles/gocd_install_1604/server_config_item.png [GoCDサーバー構成メニュー項目]

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

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

ファイアウォールを介したHTTPSポートへのアクセスのみを許可しているため、「サイトURL」に「+ https:// 」プロトコル指定子、サーバーのドメインまたはIPアドレス、「」の順に入力します。 8154 + `。 通常のURLは既に保護されているため、保護サイトのURLは空白のままにします。

image:https://assets.digitalocean.com/articles/gocd_install_1604/set_site_url.png [GoCD set site URL]

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

image:https://assets.digitalocean.com/articles/gocd_install_1604/set_artifact_location.png [GoCDセットアーティファクトの保存場所]

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

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

image:https://assets.digitalocean.com/articles/gocd_install_1604/warning.png [GoCD警告表示]

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

image:https://assets.digitalocean.com/articles/gocd_install_1604/warning_detail.png [GoCD警告詳細]

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

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

image:https://assets.digitalocean.com/articles/gocd_install_1604/available_agents.png [利用可能なエージェントのGoCDリスト]

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

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

sudo systemctl restart go-server

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

結論

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

GoCDを起動して実行したら、信頼できるSSL証明書を使用してインストールを保護することをお勧めします。 GoCDの設定方法のガイドに従ってくださいこれを設定する方法については、SSL証明書を暗号化してみましょう]をご覧ください。