PR

[WSL]GitHub Actionsをローカル環境で動かせるactの環境構築メモ

WSL

はじめに

actWSL上で構築する際に少しハマったのでメモとして残しておきます

開発環境

  • Ubuntu 22.04.4
  • Homebrew 4.2.21
  • Docker 26.1.3
  • git 2.34.1
  • act 0.2.62

actとは?

ローカル環境GitHub Actionsが動かせるツールです。

Introduction - act - User Guide

インストール手順

Homebrewを使ってactをインストールします。

$ brew install act
# インストール後、念の為ターミナルを再起動したほうが良いかも?

次にactのサンプルプロジェクトをクローンし、プロジェクトに移動します。

$ git clone [email protected]:cplee/github-actions-demo.git
$ cd github-actions-demo

そしてactを実行すると以下のようなエラーが出ました。

act初回起動時にはDockerのコンテナイメージのスペックを指定します。後で変更もできるので、よくわからない場合はMiddle辺りにしておいてください。

$ act
INFO[0000] Using docker host 'unix:///var/run/docker.sock', and daemon socket 'unix:///var/run/docker.sock'
[CI/test] 🚀  Start image=catthehacker/ubuntu:act-latest
[CI/test]   🐳  docker pull image=catthehacker/ubuntu:act-latest platform= username= forcePull=true
docker-credential-secretservice: error while loading shared libraries: libsecret-1.so.0: cannot open shared object file: No such file or directory
[CI/test] Could not get auth config from docker config: error getting credentials - err: exit status 127, out: ``
Error: error getting credentials - err: exit status 127, out: ``

libsecret-1」というパッケージが足りないと怒られたのでインストール。

$ sudo apt-get -y install libsecret-1-0
# インストール後、念の為ターミナルを再起動したほうが良いかも?

もう一度actを実行すると。。。

$ act
INFO[0000] Using docker host 'unix:///var/run/docker.sock', and daemon socket 'unix:///var/run/docker.sock'
[CI/test] 🚀  Start image=catthehacker/ubuntu:act-latest
[CI/test]   🐳  docker pull image=catthehacker/ubuntu:act-latest platform= username= forcePull=true
[CI/test] Could not get auth config from docker config: error getting credentials - err: exit status 1, out: `GDBus.Error:org.freedesktop.DBus.Error.ServiceUnknown: The name org.freedesktop.secrets was not provided by any .service files`
Error: error getting credentials - err: exit status 1, out: `GDBus.Error:org.freedesktop.DBus.Error.ServiceUnknown: The name org.freedesktop.secrets was not provided by any .service files`

なるほど、わからんと思ってググると別のツールのIssueが見つかりました。

docker build regression: GDBus.Error:org.freedesktop.DBus.Error.ServiceUnknown: The name org.freedesktop.secrets was not provided by any .service files · Issue #1078 · moby/buildkit
Docker was working perfectly fine, but recently it stopped building the simplest possible Dockerfile, such as this one: ...

物は試しだと思いインストールし。。。

$ sudo apt install gnome-keyring
# インストール後、念の為ターミナルを再起動したほうが良いかも?

actを実行してみると。。。見事にエラーの内容が変わりました

$ act
INFO[0000] Using docker host 'unix:///var/run/docker.sock', and daemon socket 'unix:///var/run/docker.sock'
[CI/test] 🚀  Start image=catthehacker/ubuntu:act-latest
[CI/test]   🐳  docker pull image=catthehacker/ubuntu:act-latest platform= username= forcePull=true
Error: permission denied while trying to connect to the Docker daemon socket at unix:///var/run/docker.sock: Post "http://%2Fvar%2Frun%2Fdocker.sock/v1.45/images/create?fromImage=catthehacker%2Fubuntu&tag=act-latest": dial unix /var/run/docker.sock: connect: permission denied

上記のエラーはdockerコマンドsudoなしで実行できるようにすればよいだけなのでdockerグループにユーザーを追加します。

# dockerグループの存在確認
$ getent group docker
docker:x:999:

# 存在しなかったらdockerグループを作成
$ sudo groupadd docker

# dockerグループに自分を追加
$ sudo usermod -aG docker $USER
# 設定後に、念の為ターミナルを再起動したほうが良いかも?

そして、再びactを実行すると。。。。動いた!!

$ act
INFO[0000] Using docker host 'unix:///var/run/docker.sock', and daemon socket 'unix:///var/run/docker.sock'
[CI/test] 🚀  Start image=catthehacker/ubuntu:act-latest
[CI/test]   🐳  docker pull image=catthehacker/ubuntu:act-latest platform= username= forcePull=true
[CI/test]   🐳  docker create image=catthehacker/ubuntu:act-latest platform= entrypoint=["tail" "-f" "/dev/null"] cmd=[] network="host"
[CI/test]   🐳  docker run image=catthehacker/ubuntu:act-latest platform= entrypoint=["tail" "-f" "/dev/null"] cmd=[] network="host"
[CI/test]   ☁  git clone 'https://github.com/actions/setup-node' # ref=v1
[CI/test] ⭐ Run Main actions/checkout@v2
[CI/test]   🐳  docker cp src=/home/xxx/workspaces/github-actions-demo/. dst=/home/xxx/workspaces/github-actions-demo
[CI/test]   ✅  Success - Main actions/checkout@v2
[CI/test] ⭐ Run Main actions/setup-node@v1
[CI/test]   🐳  docker cp src=/home/xxx/.cache/act/actions-setup-node@v1/ dst=/var/run/act/actions/actions-setup-node@v1/
[CI/test]   🐳  docker exec cmd=[node /var/run/act/actions/actions-setup-node@v1/dist/index.js] user= workdir=
[CI/test]   💬  ::debug::isExplicit:
[CI/test]   💬  ::debug::explicit? false
[CI/test]   💬  ::debug::isExplicit: 10.24.1
[CI/test]   💬  ::debug::explicit? true
[CI/test]   💬  ::debug::evaluating 1 versions
[CI/test]   💬  ::debug::matched: 10.24.1
[CI/test]   💬  ::debug::checking cache: /opt/hostedtoolcache/node/10.24.1/x64
[CI/test]   💬  ::debug::Found tool in cache node 10.24.1 x64
| [command]/opt/hostedtoolcache/node/10.24.1/x64/bin/node --version
| v10.24.1
| [command]/opt/hostedtoolcache/node/10.24.1/x64/bin/npm --version
| 6.14.12
[CI/test]   ❓ add-matcher /run/act/actions/actions-setup-node@v1/.github/tsc.json
[CI/test]   ❓ add-matcher /run/act/actions/actions-setup-node@v1/.github/eslint-stylish.json
[CI/test]   ❓ add-matcher /run/act/actions/actions-setup-node@v1/.github/eslint-compact.json
[CI/test]   ✅  Success - Main actions/setup-node@v1
[CI/test]   ⚙  ::add-path:: /opt/hostedtoolcache/node/10.24.1/x64/bin
[CI/test] ⭐ Run Main npm install
[CI/test]   🐳  docker exec cmd=[bash --noprofile --norc -e -o pipefail /var/run/act/workflow/2] user= workdir=
| added 280 packages from 643 contributors and audited 280 packages in 4.864s
|
| 24 packages are looking for funding
|   run `npm fund` for details
|
| found 35 vulnerabilities (2 low, 16 moderate, 14 high, 3 critical)
|   run `npm audit fix` to fix them, or `npm audit` for details
[CI/test]   ✅  Success - Main npm install
[CI/test] ⭐ Run Main npm test
[CI/test]   🐳  docker exec cmd=[bash --noprofile --norc -e -o pipefail /var/run/act/workflow/3] user= workdir=
|
| > [email protected] test /home/xxx/workspaces/github-actions-demo
| > mocha ./tests --recursive
|
|
|
|   GET /
|     ✓ should respond with hello world
|
|
|   1 passing (18ms)
|
[CI/test]   ✅  Success - Main npm test
[CI/test] Cleaning up container for job test
[CI/test] 🏁  Job succeeded

さいごに

どこにも情報なくて辛かった。。。

コメント

タイトルとURLをコピーしました