GitHub Actions のワークフローを CodeSandbox でデバッグする
この記事で act を知る。
Nix に act のパッケージがある。それならば CodeSandbox で使えるのでは?というメモ。試してみた感じでは「込み入ったことは難しいけど、 act
を気軽に試せるのはよい」といった感じかと。
ここから下はほぼ Notion AI を利用しています、
CodeSandbox で act を使用することで、GitHub Actions のワークフローをローカルホスト以外のクラウド環境でテストし、デバッグすることが可能です。この記事では、CodeSandbox を使用して GitHub Actions をデバッグする方法をご紹介します。
act
をインストールする
CodeSandbox では、act
をインストールすることで、GitHub Actions のワークフローをテストしデバッグすることが可能です。act
をインストールするには、CodeSandbox のターミナルから$ nix-env -iA nixpkgs.act
を実行します。
デバッグしてみる
act
のインストールが完了すると、CodeSandbox 内で GitHub Actions のワークフローをテストしデバッグすることができます。ワークフローをテストするには、$ act
コマンドを使用します。
試してみた
※ 下記は、人間が実際に試してメモしておいたものを貼りつけています。
CodeSandbox でも大体動く。
- 単純なテストを実行するようなものなら動く
- これくらいならそのまま動く
- rootless でも大丈夫だった
-
.yml
はdocker cp
でコピーしていた
-
- ワークフロー内で
docker run
するとエラーになるdocker: Cannot connect to the Docker daemon at unix:///var/run/docker.sock. Is the docker daemon running?.
- これはしかたないか?
- ubunt-latest でないとイメージを pull できない?
- なぜかイメージがない的なエラーで失敗している
Error: failed to create container: 'Error response from daemon: No such image: catthehacker/ubuntu:act-20.04'
- その他(CodeSandbox 固有ではなさそうな項目)
- GitHub CLI が入っていない
- event のペイロード指定などは少し面倒
- checkout も ref を指定するとトークンを要求される?
- 特定のワークフロー(
*.yml
) を動かすには-W
でファイルを指定する- 1 ファイルだけ除外みたいなのはなさそう
文法のチェックなど
act
を使用して、GitHub Actions のワークフローをテストしデバッグするだけではなく、文法チェックを行うこともできます。文法チェックを行うには、$ act lint
コマンドを使用します。このコマンドを実行すると、ワークフローをチェックし、不正な文法を見つけた場合はエラーメッセージを表示します。
actionlint
と shellcheck
のインストール
actionlint
と shellcheck
を CodeSandbox でインストールすることで、GitHub Actions のワークフローをより正確にテストしデバッグすることができます。actionlint
と shellcheck
をインストールするには、CodeSandbox のターミナルから$ nix-env -iA nixpkgs.actionlint
と$ nix-env -iA nixpkgs.shellcheck
を実行します。
csb.nix でインストールしておく
もし、CodeSandbox 上で GitHub Actions のワークフローをテストしデバッグするのが定期的なものであれば、プロジェクトのルートディレクトリに csb.nix
ファイルを作成し、その中に act
、actionlint
、shellcheck
をインストールする Nix 記法を記載することで、毎回ターミナルからインストール作業を行う必要がなくなります。