お問い合わせ
「SmartCloud」問い合わせ
資料請求・お問い合わせ
2020.04.15事例/手順
DevaaS 2.0は販売終了いたしました。
DevaaS 2.0の環境設定ができたら、いよいよ実際のCI/CDを体感してみましょう。
DevaaS 2.0では、CI/CDを実現するためにJenkinsを使った方法と、GitLabを使った方法が用意されています。Jenkinsは様々なツールと連携してCI/CDのパイプラインを構築し、より高機能で快適なCI/CD環境を実現したいプロジェクト向けといえます。
一方、GitLabでは用意されている「GitLab CI/CD」を使用するので、シンプルにビルド、テストなどをしたいプロジェクト向けといえるでしょう。
まず、CI/CDサーバーにインストールした(レビュー第3回参照)GitLabにWebブラウザでアクセスします。
DevaaSのダッシュボード→CI/CDサーバ画面。ツールのリンクをクリックします
CI/CDサーバーの管理画面のツール一覧から、GitLabのテナント内、テナント外からのアクセス用リンクをクリックしてGitLabにアクセスします。開発用クライアントからはテナント内、VPN接続している端末からはテナント外となります。
CI/CDのテスト用に新しく「test」プロジェクトを作成します。
1. 「Projects」画面から、右上の「New Project」ボタンをクリックします。
2. 「Project name」にプロジェクト名を入力して、「Create Project」ボタンをクリックします。
次に、試験サーバーにGitLab Runnerをインストールします。
GitLab Runnerは、GitLab CI/CDからの指示を受けてコンパイルやテストなどの処理を行います。GitLab RunnerはDockerコンテナなど様々な種類から選択できますが、今回は最もシンプルなシェルを選択します。シェルを選択すると、試験サーバー上で指示されたコマンドをシェルが実行する単純な構造となります。
今回はCentOSを使って試験サーバーを構築しているので、yumコマンドでインストールします。
DevaaS のダッシュボード→試験サーバ―画面。IPアドレスを確認します
SSHで試験サーバーに接続します。DevaaS 2.0のダッシュボードから、試験サーバーのIPアドレスを確認します。開発用クライアントからは内部IPアドレス、VPN接続している端末からは公開IPアドレスに対して接続します。
DevaaS 2.0の環境からインターネット上のサーバーにアクセスするには、プロキシの設定が必要です。wgetやyumはあらかじめ設定が行われていますが、GitLab Runnerのインストール手順で利用するcurlには設定がありません。設定を行うには、ユーザーのホームディレクトリに「.curlrc」ファイルを作成します。
1. プロキシのアドレスを確認
DevaaS 2.0の環境のプロキシのアドレスは、/etc/wgetrcファイルを参照すれば確認できます。
この例では「http://10.166.28.250:8080/」がプロキシのアドレスです。使用している環境によって異なる場合があるので、確認したアドレスを次の手順で使用してください。
[root@ts-0008 ~]# cat /etc/wgetrc | grep proxy
#https_proxy = http://proxy.yoyodyne.com:18023/
#http_proxy = http://proxy.yoyodyne.com:18023/
#ftp_proxy = http://proxy.yoyodyne.com:18023/
https_proxy = http://10.166.28.250:8080/
http_proxy = http://10.166.28.250:8080/
ftp_proxy = http://10.166.28.250:8080/
# If you do not want to use proxy at all, set this to off.
#use_proxy = on
2. .curlrcを作成
ユーザーのホームディレクトリに.curlrcを作成します。以下のように記述します。
proxy=http://10.166.28.250:8080/
3. curlの動作確認
適当なURLに対してアクセスして、curlが動作することを確認します。
[root@ts-0008 ~]# curl /devaas ※HTMLのソースが表示される
※うまく動作しない場合には、他のURLを試してみる、.curlrcの記述を確かめてみる、wgetコマンドを試してみるなどで切り分けを行ってください。
以下のyumコマンドを実行して、GitLab Runnerをインストールします。GitLab RunnerはGitLabとバージョンが同じか、あるいは一番近いものを選ぶ必要があります。
GitLabのバージョンの確認は、GitLabのAdmin Areaで確認できます。GitLabにアクセスしているWebブラウザの画面上部にあるスパナのアイコンをクリックすると、Admin Area画面が表示されます。「Components」の表示にあるGitLabのバージョンを確認してください。今回はバージョン9.0.5を使用しています。
バージョンの確認ができたら、GitLab Runnerのインストールを行います。
1. GitLabのyumリポジトリを登録
以下のコマンドを実行すると、GitLabのyumリポジトリが登録されます。
[root@ts-0008 ~]# curl -L https://packages.gitlab.com/install/repositories/runner/gitlab-ci-multi-runner/script.rpm.sh | sudo bash
2. yumリポジトリのパッケージ一覧を表示
以下のコマンドを実行すると、GitLabのyumリポジトリで使用できるパッケージの一覧が表示されます。使用しているGitLabとバージョンを合わせるため、マイナーバージョン9.0で絞り込みを行っています。
[root@ts-0008 ~]# yum list gitlab-ci-multi-runner --showduplicates | grep 9.0
gitlab-ci-multi-runner.x86_64 0.3.4_1_ge9b0e04-1 runner_gitlab-ci-multi-runner
gitlab-ci-multi-runner.x86_64 1.9.0-1 runner_gitlab-ci-multi-runner
gitlab-ci-multi-runner.x86_64 9.0.0-1 runner_gitlab-ci-multi-runner
gitlab-ci-multi-runner.x86_64 9.0.1-1 runner_gitlab-ci-multi-runner
gitlab-ci-multi-runner.x86_64 9.0.2-1 runner_gitlab-ci-multi-runner
gitlab-ci-multi-runner.x86_64 9.0.3-1 runner_gitlab-ci-multi-runner
gitlab-ci-multi-runner.x86_64 9.0.4-1 runner_gitlab-ci-multi-runner
バージョン9.0.5に一番近いバージョン9.0.4-1を使用します。
3. GitLab Runnerのインストール
以下のコマンドを実行すると、GitLab Runner バージョン9.0.4-1がインストールされます。
[root@ts-0008 ~]# yum install -y gitlab-ci-multi-runner-9.0.4-1
GitLab RunnerをGitLabに登録します。試験サーバーで以下のコマンドを実施し、対話形式で設定値を入力します。
# gitlab-runner register
Running in system-mode.
Please enter the gitlab-ci coordinator URL (e.g. https://gitlab.com/): ・・・①
http://192.168.8.5:12080 (★)
Please enter the gitlab-ci token for this runner: ・・・②
howdWR_8RUPEKx4_s8xy (★)
Please enter the gitlab-ci description for this runner: ・・・③
[ts-0005.novalocal]: GitLab Runner Shell 01 (★)
Please enter the gitlab-ci tags for this runner (comma separated): ・・・④
Shared-shell (★)
Whether to run untagged builds [true/false]: ・・・⑤
[false]: true (★)
Whether to lock Runner to current project [true/false]: ・・・⑥
[false]: Enterキーを入力 (★)
Registering runner... succeeded runner=howdWR_8
Please enter the executor: virtualbox, docker+machine, docker-ssh+machine, parallels, ssh, shell, kubernetes, docker, docker-ssh: ・・・⑦
shell (★)
Runner registered successfully. Feel free to start it, but if it's running already the config should be automatically reloaded! ★入力した値を示す
それぞれの入力項目の意味と、入力例は以下の通りです。
① Please enter the gitlab-ci coordinator URL
CI/CDサーバーにインストールしたGitLabのテナント内URLとポート番号を入力します。テナント内URLはDevaaS 2.0のダッシュボードのCI/CDサーバー管理画面で確認できます。
入力例では「http://192.168.8.7:12080」を入力しています。
② Please enter the gitlab-ci token for this runner
今回はShared Runnerをセットアップするため、Admin Area画面から「Runners」をクリックし、表示されるRegistration tokenを貼り付けます。
入力例では「howdWR_8RUPEKx4_s8xy」を入力しています。
③ Please enter the gitlab-ci description for this runner
GitLab Runnerに対して、わかりやすい説明を入力します。GitLabで確認した時に表示されます。
入力例では「GitLab Runner Shell 01」を入力しています。
④ Please enter the gitlab-ci tags for this runner
GitLab Runnerを識別するためのタグを指定します。このタグ名をCIパイプラインを記述する「.gitlab-ci.yml」に記述することで、特定のGirLab Runnerを使うことができます。
入力例では「Shared-shell」を入力しています。
⑤ Whether to run untagged builds [true/false]
タグを指定しない場合にこのGirLab Runnerを使うか指定します。デフォルトではタグでの指定が必須のfalseになっています。
タグ指定無しでも使用する様に、入力例では「true」を入力しています。
⑥ Whether to lock Runner to current project [true/false]
他のプロジェクトからこのGirLab Runnerを使えないようにするかを設定します。
その他のプロジェクトでも使える様に、入力例ではデフォルトのfalseに設定するためEnterキーのみ入力しています。
⑦ Please enter the executor
GitLab Runnerをどのような形式で実行するのか設定します。
今回は試験サーバーのシェルを使用する様に、入力例では「shell」を入力しています。
GitLab CI/CDが動作する際に、GitLab RunnerからGitLabに対して接続する必要があります。この接続では、「gitlab」というホスト名に対して接続します。試験サーバーにはテナント内の名前解決(IPアドレスを調べること)が設定されていないので、gitlabというホスト名を名前解決できません。
簡単な解決方法として、試験サーバーの/etc/hostsにIPアドレスと名前解決したいホスト名を記述しておきます。
たとえば、今回の例では以下のような記述を/etc/hostsに追加します。
192.168.8.7 gitlab
記述を追加後、正しく名前解決が行われるかpingコマンドで確認します。
[root@ts-0008 ~]# ping gitlab
PING gitlab (192.168.8.7) 56(84) bytes of data.
64 bytes from gitlab (192.168.8.7): icmp_seq=1 ttl=64 time=0.321 ms
^C
--- gitlab ping statistics ---
1 packets transmitted, 1 received, 0% packet loss, time 0ms
rtt min/avg/max/mdev = 0.321/0.321/0.321/0.000 ms
GitLabのWeb画面でGitLab Runnerの登録を確認します。
WebブラウザでGitLabにアクセスし、Admin Area画面から「Runners」をクリックして、画面下部のリストに登録したGitLab Runnerが表示される事を確認します。
Runnersに登録したGitLab Runnerが表示されていることを確認
作成しておいたtestプロジェクトにCIパイプラインを設定して、動作を確認してみます。
Webブラウザでtestプロジェクトを表示します。
testプロジェクト。サンプルのCIパイプラインを設定して動かしてみます
現在、プロジェクトのリポジトリが空なので、まず「The repository for this project is empty」という文章の中にある「README」というリンクをクリックして、README.mdを追加します。開いたエディタで適当な文章を入力して、画面下部の「Commit Changes」ボタンをクリックして保存します。
次に、画面上部のメニューから「Project」をクリックします。
さらに画面中段右にある「Set up CI」をクリックします。
設定ファイルの編集エディタ
GitLab CIの設定ファイル、「.gitlab-ci.yml」を編集するエディタが開くので、「Choose a GitLab CI Yaml templ...」ドロップダウンリストから「Bash」を選択すると、エディタに以下の様なスクリプトが読み込まれます。
# This file is a template, and might need editing before it works on your project.
# see https://docs.gitlab.com/ce/ci/yaml/README.html for all available options
# you can delete this line if you're not using Docker
image: busybox:latest
before_script:
- echo "Before script section"
- echo "For example you might run an update here or install a build dependency"
- echo "Or perhaps you might print out some debugging details"
after_script:
- echo "After script section"
- echo "For example you might do some cleanup here"
build1:
stage: build
script:
- echo "Do your build here"
test1:
stage: test
script:
- echo "Do a test here"
- echo "For example run a test suite"
test2:
stage: test
script:
- echo "Do another parallel test here"
- echo "For example run a lint test"
deploy1:
stage: deploy
script:
- echo "Do your deploy here"
このスクリプトは、GitLab CIがビルド、テスト、デプロイの3段階の処理を行うスクリプトになっています。処理の内容はechoコマンドで文字列を表示するだけになっていますが、実際にCI/CDを行う際にはechoコマンドを実行したいコマンドに置き換えていくことになります。
画面下部の「Commit Changes」ボタンをクリックして保存します。すると、リポジトリに変更が加えられたので、パイプラインが実行されます。
実行の様子は、戻った画面上部のメニューから「Pipelines」をクリックすると確認できます。実行されたパイプラインが表示されており、「Passed」をクリックすると詳細が確認できます。
パイプラインの詳細表示
さらに表示されている各ジョブをクリックすると、実行内容の詳細が確認できます。
このように、GitLab CI/CDの機能を使うことで、簡単にリポジトリと連携したCI/CD実行環境を構築することができます。スクリプトのテンプレートは、各種言語・フレームワーク向けが用意されていますので、開発プロジェクトに合わせて選択し、カスタマイズすると良いでしょう。
DevaaS 2.0では、開発プロジェクトがすぐにCI/CD環境で開発を始められるように、サーバー、開発用クライアント、ネットワークなど、必要となるリソースをすべてダッシュボードから準備できるようになっています。また、CI/CDツールのように必要なものを簡単にインストールできるので、管理者は最後のツールの設定だけすれば良い、ということが分かっていただけたのではないでしょうか。
CI/CDに関わるツールはOSSで提供されているものが多いため、インストールが面倒だ、技術サポートが無いのが不安だ、なとという意見もありますが、DevaaS 2.0ではこれらの問題を解決して、素早く安心してCI/CD環境を利用できるサービスを提供しています。プロジェクトの開発効率を高めたいと考えているのであれば、是非一度活用してみてはいかがでしょうか?
(日本仮想化技術株式会社 代表取締役社長兼CEO/宮原 徹)
※記載されている会社名、製品名、サービス名は各社の商標または登録商標です。
※記載されている情報は、記載日時点のものです。現時点と異なる場合がありますので、あらかじめご了承いただくとともに、ご注意をお願いいたします。