マルチクラウド時代の最強コンビ RancherによるKubernetes活用ガイド 5

GitLabを用いた継続的インテグレーション

連載5回目となる今回は、GitLab CIを用いた継続的インテグレーション(CI)について解説します。

藤原 涼馬

2019年4月25日 10:48

GitLabを用いた継続的インテグレーション

前回(RancherとCI/CD)は、 そもそも継続的インテグレーション(CI)、継続的デプロイ・デリバリ(CD)とは何なのかという説明と、CI/CDを実現するためのツールとしてRancher PipelineとGitLab CI/CDを紹介しました。今回は一旦Rancherから離れ、GitLab CIを用いた継続的インテグレーションの実現方法について解説します。

最初にサンプルサプリケーションの構成について解説した後、今回利用するGitLab.comのアカウントおよび、プロジェクトの作成について説明します。その上でサンプルアプリケーションの実装とテストを解説した後、Dockerイメージの自動ビルドと自動テストをGitLabを活用して実現する方法を説明します。

サンプルアプリケーションの構成解説

まずサンプルとなるアプリケーションですが、ここではアプリケーションの実装とテスト、CIパイプラインの実装をお見せするのが主眼なので、おしゃれなUIを備えたWebアプリケーションや、高機能なCLIアプリケーションではなく、ごくシンプルなアプリケーションの作成にとどめたいと思います。

ここで、題材とするアプリケーションはREST APIで動作するシンプルなサーバサイドアプリケーションです(最終的にはマルチユーザ対応のToDo管理アプリケーションのクライアント・サーバサイド実装とする予定です)。構成イメージは図1に示す形になります。

図1:アプリケーションの構成イメージ

図1:アプリケーションの構成イメージ

もう少し具体的に理解してもらう目的で、今回作成するアプリケーションのソフトウェア構成を表1に示します。

表1:アプリケーションの構成

コンポーネント 構成 補足
Webサーバ Nginx 実体はNGINX Ingress Controller
サーバアプリケーション Python 3.6.6
Django 2.1.5
Django REST framework 3.9.1
pyenvvenvを利用
クライアントアプリケーション Go 1.11.5 goenvおよびGOPATHの切り替えにdirenvを利用。今回は出番なし
データベース MySQL 5.7 今回は出番なし

サーバアプリケーションは少ない手数でRESTアプリケーションを書くという意図のもと、PythonとDjango REST Frameworkを利用します。今回、データベースの出番はありませんがMySQLを選択しました。

今回は作成の対象外ですが、クライアントサイドのアプリケーションはCLIアプリケーションを想定しています。どんな言語でもCLIアプリケーションの作成自体は可能ですが、配布および導入の容易化という観点からGo言語を採用します。

GitLab.comの準備

では、アプリケーションの構成について解説したので早速実装を始めたいところですが、ソースコードのリポジトリを準備しなければいけません。今回はGitLabのSaaS版であるGitLab.comを利用します。

アカウントの作成とログイン

GitLab.comのサインイン画面にアクセスし、画面の指示に従ってアカウントを作成してログイン、またはソーシャルアカウント(Google、Twitter)や、他のリポジトリサービスのアカウント(GitHub、Bitbucket)を使ってログインしてください(図2)。

ただし、ソーシャルログインを利用した場合、そのままではプライベートリポジトリからのコードのクローンやプッシュができないので、別途ログイン後にパスワードの設定が必要です(今回の本題からは外れるため、手順の解説は省略します)。

図2:GitLab.comのサインイン画面(https://gitlab.com/users/sign_in)

図2:GitLab.comのサインイン画面(https://gitlab.com/users/sign_in)

プロジェクトの作成

GitLabにログイン後、画面左上のドロップダウンメニュー(図3(1))を開き、New projectを選択(図3(2))します。

図3:ドロップダウンメニューのリポジトリ作成ボタン

図3:ドロップダウンメニューのリポジトリ作成ボタン

プロジェクトの作成画面が表示されたら、Blank projectを選択(図4(1))し、プロジェクトの名前を指定します(図4(2))。次に、リポジトリの可視性について設定します。今回は実際の業務におけるサービス開発に近い形を想定しているので、プライベートリポジトリを利用するためにPrivateを指定します(図4(3))。ここまで設定が完了したら、Create projectボタンをクリックします(図4(4))。

図4:リポジトリの作成画面

図4:リポジトリの作成画面

作成されたプロジェクトのページ(図5)に遷移します。

図5:作成されたプロジェクト

図5:作成されたプロジェクト

プロジェクトが作成されるとともに、gitを用いたコードリポジトリも作成されています。画面右側のドロップダウンメニュー(図6(1))を選択し、Clone with HTTPSからURLをコピーします(図6(2))。

図6:プロジェクトに含まれるgitリポジトリのURL取得

図6:プロジェクトに含まれるgitリポジトリのURL取得

ここで取得したURLを使ってgit cloneでリポジトリをローカルディスクにクローンします(リスト1)。

リスト1:リスト1:GitLabのプロジェクトに含まれるコードリポジトリのクローニング

$ git clone https://gitlab.com/fufuhu/ti_rancher_k8s_sampleapp.git

今後、解説を進める際のファイルパスは、ローカルにクローンしたリポジトリのルートディレクトリからの相対パスとします。ここから先は、サーバサイドアプリケーションの実装とテストを進めていきましょう。

この記事のキーワード

この記事をシェアしてください

人気記事トップ10

人気記事ランキングをもっと見る