この連載が書籍になりました!『RancherによるKubernetes活用完全ガイド

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

2019年4月25日(木)
藤原 涼馬
連載5回目となる今回は、GitLab CIを用いた継続的インテグレーション(CI)について解説します。

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.5goenvおよび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

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

株式会社リクルートテクノロジーズ

ITエンジニアリング本部プロダクティビティエンジニアリング部
クラウドアーキテクトグループ

Rancher JPコミュニティコアメンバー

ユーザ系SIerにてR&Dを経験したのち、2016年より現職。 業務ではパブリッククラウド、コンテナ関連技術を活用した 先進テクノロジーアーキテクチャの事業装着を担当。 Japan Container Days v18.12や、RancherJPのイベント等登壇等複数。

連載バックナンバー

クラウド技術解説
第11回

Rancherコードリーディング入門(3/3)

2020/2/19
前回に続き、紙面の都合で「RancherによるKubernetes活用完全ガイド」に掲載されなかったパートをご紹介します。
クラウド技術解説
第10回

Rancherコードリーディング入門(2/3)

2019/12/25
前回に続き、紙面の都合で「RancherによるKubernetes活用完全ガイド」に掲載されなかったパートをご紹介します。
クラウド技術解説
第9回

Rancherコードリーディング入門(1/3)

2019/11/5
今回からは、紙面の都合で「RancherによるKubernetes活用完全ガイド」に掲載されなかったパートをご紹介します。

Think ITメルマガ会員登録受付中

Think ITでは、技術情報が詰まったメールマガジン「Think IT Weekly」の配信サービスを提供しています。メルマガ会員登録を済ませれば、メルマガだけでなく、さまざまな限定特典を入手できるようになります。

Think ITメルマガ会員のサービス内容を見る

他にもこの記事が読まれています