LoginSignup
11
6

More than 5 years have passed since last update.

GitLab CI with GitHub - Mobile CI/CD Meetup LT

Posted at

image.png

本日開催予定の Mobile CI/CD Meetup,LT枠で申し込んでおきながら体調を崩してしまって参加できなくなってしまいました.
関係者の方々大変ご迷惑をお掛けして申し訳ありません.

とはいえ,せっかく資料を作ったので,このまま寝かせるのももったいないのでQiitaに投稿することにします.

GitLab CI with GitHub

今回発表するつもりだったのはこちら.「GitLab CI with GitHub」です.

Why GitLab CI?

GitLabといえば,GitHubのOSSクローンや競合と思う方も多いかと思います.
しかし,GitLabはCIに関する機能も豊富で自由度が高く,このCI機能を単体で使うというのも十分に検討の価値が有ります.

上の図は, Forrester Wave社の調査 によるCIツールの評価です.
現在の価値提供,及びツールの戦略で高い評価を得ています.

また,GitLab CIはオンプレミスな環境に導入できますので,社外にソースコードやビルド出す必要もありません.
大人の事情でSaaSなCIサービスが使えない御社[誰?]にも最適です.

GitLab CI is powerful!

こちらは具体的なGitLab CIの特徴です.

GitLab CI Runner

実際にビルドなどを行うマシンにRunnerソフトウェアをインストールすることで,GitLab CIとして動かすことができるようになります.
Runnerは,オンプレミスな物理サーバやAWS,GCPなどのクラウド,または手元の余ったPCに自由にインストールできます.
OSも,Win, Mac, Linuxをサポートしています

CI Engine(Executor)

GitLab Runnerは,CIを実行するための複数の Executor を提供します.
Dockerはもちろん,Shell, docker-machine, Kubernetes, VirtualBox, SSH, etc...
docker-machineでAWSやGCPを指定することで,CIのたびにインスタンスを起動する,オートスケールなCI環境を構築することもできます

Private Container Registory

例えば,AndroidをビルドするためのDockerイメージは,Android SDKを含んだまま公開してしまうと,再配布条件に引っかかってライセンス違反となってしまいます.
GitLabはプライベートなDockerイメージのレジストリを持っており,いつでもそのプライベートなイメージでビルドすることができるようになります.
CIのたびにAndroid SDKのダウンロードやアップデートするのを最小限にでき,CIの時間を短縮できるようになります.

Auto DevOps

モバイルでは恩恵は少ないのですが, GitLabは Auto DevOps というDevOps支援のツールチェインを目指していて,

  • Build
  • Test
  • Code Quality
  • Review App
  • Deploy
  • Monitoring

まで,一貫したDevOpsツールチェインとなっています.
恩恵に預かりやすいのはバックエンド開発でしょうか.GitLab CIのメリットはモバイル開発に限らないので,ぜひバックエンドCIでも使ってみてください.

Network

連携はこんな感じです.
GitLab本体と,CI Runnerはサーバリソースを共有しない形で立てます.
GitLabのGitHub連携は, Premiumライセンス が必要です.(19 USD / month / user)
そのまま利用とすると,人数分のライセンスが必要になってしまいますが,GitLab CIだけが目的であれば,管理ユーザ1名分のライセンスのみで利用できます.
結果はSlackへ通知し,各開発者はSlackで結果を確認します.

ちなみに, Circle CI のオンプレミス料金を見ると, 35 USD / month /user ですので,それよりもだいぶお安めです.
また,もちろん同時ビルド数に制限などありません.

Sample GitHub repository

サンプルのGitHubリポジトリです.
ここでは,単純に GitLab CI 実行するための .gitlab-ci.yml を配置しています.
その中身もとても簡単ですね.シェルコマンドで ehco OK を実行しているだけです.
もちろん,Androidのソースコードがあるリポジトリで, ./gradlew build を実行すれば,AndroidプロジェクトのCIを実行することができます.

Link GitHub to GitLab

それでは実際に連携してみます.
なお,この連携は自分で GitLab を立てなくても, gitlab.com で試してみることもできます.

GitLabのNew Projectから, CI/CD external repo を選択し,GitHubをクリックします.
GitLabがEnterprise Premium以上のライセンスでないと,この選択肢が出てきませんのでご注意ください.


GitHubのPersonal Access Tokenの入力画面に移ります.
未発行の場合は,リンク先からPATを発行します.


scopeはrepoを選択してPATを作成します.


PATを入力すると,連携するGitHubリポジトリの選択画面が表示されます.
各リポジトリに Connect ボタンがあるので,クリックすると連携できます.
連携が完了すると,画像のように Done と表示されます.


連携が完了すると,GitLab側にもGitHubのリポジトリが取り込まれます.
この時点でWebHookも自動で連携されています.

Pipeline

パイプラインページに移動してみると,すでにパイプラインが動いており,passしています.

Job Details

ジョブの詳細を見てみると,ちゃんと ok がコンソールに出力され,ビルドがパスしているのがわかります.

Conclusion

完全無料!とは行きませんでしたが,GitLab CIは十分に低コストでオンプレミスで ナウい モダンなCI環境を提供してくれます.
すでにGitLabを使っている方は,それこそPremiumライセンス不要でGitLab CIを使えます.(Community Editionでも.)

みなさんも試してみてはいかがでしょうか?

11
6
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
11
6