はじめに
本記事ではCircle CI初心者の僕が、Circle CIのクラウド環境での実行(gitでpushするたびにテストを実行する)方法についてまとめていきます。
Circle CIの環境構築
1)GitHubとの連携
Circle CIではGitHubとBitbucketの2つのサービスと連携できますが、GitHubとの連携のほうが多いと思うので、こちらでのやり方を記載していきます。
やり方としてはGitHubにログインした状態でCircleCIのサイトから連携ボタンを押して、手順に沿って作業を進めてください。
2)プロジェクトの追加
GitHubでの認証が完了したらGitHubのプロジェクト(リポジトリ)をCircleCIでも作成します。
個人リポジトリかOrganizationリポジトリか、プライベートリポジトリでプロジェクト追加のやり方が異なるようですが、ここでは、個人+Publicリポジトリでのやり方を記載します。
3)CircleCIの実行環境
最終的にはクラウド環境でのCircleCI実行をゴールとします。
そのために,まずはローカル環境での実行から始めていきます。
4)ローカルでのジョブ実行
ジョブというのはステップのまとまりのことです。
ステップとはCircleCIで実行されるコマンドのリストのことです。
ジョブを実行することで実行環境をゼロから築いて、終了すると削除するというようにテストを実行することができます。
この辺はCircleCIの入門的な知識なので以下の記事を参考にするとわかりやすいです。
いまさらだけどCircleCIに入門したので分かりやすくまとめてみた
それではローカルでのジョブ実行をするための環境を作っていきましょう!
4-1)Circle CLIのインストール
ローカル環境でのジョブの実行はCircle CLIを用いて行います。
Circle CLIはDockerのコンテナ上で実行されるので、まだDockerをインストールしていない方はインストールしてから行いましょう。
ちなみに、CircleCIではDockerの基礎知識があれば基本的には大丈夫ですので、軽くDockerの触れてから作業することをおすすめしておきます。
それでは以下のコマンドを打ち込んでインストールしていきましょう。
~ % curl -fLSs https://circle.ci/cli | bash
正常にインストールされると以下のメッセージが表示されます。
Starting installation.
Installing CircleCI CLI v0.1.5879
Installing to /usr/local/bin
/usr/local/bin/circleci
CircleCI CLIのインストールが完了しました。
が、以下のメッセージが表示されたらアップデートをする必要があります。
You are running 0.1.5879
A new release is available (0.1.6949)
You can update with `circleci update install`
このメッセージが表示されたらcircleci update install
コマンドを実行し、アップデートを行いましょう。
4-2)config.ymlファイルの作成
ジョブを行うためにはアプリディレクトリに.circleciフォルダ
と、そのディレクトリ内にconfig.ymlファイル
を作成する必要があります。
このファイル内にYAML形式で正しい構文を書かないと上部を実行することができません。
以下のコマンドを順に実行しましょう。
% mkdir -p .circleci
% touch .circleci/config.yml
正常に作成できていたらls -al
コマンドで以下を確認できます。
total 0
drwr-xr-x 3 xxxxx xxx 96 8 3 18:13 .
drwr-xr-x 20 xxxxx xxx 640 8 3 18:11 ..
drwr-xr-x 2 xxxx xxx 64 8 3 18:13 .circlci
このように表示されれば成功です。
4-3)config.ymlのバリデーション
CircleCI CLIには文法エラーや設定エラーがないか確認するコマンドが用意されています。
例えばrubyのCircleCIの構文は以下のようなものです。
この表記は公式で用意したものを少しカスタマイズしたものです。
言語ごとに表記が公式で用意されているので確認してみてください。
version: 2.1
orbs:
ruby: circleci/ruby@0.1.2
jobs:
build:
docker:
- image: circleci/ruby:2.6.5-stretch-node
executor: ruby/default
steps:
- checkout
- run: gem install bundler:2.2.3
- run:
name: Which bundler?
command: bundle -v
- ruby/bundle-install
これにバリデーションコマンドを実行してみるといかが表示されます。
% circleci config validate
config file at .circleci/config.yml is valid.
このように表示されればエラーがなく、正しい文法・設定だということがわかります。
ちなみにエラーだと以下が表示されます。
Error:ERROR IN CONFIG FILE
エラーの原因
ファイルを作成し、記述したら実行前に1度実行してみましょう!
4-4)ジョブの実行
ジョブの実行にはcircleci local execute
コマンドを使用します。
% circleci local execute
Docker image digest: sha256:9c32926d78c37f0c050a02dd13dc1596b6e4621b1df9362cd51368fb957951a0
# 省略
====>> Preparing environment variables
Using build environment variables:
BASH_ENV=/tmp/.bash_env-localbuild-1609201012
CI=true
CIRCLECI=true
CIRCLE_BRANCH=
CIRCLE_BUILD_NUM=
CIRCLE_JOB=build
CIRCLE_NODE_INDEX=0
CIRCLE_NODE_TOTAL=1
CIRCLE_REPOSITORY_URL=
CIRCLE_SHA1=
CIRCLE_SHELL_ENV=/tmp/.bash_env-localbuild-1609201012
CIRCLE_WORKING_DIRECTORY=~/project
# 省略
Post-install message from sass:
Ruby Sass has reached end-of-life and should no longer be used.
* If you use Sass as a command-line tool, we recommend using Dart Sass, the new
primary implementation: https://sass-lang.com/install
* If you use Sass as a plug-in for a Ruby web framework, we recommend using the
sassc gem: https://github.com/sass/sassc-ruby#readme
* For more details, please refer to the Sass blog:
https://sass-lang.com/blog/posts/7828841
Success!
Success!
と表示されたらローカルでのジョブは成功です。
クラウドで確認
実行したらGithubで変更をpushしてみましょう。
次にCircleCIのサイトに行って、確認してみましょう。
以下の画像の[success]の部分が[Runnin]になっていたらテストを実行しているということです。
この表示が[Failed]だったら、エラーがあるので、エラーを確認しましょう。
以上で環境構築は終了です。