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 記法を記載することで、毎回ターミナルからインストール作業を行う必要がなくなります。