はじめに
actをWSL上で構築する際に少しハマったのでメモとして残しておきます。
開発環境
- 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
さいごに
どこにも情報なくて辛かった。。。
コメント