16.04前書きGitLabは、ソフトウェアチームが完全な開発および配信ライフサイクルを管理するために使用するオープンソースツールです。GitLabは、問題追跡、gitリポジトリ、継続的統合、コンテナレジストリ、展開、監視などの幅広い機能を提供します。これらの機能はすべて、単一のアプリケーションとしてゼロから構築されています。[GitLab.com]を使用できます。これは、オープンソースプロジェクトがすべての最上位機能を無料で入手できるクラウドサービスです。CD)機能は、展開する前にすべてのコードをテストする習慣を構築する効果的な方法です。Runnerのおかげで非常にスケーラブルです。GitLabRunnerは、コードをリリースしようとする開発チームの長い待ち時間を避けるために、ビルドキューのスケーリングを自動化します。このガイドでは、独自のコストを管理し、使用可能なサーバー容量を増減することで負荷に自動的に対応する、高度にスケーラブルなGitLabインフラストラクチャを構成する方法を示します。CDプロセスをDigitalOcean上に構築します。Runnerプロセスによって生成され、ジョブが実行されていないときに自動的に削除されるため、チームのコストと管理オーバーヘッドが削減されます。このチュートリアルで説明するように、任意の時点で作成されるマシンの数と、それらが破壊されるまで保持される時間の長さを制御できます。このプロジェクトを構築するために3つの個別のサーバーを使用するので、最初に用語について説明します。*:コードリポジトリが保存されているホストされたGitLabインスタンスまたは自己ホストされたインスタンス。*:_bastion_サーバーまたはDropletは、構成するものの中核です。APIと対話してドロップレットを作成し、必要に応じてドロップレットを破棄するために使用されるのは、コントロールインスタンスです。このサーバーではジョブは実行されません。CDジョブを実行する必要があるときに、_bastion_サーバーによってオンザフライで作成される一時的なサーバーまたはドロップレットです。これらのサーバーは使い捨てであり、ビルドが合格または失敗としてマークされる前にコードが実行またはテストされる場所です。CDプロセスでは、要求に応じてレスポンシブにスケーリングできます。これらの目標を念頭に置いて、GitLabとDigitalOceanによる継続的な展開のセットアップを開始する準備ができています。前提条件このチュートリアルでは、ご使用のサーバー上またはホストされたサービスを介してGitLabが既に構成されており、既存のDigitalOceanアカウントがあることを前提としています。16.04でGitLabをインストールおよび構成する方法]。このチュートリアルでは、このDropletでプライベートネットワークが有効になっていることを前提としています。[既存のドロップレットでDigitalOceanプライベートネットワーキングを有効にする方法]、しかし必須ではありません。このチュートリアルでは、Dropletsで管理者権限を持つ非ルートユーザーを使用します。ステップ1-JavaScriptプロジェクトのインポートまず、サンプルのNode.jsアプリケーションを含む既存のGitLabインスタンスに新しいサンプルプロジェクトを作成します。Interface]GitLabインスタンスにログインし、プラスアイコン*をクリックして、ドロップダウンメニューから[*新しいプロジェクト]を選択します。*をクリックして、サンプルプロジェクトをGitHubから直接インポートします。以下のクローンURLをGitリポジトリURLに貼り付けます。https://github.com/do-community/hello_hapi.gitこのリポジトリはデモンストレーションを目的とした基本的なJavaScriptアプリケーションであり、実稼働環境では実行しません。インポートを完了するには、[新しいプロジェクト]ボタンをクリックします。新しいプロジェクトがGitLabに追加され、CIパイプラインのセットアップを開始できます。Runnerには、CIロードの増減に応じて処理するドロップレットをプログラムで作成することを計画しているため、特定の構成が必要です。*インスタンスの2種類のマシンを作成します。要塞インスタンスは、Dockerを使用してランナーを作成します。使用するDigitalOcean製品と、各コンポーネントの用途は次のとおりです。Runner向けにメモリ最適化されたドロップレットを作成します。将来、必要に応じてこのドロップレットを縮小または拡大できますが、負荷がかかった状態でパイプラインがどのように実行されるかを理解するための出発点として、柔軟なドロップレットオプションをお勧めします。Spaces]を使用して、ランナーの作成および破棄時にキャッシュされたビルドコンポーネントをランナー全体に保持します。これにより、CIパイプラインがビジー状態のときに新しいランナーを設定するのに必要な時間が短縮され、新しいランナーは他の人がすぐに中断したところを見つけることができます。プライベートネットワーキング-安全なコードコンパイルを確保し、必要なファイアウォール構成を削減するために、要塞DropletおよびGitLabランナー用のプライベートネットワークを作成します。要塞ドロップレットを作成します。Dropletを作成し、画像を選択*で、*ワンクリックアプリ*タブを選択します。*(このバージョンは執筆時点で最新であることに注意してください)を選択し、要塞Dropletが実際にテストを実行するのではなく、他のDropletの作成を管理するため、利用可能な最小のDropletサイズを選択します。Spaces]を含むデータセンターにサーバーを作成することをお勧めします。*プライベートネットワーキング*および*モニタリング*オプションの両方を選択し、*ドロップレットの作成*をクリックします。キャッシュに使用されるストレージスペースを設定する必要があります。「https://www.digitalocean.com/community/tutorials/how-to-create-a-digitalocean-space-and-api-key[DigitalOceanスペースとAPIキーを作成する方法]」の手順に従って作成しますホストされているGitLabインスタンスと同じまたは最も近いデータセンターにある新しいスペースとAPIキー。このキーは、チュートリアルの後半で必要になるため、メモしておいてください。Runnerを構成できます。GitLabおよびGitHubリポジトリからスクリプトをインストールします。ベストプラクティスとして、以下のすべてのコマンドを実行する前に、スクリプトを調べて、インストールする内容を確認してください。Runnerリポジトリ]をUbuntuのパッケージマネージャーに追加します。Runnerアプリケーションをインストールします。*をインストールする必要があります。RunnerをGitLabインストールに接続します。Runnerを既存のGitLabインストールにリンクするには、ランナーをコードリポジトリに認証するトークンを取得して、2つのインスタンスをリンクする必要があります。既存のGitLabインスタンスに管理ユーザーとしてログインし、レンチアイコンをクリックして管理設定領域に入ります。画面の左側にある[概要]にカーソルを合わせ、表示されるリストから[ランナー]を選択します。[新しいプロジェクトの共有ランナーをセットアップする方法]セクションの[ランナー]ページで、ステップ3に示すトークンをコピーし、ステップ2のGitLabインスタンスのパブリックにアクセス可能なURLとともにメモします。GitlabにHTTPSを使用している場合、それが自己署名証明書ではないことを確認してください。Runnerが起動に失敗します。手順5-BastionドロップレットでGitLabを構成する要塞ドロップレットを使用してSSH接続に戻り、次のコマンドを実行します。registerこれによりリンクプロセスが開始され、一連の質問が表示されます。https://gitlab.com)GitLabインスタンスから取得したトークンを入力します。Webインターフェースで認識しやすい説明を入力してください。+」のような一意の名前を付けることをお勧めします。runner関連する場合は、ランナーでビルドするコードのタグを入力できます。この段階では空白のままにすることをお勧めします。これは、後でGitLabインターフェイスから簡単に変更できます。separated):ランナーがタグなしジョブを実行できるかどうかを選択します。この設定により、ランナーがタグなしでリポジトリを構築するか、特定のタグを必要とするかを選択できます。この場合はtrueを選択して、ランナーがすべてのリポジトリを実行できるようにします。[true/false]:このランナーをプロジェクト間で共有するか、現在のプロジェクトにロックするかを選択して、指定されたもの以外のコードのビルドをブロックします。現時点ではfalseを選択します。これは後でGitLabのインターフェースで変更できます。[true/false]:マシンをビルドするエグゼキューターを選択します。shell:明示的に定義していないプロジェクトに使用する画像を尋ねられます。基本的な安全なデフォルトを選択します。Runnerページ内に表示されます。documentation]にトラブルシューティングのオプションが含まれています。Spacesでよく使用されるコンテナーの画像を保存します。Machineをアップグレードします。Runnerが使用するアクセストークンのセットアップに進むことができます。RunnerがDigitalOceanアカウントを使用して新しいドロップレットを作成するために使用する資格情報を作成する必要があります。