GithubのZigのリポジトリでGithub Actionsで自動テストされるようにしてみた
Githubにコードを置くことはあったのですが、今までGithub ActionsでのCIはやったことがありませんでした。今回はそれを試してみました。
ZigのコードをGithubにpush
お試しで作ったものをgithubにpushしました。
ファイルの内容を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で簡単にテンプレートから作成できます。
関連
Discussion