CircleCI入門の入門

Published: 2016年3月7日 by tomsato

概要

以前Jenkins入門の入門にてCIについてとCIツールであるJenkinsついてまとめましたが、今回は別途話題になっているCircleCIについてまとめてみます

人口的にはまだJenkinsを使っている人が多いみたいですがJenkinsからCircleCIに乗り換えている人もいるみたいなのでどんなものなのかイメージできるぐらいに調べてみたいと思います

CircleCIとは

前提としてCIとJenkinsについて以下にまとめているので単語の意味だけでも目を通してもらえればと

Jenkins入門の入門

CircleCIとはCIサービスになります
https://circleci.com/

上記のページから登録を行うことによりJenkinsのようなビルドやテスト、デプロイを自動で実行することができます

Jenkinsは自前でJenkinsサーバを立てる必要がありますがCircleCIはサービスなので登録するだけで使えるようになります

そのかわり一部有料なので使い方によってはお金がかかることもあります

CircleCIの特徴

  • CIサービスである
  • GitHubと連携ができる
  • コンテナという概念の元、コンテナの中でビルドを走らせる
  • 1コンテナ利用の場合は無料 (複数使うためには課金が必要)

Jenkinsとの比較

  • Jenkinsサーバの運用コストがない
  • Jenkinsは属人化しやすい
  • GitHubのPush/Pull Requestに反応してジョブが動きだすのでJenkinsより任意のタイミング実行には向いていない
  • circle.ymlで設定が必要

コンテナという概念

CircleCIに限った話ではないですがCIツールには「コンテナ」(Container)という概念があります

特徴まとめ

  • 名前の通り「箱・入れ物」というイメージ
  • コンテナの中でビルド実行したりテスト、デプロイを行う
  • コンテナが増えれば増えるほど並列に実行できるので速度が早くなる

しかしCircleCIではコンテナを2つ以上使う場合は有料になります

コンテナがひとつだったら?

  • 2つ以上のビルドを実行する場合、1つづつしか実行できないので待ち時間が発生する
  • 沢山のテストを実行した場合でも、直列でしか実行できないので時間がかかる場合がある

CircleCIを使ってみる

前提

  • テスト用のGitHubが準備完了
    • https://github.com/
  • CircleCIの登録が完了
    • https://circleci.com/signup/

CircleCIのページでGitHubと連携する
circle

  • GitHubのAccountを選択
  • リポジトリを選択

リポジトリを追加したら勝手にビルドが行われた
circleci01
もちろん何も用意していないので当然こける

ファイルの準備

// 追加したリポジトリのパスに移動
$ cd circleci/

CircleCIでテストを実行するための実行ファイルを用意

// Hello Worldをechoするだけのテスト(?)
$ cat circle.yml
test:
  override:
    - echo Hello World

YAMLを使った記法になっている
YAMLについてはYAML入門の入門を参考にする

circle.ymlの書き方まで説明すると長くなってしまうため
circle.ymlの書き方
など別途参考サイトを確認してほしい

GitHubにプッシュする

$ git add .
$ git commit -m 'add test'
$ git push

プッシュを行うと自動的にCircleCIでcircle.ymlの内容にのっとってビルドが行われる
今度は成功している
circleci05
無事にecho Hello Worldできていることも確認
circle06
終了コードが0になっていれば他のコマンドでも大丈夫そう

料金体系について

  • 誰でも1コンテナ無料
  • 追加のコンテナ1つにつき$50/月
  • リポジトリ数は関係ない
  • 使用時間は月1500分まで、超えると使えなくなる
  • 課金すると使用時間が無限大になる

参考

コメントを書く

※ 個別に返信が必要な時のみご記入ください

※ Emailは公開されません

※ 承認されると名前・コメントが下記に表示されます

コメント一覧

最近の投稿

ビジュアルリグレッションテストについてまとめ、ネットで調べると数多くのライブラリがありどれがどんな立ち位置なのか全体像がわかりずらかったのでどんな種類があるのか入門の入門としてまとめます、またPlaywrightを使って実際に触ってみました

社内ツールなどの超小規模なAPIをGolangで実装する際にフレームワークを使うべきかを、実際にnet/httpを使った実装とフレームワークを使った実装を比較することでどれだけ優位性があるかを見ていきたいと思います。今回はフレームワークにはシンプルで使いやすそうなEchoを使うことにします。

vue-pdfを使ってNuxt.jsで作成しているアプリケーションに pdfスライドを表示させるサンプルを作成しました README.md通りに実装してもうまくいかないところがあったのでそのあたり含めてまとめます

Vue.js / Nuxt.jsにおけるログインの実装方法をまとめる Auth0やNuxt.jsのAuth Moduleとmiddlewareについて調べつつサンプルを作成することで理解を深める

コンポーネント設計について考える Atomic DesignやPresentational Component, Container Componentについてまとめつつ 自分だったらVue.js / Nuxt.jsでどういうコンポーネント設計にするかについてまとめます

カテゴリ一覧

タグ一覧