3
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

CircleCIでGitHubのプッシュをフック

Last updated at Posted at 2018-11-06

circleci.png

背景

普段はCIなんて言葉目にしないけどなんとなく知っておこうと思いCircleCIなるサービスを
知り実施してみました。
普段はJenkinsでCIのような事はやってます。

CircleCIって?

GitHub / BitBucketのPUSHに反応して、ビルドからテストを自動化してくれるCIサービス
jenkinsと比較して一番にあがるのは、Jenkinsは自前でJenkinsサーバを立てる必要があるのに対してCircleCIはクラウドのwebサービスって言う点です。

他にもいろいろメリット/デメリットはあるようです。

CI(継続的インテグレーション)とは

特に言及せずwikiを引用

CI(英: continuous integration)とは、主にプログラマーのアプリケーション作成時の品質改善や納期の短縮のための習慣のことである。
エクストリーム・プログラミング (XP) のプラクティスの一つで、狭義にはビルドやテスト、
インスペクションなどを継続的に実行していくことを意味する[1]。
特に、1990年代後半以降の開発においては、継続的インテグレーションをサポートするソフトウェアを使用する傾向が強まってきた。

ネイティブDockerのサポート

1.0でもDockerサポートは存在しています。しかし、CircleCI自身がベースコンテナとしてLXCを利用していることの影響で、独自パッチを当てた古いバージョンに限定されています。

2.0では仮想マシンが起動して純粋なDockerを動かせるようになったため、最新の機能がフルに利用できるようになりました。CIのベースとしてこの仮想マシンを起動することも、Dockerイメージをベースにしつつ、途中でこの仮想マシンを起動することもできます。

必要なもの/前提知識

  • GitHubのアカウント
  • gitの知識(pushできればオッケー)

流れ

  • ① githubアカウントを作る
  • ② githubでCI対象のリポジトリを作成
  • ③ CircleCI上でgithubアカウントと連携する
  • ④ ローカルでリポジトリに設定ファイル(.circleci/config.yml)を作る
  • ⑤ pushしたら自動でビルド/実行して結果が見れる

手順①②は割愛します。

③ CircleCI上でgithubアカウントと連携する

スクリーンショット 2018-11-06 20.17.41.png

リポジトリを作成したらCircleCIのホームから「ADD Project」を選択し、
先程作成したリポジトリをSet UPします。

④ ローカルでリポジトリに設定ファイル(.circleci/config.yml)を作る

リポジトリのルートディレクトリ配下に下記ファイルを作成してください。
このファイルが設定ファイルとなりビルド命令等をもとに実行されます。

# pwd
circleci_sample

# ls .circleci/config.yml 
.circleci/config.yml

とりあえず「Hello world」を出力する

config.yml
version: 2
jobs:
  build:
    docker:
      - image: alpine

    steps:
      - checkout
      - run:
          name: Install dependencies
          command: echo "hello world!"

⑤ pushしたら自動でビルド/実行して結果が見れる

あとはgithubへpushすれば自動的に上記の命令が実行されます。

$ git add -A .
$ git commit -m "hello world!"
$ git push

push後は再度CircleCIのページへ戻りJobを確認。
エラー等がなければ実行完了です。

スクリーンショット 2018-11-06 20.28.25.png

実行結果を簡単に取得可能です。

スクリーンショット 2018-11-06 20.30.12.png

yamlのローカルテスト方法

上記yamlの確認はgithubへのpushが必須だと思っていましたがそんな事はなく
ローカルでのテスト実行も可能。素晴らしい。。。

以下のように「circleci」をインストール

# インストール
$ curl -o /usr/local/bin/circleci https://circle-downloads.s3.amazonaws.com/releases/build_agent_wrapper/circleci && chmod +x /usr/local/bin/circleci

# アップデート
$ circleci update

# テスト
$ cd ${プロジェクトroot}
$ circleci build
~
  #!/bin/sh -eo pipefail
echo "hello world!"
hello world!
Success!

所感

Jenkinsのような面倒な手順なくCIが出来るのはすごいと思う
凝ったことをやらない限りは十分な機能だと思いました。

3
3
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
3
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?