⚙️

GithubのZigのリポジトリでGithub Actionsで自動テストされるようにしてみた

2023/01/03に公開

Githubにコードを置くことはあったのですが、今までGithub ActionsでのCIはやったことがありませんでした。今回はそれを試してみました。

ZigのコードをGithubにpush

お試しで作ったものをgithubにpushしました。
https://github.com/tetsu-koba/hexdump

ファイルの内容を16進数でダンプするちょっとしたユーティリティです。出力フォーマットはhdコマンドを真似しました。

$ ./hexdump 
Usage: ./hexdump input_file
$ ./hexdump ./hexdump |head -5
00000000  7f 45 4c 46 02 01 01 00  00 00 00 00 00 00 00 00  |.ELF............|
00000010  02 00 b7 00 01 00 00 00  7c e9 21 00 00 00 00 00  |........|.!.....|
00000020  40 00 00 00 00 00 00 00  00 83 12 00 00 00 00 00  |@...............|
00000030  00 00 00 00 40 00 38 00  08 00 40 00 13 00 11 00  |....@.8...@.....|
00000040  06 00 00 00 04 00 00 00  40 00 00 00 00 00 00 00  |........@.......|
$

test.shを実行するとテストファイルを使ってテストすることができるようになっています。

Github Actionsの設定

.github/workflowのディレクトリに以下のファイルを作成するだけで、Github Actionsが有効になりました。

このファイルの書き方は、githubにある他のzigのリポジトリをいろいろ見て回って真似をしました。
ポイントとしては、zigのコマンドのインストールは以下のように書くとできます。

  steps:
    - uses: goto-bus-stop/setup-zig@v2.0.1
        with:
          version: master

これでmaster branchにあるzigコマンドがインストールされます。

ビルドオプションが4通り、OSが2通りで全部で8通りのテストと、ソースフォーマットの整形漏れのチェックの合計9つのジョブが走ります。

トリガーになるのは、pushされたとき、pull requestされたときと毎日午前0時(UTC)です。
毎日定期的に実行するのは、Zigのmasterで破壊的な変更の影響があったことを知るためです。
** 2023/02/28追記 masterの破壊的変更を検知しました **

Tips

16進数の表示のフォーマット指定

Cのprintfでの2桁の16進数表示。

    printf("%02x ", x);

Zigではこう書きます。

    try w.print("{x:0>2} ", .{x});

shellスクリプトのオプション

#!/bin/sh/ -eux

-euxは以下の3つを同時に指定しています。

-e エラーが発生したらその場でshellスクリプトを終了させる。デフォルトはそのまま続行。
-u 未定義のshell変数を使用したらエラー。typoを発見できます。
-x 実行したコマンドを表示。ログに実行の経過を残せます。

LICENSEファイルの作り方

githubのリポジトリにLICENSEファイルを追加するときに、WebのUIで簡単にテンプレートから作成できます。
https://docs.github.com/ja/communities/setting-up-your-project-for-healthy-contributions/adding-a-license-to-a-repository

関連

https://zenn.dev/tetsu_koba/articles/d0895b68108ae9

Discussion