.NetCoreなプロジェクトをCircle CIと連携させる話
経緯
会社に所属してCIの良さがジワジワと伝わり、自分のプロジェクトにも導入したくなり居ても立っても居られなくなったため、勉強も兼ねて試すことになりました。
今回やりたいことは以下の通りです。
手順
用意するもの
- GitHubアカウント
- .NetCoreなプロジェクト(.NetFrameworkはダメ)
1.リポジトリを用意
まずはCircle CIに認識してもらうためのリポジトリを用意します。
テスト用のプロジェクトでも既存のプロジェクトでも構わないのでGitHub上に作成し、コミットしておきましょう。
2.Circle CIアカウント準備
公式サイトに飛び、SignUp -> SignUp with GitHubで
GitHubのアカウントを利用してアカウントを作成します。
この際、GitHubのアカウントにOrganizationsの関連付けが行われていると、権限等の関係で全ての機能が扱えない事があるため、
Organizations先に導入しない場合は左上のアイコンから自分のものを選択してアカウントを切り替えておく必要があります。
3.Circle CIにリポジトリ関連付け
Add Projectsタブへ移動し、認識させたいプロジェクトのSetUp Projectを押します。
すると、以下のようなページが表示されます。
この段階では1は無視して構いません...が、初回のテストが必ず失敗してしまうので、
それが嫌な人は先に設定ファイルを作成を済ませてmasterへ反映しておきましょう。
2のStartBuildingを押すと、晴れてmasterブランチを対象にCIが回り始めます。
ビルドの状況は左のJobsタブにて確認できます。
まだ何を持って「成功」なのかが定義されていないので、このように表示されていればOKです。
ビルドの失敗を見届けたら、設定ファイルを作成する準備を行います。
左のタブからSettings -> Projects -> 対象プロジェクトの右上にある歯車 -> Environment Variables と進みます。
ここで設定ファイルで使用する環境変数を定義します。
Add Variableを押し、NameをSolutionName
に、Valueにプロジェクトのslnファイルへのパスを記述します。
SolutionName
は後述する設定ファイルの変数と名前があっていればOKです。
次はいよいよ設定ファイルを作成します。
4 設定ファイルを作成
Circle CIの設定ファイルは、
リポジトリのルート/.circleci/config.yml
に配置します。
地味に詰まるポイントとして、Windowsで.
から始まるフォルダやファイルを作成する際は、末尾にも.
を入れることで正しく作成することができます。
コンフィグファイルの記法に関してはここにまとまっています。
CircleCIは比較的しっかりしたドキュメントが多いので、詰まった際に改めて読んでみると幸せになる事があります。
以下は今回使用するYAMLです
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が回り始めるはずです。
これで導入は完了です。
ここからは自分のプロジェクトに合うように設定ファイルをカスタマイズしていくことになります。