LoginSignup
3
2

More than 3 years have passed since last update.

.NetCoreなプロジェクトをCircle CIと連携させる話

Last updated at Posted at 2019-07-04

.NetCoreなプロジェクトをCircle CIと連携させる話

経緯

会社に所属してCIの良さがジワジワと伝わり、自分のプロジェクトにも導入したくなり居ても立っても居られなくなったため、勉強も兼ねて試すことになりました。
今回やりたいことは以下の通りです。

  • リモートへプッシュする度にビルドとテストを走らせる
  • GitHub上でマージした後にビルドとテストを走らせる
  • 時々見るカッコいいマークを出したい →2019y07m03d_040904676.png(これ)

手順

用意するもの

  • GitHubアカウント
  • .NetCoreなプロジェクト(.NetFrameworkはダメ

1.リポジトリを用意

まずはCircle CIに認識してもらうためのリポジトリを用意します。
テスト用のプロジェクトでも既存のプロジェクトでも構わないのでGitHub上に作成し、コミットしておきましょう。

2.Circle CIアカウント準備

公式サイトに飛び、SignUp -> SignUp with GitHub
GitHubのアカウントを利用してアカウントを作成します。
この際、GitHubのアカウントにOrganizationsの関連付けが行われていると、権限等の関係で全ての機能が扱えない事があるため、
Organizations先に導入しない場合は左上のアイコンから自分のものを選択してアカウントを切り替えておく必要があります。
2019y07m03d_042810256.png

3.Circle CIにリポジトリ関連付け

Add Projectsタブへ移動し、認識させたいプロジェクトのSetUp Projectを押します。
すると、以下のようなページが表示されます。
2019y07m03d_050521331.png

この段階では1は無視して構いません...が、初回のテストが必ず失敗してしまうので、
それが嫌な人は先に設定ファイルを作成を済ませてmasterへ反映しておきましょう。

2のStartBuildingを押すと、晴れてmasterブランチを対象にCIが回り始めます。
ビルドの状況は左のJobsタブにて確認できます。

2019y07m03d_051910140.png

まだ何を持って「成功」なのかが定義されていないので、このように表示されていればOKです。
ビルドの失敗を見届けたら、設定ファイルを作成する準備を行います。

左のタブからSettings -> Projects -> 対象プロジェクトの右上にある歯車 -> Environment Variables と進みます。
ここで設定ファイルで使用する環境変数を定義します。

Add Variableを押し、NameをSolutionNameに、Valueにプロジェクトのslnファイルへのパスを記述します。
SolutionNameは後述する設定ファイルの変数と名前があっていればOKです。
次はいよいよ設定ファイルを作成します。

4 設定ファイルを作成

Circle CIの設定ファイルは、
リポジトリのルート/.circleci/config.yml に配置します。
地味に詰まるポイントとして、Windowsで.から始まるフォルダやファイルを作成する際は、末尾にも.を入れることで正しく作成することができます。

コンフィグファイルの記法に関してはここにまとまっています。
CircleCIは比較的しっかりしたドキュメントが多いので、詰まった際に改めて読んでみると幸せになる事があります。

以下は今回使用するYAMLです

config.yml
version: 2.1
jobs:
  build:
    docker:
      - image: microsoft/dotnet:2.2-sdk
    steps:
      - checkout
      - run: dotnet restore
      - run: dotnet build $SolutionName
workflows:
  version: 2.1
  buildAll:
    jobs:
      - build
    docker:
      - image: microsoft/dotnet:2.2-sdk

人によってはここでウッっとなったかもしれません。
私自身、設定ファイルを書いて初めて気づいたのですが、CircleCIのジョブはDockerのコンテナ上で実行されます。
これがCircleCIを使う一番のメリットなように感じました。

記述が終わったら、どこかのブランチにコミットしてリモートへプッシュして下さい。ただし、手順3を飛ばしている場合はmasterブランチへ反映する必要があります。

5. CIが回っているか確認

CircleCIへの関連付けが成功していれば、リモートへプッシュした段階でCircleCIが回り始めるはずです。
2019y07m03d_053331132.png

これで導入は完了です。
ここからは自分のプロジェクトに合うように設定ファイルをカスタマイズしていくことになります。

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