fbpx

GitLab で CI をはじめてみよう vol.1 #gitlabjp #Gitlabtanukiboys #developer #DevOps #gitlab

この記事は1年以上前に投稿されました。情報が古い可能性がありますので、ご注意ください。

この記事は、YouTube にアップロードした動画と連動した内容になっています。動画も合わせてご覧ください。


こんにちは、TANUKI BOYS です。
冬真っ盛りですが、どうやらクリエーションラインでは TANUKI が増殖しているようです!

そんな TANUKI BOYS の動画第 2 弾は、GitLab での CI をテーマにした動画です。
この記事は、その動画を補足した内容となります。

これからCIを始める方を対象としたCI入門的な記事/動画になっていますが、続編のCIネタの動画を今後もリリース予定です。

CI とは

CI は、Continuous Integration(継続的インテグレーション)の略です。

  • ローカルで変更を加えたソースコードを定期的に共有リポジトリにコミットし、マージする
  • 定期/自動的にビルドとテストを行う

CI を実施する目的

  • 自動テストによってバグの早期発見と追跡範囲を狭くする
  • 定期ビルドによってリリース可能なモジュールを維持する

これは、「素早く、機敏に」「楽に」ソフトウェア開発を続けるために必要です

CI の流れ

今回の動画では、シンプルな Go 言語のコードをサンプルに GitLab での CI のやり方を解説しています。
プロダクションコードとテストコートを格納したプロジェクトをあらかじめ用意された状態で、実際にCIを動かすところまでの流れとなります。

  • 動画での実行環境
    • GitLab.com (SaaS 版) の Free プラン
    • GitLab Enterprise Edition 13.6.0-pre

GitLabにおけるCI

定期/自動的にビルドとテストを行うための設定

リポジトリ内に .gitlab-ci.ymlを配置することで、定期的/自動的に処理を走らせることが可能になります。
どのような処理を行うかはymlファイル内に記述していきます。
今回は、まずはビルドだけを行い、そのあとテスト&ビルドを行うための設定を入れていきます。

というわけでまずはビルドを行えるようにしましょう。

CIでビルドを行う

.gitlab-ci.yml を作成する

.gitlab-ci.yml ファイルを新規作成します。動画では Web IDE を使用して作成しています。

ビルドのジョブを追加する

Go 言語で書かれたコードをビルドするため、ビルドスクリプトの記述を行います。
今回の動画では利用していませんがテンプレートが用意されているので、そちらを活用するのも良いでしょう。

今回は go build(ビルドを行う) のみを実行する設定です。
Web IDE で編集したファイルは Web IDE の画面から git push 相当の操作を行うことができます。
Web IDEから操作する場合はデフォルトでは新しいブランチとマージリクエストを作成しますが、今回はCommit to master branchを選択し、masterブランチに直接pushしています。

ビルドのパイプラインの実行状況を確認する

.gitlab-ci.yml をpushすると、パイプラインが表示されてCIジョブを順次実行します。
GitLab 画面の下部に実行中のパイプライン情報が出ます。
この動画では、Web IDE 画面からパイプラインの ID のリンクをクリックし、パイプライン画面に遷移しています。

しばらく待つとCIジョブが緑色になりますが、緑色になれば成功です。
動画ではジョブが完了してからジョブの中を確認していますが、実行中でも確認することができます。

ここまででCIでビルドを行うことができました。
続いてテストを行うための設定を追加していきましょう。

CIでテストを行う

ビルドと同様に.gitlab-ci.ymlにテスト実行の記述を行います。
今回はテストを行ったあとにビルドを行うパイプラインにするためにステージを利用します。

ステージを追加する

ステージを利用することで、CIのジョブの順序を制御することができます。

3-5行目がステージの定義になります。
今回は「test」「build」のステージを用意します。

8行目、12行目でCIジョブに対してステージを指定しています。
この指定によって、unit_test ⇒ buildの順でジョブが実行されます。

テストのジョブを追加する

テストのジョブは7-9行目が該当します。
go test -raceコマンドによって単体テストを行います。

これによりビルド⇒テストが行われるCI設定になったので、.gitlab-ci.ymlをpushすると再びCIが行われます。

パイプラインの実行状況を確認する (エラー発生!)

エラー発生時は、赤字の×が表示されます。
ジョブが失敗した場合は、後続のビルドは行われず中断されます。

テストがエラーになっている箇所のコードを修正する

エラー箇所を修正したものをpushすることで再度CIが実行されます。
動画ではWebIDE上で修正していますが、ローカルでコードを修正し、ローカルでテストを行ってpushするやり方もあります。(こちらの方が多いと思います)

パイプラインの実行状況を確認する (test, build)

テストのジョブが成功したので後続のビルドも実行され、テスト&ビルドをCIで行われていることが確認できます。

まとめ

  • .gitlab-ci.ymlを用意することでGitLab CIが動く。

  • CIでどのような処理を行うかはyml内に書いていく。

今回はこれからCIを始める方向けの内容なのですが、次回以降はもう少しCIを深堀りしていこうと思います。
例えばCIの中でgo test、go buildを行っていますが、goコマンドを実行するためにはgo langがインストールされた環境が必要ですが、
今回はその環境がどのように用意されているのかといったGitLabCIそのものの話。
あとは、CIの実行条件など実際の開発でも使えるようなものをいくつか紹介していく予定ですのでお楽しみに。

宣伝

TANUKI BOYS へのネタ提供をお願いします!ハッシュタグ #GitLabtanukiboys でツイートしていただいても大丈夫です

過去のたぬき動画

最後に

弊社クリエーションラインは日本初の GitLab 正規代理店です。
有償ライセンスの販売や GitLab 日本語サポートのみの扱いもございます。サポートについては、Core や GitLab.com Free プランでも対応可能です。
興味のある方は こちら にお問い合わせ下さい。

また、有償で GitLab トレーニングも実施しております。開催日時などは、GitLab トレーニングページ をご確認ください。

New call-to-action

新規CTA