GitHub ActionsでF# (.NET Core)のCIを回す

投稿者:

GitHub Actionsがリリースされたことで、GitHub内でCIが回せるようになりました。最近、何か新しい言語を学ぶ際のネタに引っ張り出してきがちな プログラミング入門者からの卒業試験は『ブラックジャック』を開発すべし – Qiita をもとにしたブラックジャックをF#で書いたのですが、既存プロジェクトに対しても、GitHub Actionsであれば簡単に導入でき、CIを回せることが分かりました。

ワークフローの設定

まずはActionsタブをクリックすると、下記のような画面が表示されます (スクリーンショットは設定済みのものです)。

Actionsタブ (設定後の画面)

New workflowをクリックすると、使用言語に合わせた設定を提案してくれます。便利。
今回はF#ですので、提案されたとおりの .NET Core を選びます。

画面がエディタ画面に切り替わり、 .github/workflows/dotnetcore.yml ファイル編集画面が表示されます。テンプレートはここで開発されているようです。

yamlファイルを見ると以下がわかります。

  • runs-on 実行環境。リストで複数選択できるが今回はubuntu-latestのみ
  • steps 実際の処理
    • uses: actions/checkout@v1 では標準のチェックアウト処理を利用する書き方です
    • uses: actions/setup-dotnet@v1 では.NET環境をセットアップする書き方です。CI内容を全部書かなくていいのは便利ですね
    • run: dotnet build --configuration Release でビルド実行

お察しの通り、テスト実行がないため、steps: に以下を追加します。

    - name: Test
      run: dotnet test

これでテストも回すことができるようになります。

ActionsによるCI実施

テスト結果は、Actionsでサマリーを表示できます。またプッシュした最新コミットに対してもCIしてくれます。これは on: [push] と設定しているからですね。
また、あえてテスト失敗させてみたのですが、失敗したstepにバツ印がつくためわかりやすいです。

感想

今回初めてGitHub Actionsを使ってみたのですが、非常に簡単に導入できるのが良いですね。特にTravis CIとの連携を気にせず、GitHubの画面内で必要な情報に到達できるのが良いと感じました。
テストがなくてもCIで出来ることは多いですので、GitHubで何かプロジェクトを作った際には、早い段階でGitHub Actionsを設定してCIを回せるようにするのが良いと感じました。プロジェクトを作った時点でGitHub Actionsが組み込まれているようになると、より便利かもしれません。

CIに続いてCD周りの機能もあるようですので、機会があれば使ってみます。