ubuntu-24.04 で「Failed to enable snapd service」:snapcraft・rockcraft・charmcraft のビルドと、Focal の AppArmor と Linux 7.0 のカーネル
ubuntu-24.04 のイメージ 20261026.354 から、ランナーのカーネルが 6.17.0-1022-azure から 7.0.0-1017-azure に変わりました。Canonical のビルドの道具(snapcraft・rockcraft・charmcraft)は、目標の base の LXD コンテナの中でビルドし、そこに snapd を入れます。その base が Ubuntu 20.04(Focal)だと、Focal の apparmor_parser 2.13 は 7.0 のカーネルにプロファイルを読み込めず、snapd.service が起動せず、コンテナの準備の途中でビルドが止まります。イメージ 20261101.360 も同じカーネルなので、実行し直しても同じように失敗し、GitHub はイメージのカーネルを古い版に固定できません(runner-images #15197)。
見え方
build-base: ubuntu@20.04 の rockcraft から(craft-actions #144):
Executing in container: lxc --project rockcraft exec local:base-instance-rockcraft-buildd-base-v71--... -- env ... systemctl restart snapd.service Failed to enable snapd service. * Command that failed: 'lxc --project rockcraft exec ... systemctl restart snapd.service' * Command exit code: 1 * Command standard error output: b'Job for snapd.service failed because the control process exited with error code.\nSee "systemctl status snapd.service" and "journalctl -xe" for details.\n' craft_providers.errors.BaseConfigurationError: Failed to enable snapd service.
コンテナの中の原因は AppArmor のパーサーで、状態 185 で終わります:
/sbin/apparmor_parser: Unable to replace "...": Profile doesn't conform to protocol
base: core20 の snap の snapcraft も、同じく Focal のコンテナでビルドするので、同じように失敗します(#15197 の報告は core20 の snap です)。同じワークフローで数日前まで通っていたので、ランナーが壊れたように見えます。変わったのはイメージと、それに伴うカーネルだけです。
直し方は2つ
- 新しい base に移ります:snap なら
base: core22かcore24、rock ならbuild-base: ubuntu@22.04以降。Ubuntu 20.04 は標準のサポートが終わっているので、GitHub が勧めるのはこちらです。 - それまでは、そのジョブを
runs-on: ubuntu-22.04で動かします。こちらのカーネルは、まだ Focal の AppArmor のプロファイルを受け入れます。Canonical 自身の CI も、Focal のビルドをubuntu-22.04に戻しました(craft-actions #144)。
同じ拒否は Ubuntu 26.04 のホストでも報告されているので(charmcraft #2816)、26.04 になっていく ubuntu-latest に移しても避けられません。
見分け方
- Set up job のステップに
ubuntu-24.04の版 20261025.353.1 と出て、その「Included Software」のリンクが開かないなら、そのイメージはリリースの説明が公開されないまま配られていました。GitHub が調べていて、この失敗の原因ではありません。原因はカーネルの変化です(#15197)。 - コンテナは起動するのに、ログに
docker-default//&unconfinedと出て AppArmor にプロセスを止められるのは、Ubuntu 26.04 の別の変化です(Ubuntu 26.04 の Docker で Postgres が起動しない)。
失敗したジョブを IntelliJ IDEA から見るなら
Pipeline Inbox for GitHub Actions Workflows は、Lesstep が作っている JetBrains IDE(2024.1 以降)のプラグインです。すべてのリポジトリの実行を、ジョブ・ステップと一緒に IDE のツールウィンドウに並べるので、イメージの更新のあとに失敗し始めたパッケージのジョブがすぐ分かり、いまのブランチの実行はステータスバーに出ます。読むのは無料、失敗したジョブの再実行・キャンセル・ワークフローの実行・デプロイのレビューは Pro(月 US$1.50・30日の無料試用つき)です。
GitHub と GitHub Actions は GitHub, Inc. の商標、Ubuntu と Snapcraft は Canonical Ltd. の商標、IntelliJ IDEA は JetBrains s.r.o. の商標です。このページはそのいずれとも提携しておらず、承認も受けていません。
ほかに:Ubuntu 26.04 の Docker で Postgres が起動しない · 「The ubuntu-latest label will migrate to Ubuntu 26」 · IntelliJ IDEA で使える GitHub Actions のプラグインの比較 · English