nektos / act

Run your GitHub Actions locally πŸš€
https://nektosact.com
MIT License
55.79k stars 1.4k forks source link

Error: volume is in use #2457

Open GsLogiMaker opened 2 months ago

GsLogiMaker commented 2 months ago

Bug report info

act version:            0.2.66
GOOS:                   linux
GOARCH:                 amd64
NumCPU:                 8
Docker host:            DOCKER_HOST environment variable is not set
Sockets found:
    /var/run/docker.sock
Config files:           
    /home/gabrielschwab/.config/act/actrc:
        -P ubuntu-latest=catthehacker/ubuntu:act-latest
        -P ubuntu-22.04=catthehacker/ubuntu:act-22.04
        -P ubuntu-20.04=catthehacker/ubuntu:act-20.04
        -P ubuntu-18.04=catthehacker/ubuntu:act-18.04
Build info:
    Go version:            go1.21.13
    Module path:           github.com/nektos/act
    Main version:          (devel)
    Main path:             github.com/nektos/act
    Main checksum:         
    Build settings:
        -buildmode:           exe
        -compiler:            gc
        -ldflags:             -s -w -X main.version=0.2.66 -X main.commit=38e43bd51f66493057857f6d743153c874a7178f -X main.date=2024-09-01T02:29:57Z -X main.builtBy=goreleaser
        CGO_ENABLED:          0
        GOARCH:               amd64
        GOOS:                 linux
        GOAMD64:              v1
        vcs:                  git
        vcs.revision:         38e43bd51f66493057857f6d743153c874a7178f
        vcs.time:             2024-09-01T02:29:39Z
        vcs.modified:         false
Docker Engine:
    Engine version:        27.2.0
    Engine runtime:        runc
    Cgroup version:        2
    Cgroup driver:         systemd
    Storage driver:        overlay2
    Registry URI:          https://index.docker.io/v1/
    OS:                    Pop!_OS 22.04 LTS
    OS type:               linux
    OS version:            22.04
    OS arch:               x86_64
    OS kernel:             6.8.0-76060800daily20240311-generic
    OS CPU:                8
    OS memory:             31905 MB
    Security options:
        name=apparmor
        name=seccomp,profile=builtin
        name=cgroupns

Command used with act

sudo act # sudo not needed to reproduce the error

Describe issue

I had been debugging my github actions workflow with act for a while and after some tweaking to the workflow file, I suddenly started getting a volume is in use error. The workflow consists of two jobs, where the second needs the first to finish. The first completes fine, but the second doesn't start because of the aforementioned error. I didn't change anything substantial, and even after commenting out most of the workflow's code I still get the error.

I believe the issue might be because of some kind of internal state stored by act, maybe on the file-system, but I couldn't find any commands to clear out any internal states or caches and I don't know where to look to find them if they do exist.

Link to GitHub repository

https://github.com/GsLogiMaker/glecs_godot_plugin/tree/cpp

Workflow content

name: Build Process

on:
  push:
    branches: [ "dev" ]
  pull_request:
    branches: [ "dev" ]
  workflow_dispatch:

jobs:

  compile_glecs:
    strategy:
      matrix:
        include:
          # Linux
          - platform: linux
            arch: x86_64
            os: ubuntu-latest
            glecs_lib: libglecs.linux.template_debug.x86_64.so
    runs-on: ${{ matrix.os }}
    outputs:
      # Linux
      bin_key_linux_x86_64: ${{ steps.set_cache_key.outputs.bin_key_linux_x86_64 }}
      i686-linux_bin_key: ${{ steps.set_cache_key.outputs.i686-unknown-linux-gnu_bin_key }}
      # Mac
      aarch64-mac_bin_key: ${{ steps.set_cache_key.outputs.x86_64-apple-darwin_bin_key }}
      x86_64-mac_bin_key: ${{ steps.set_cache_key.outputs.aarch64-apple-darwin_bin_key }}
      # Windows
      x86_64-windows_bin_key: ${{ steps.set_cache_key.outputs.x86_64-pc-windows-gnu_bin_key }}
    steps:
    - name: πŸ™ Setup git environment
      uses: actions/checkout@v4

    # - name: πŸ—³οΈ Initialize git submodules
    #   run: git submodule update --init --recursive

    # - name: Python install
    #   uses: actions/setup-python@v5
    #   with:
    #     python-version: '3.10'

    # --- Define keys ---

    # - name: πŸ”οΈ Define library cache key in env
    #   run: |
    #     printf "*** Setting key in env***"
    #     echo "bin_key=lib.${{ matrix.platform }}_${{ matrix.arch }}.${{ hashFiles('addons/glecs/bin') }}" >> $GITHUB_ENV

    # - name: πŸ”οΈ Define library cache key in output
    #   id: set_cache_key
    #   run: |
    #     printf "*** Setting key ***"
    #     echo "bin_key_${{ matrix.platform }}_${{ matrix.arch }}=${{env.bin_key}}" >> $GITHUB_OUTPUT

    # - name: πŸ”οΈ Define cpp cache key
    #   run: |
    #     printf "*** Setting key ***"
    #     echo "cpp_key=cpp.${{ matrix.platform }}_${{ matrix.arch }}.${{ hashFiles('addons/glecs/cpp/') }}" >> $GITHUB_ENV

    # - name: πŸ”οΈ Define includes cache key
    #   run: |
    #     printf "*** Setting key ***"
    #     echo "include_key=include.${{ matrix.platform }}_${{ matrix.arch }}.${{ hashFiles('addons/glecs/cpp/include') }}.${{ hashFiles('addons/glecs/cpp/SConstruct') }}" >> $GITHUB_ENV

    # # --- Restore caches ---

    # - name: πŸ’Ύ Restore cached cpp files
    #   uses: actions/cache/restore@v4.0.2
    #   with:
    #     path: addons/glecs/cpp
    #     key: ${{ env.cpp_key }}

    # - name: πŸ’Ύ Restore cached include files
    #   uses: actions/cache/restore@v4.0.2
    #   with:
    #     path: addons/glecs/cpp/include
    #     key: ${{ env.include_key }}

    # # ---  ---

    # # - name: 🐧 Install GCC multilib for Linux i686 build
    # #   if: ${{ matrix.target == 'i686-unknown-linux-gnu' && runner.os == 'Linux'}}
    # #   run: sudo apt-get install gcc-multilib

    # # - name: πŸͺŸ Install mingw for Windows build
    # #   if: ${{ matrix.target == 'x86_64-pc-windows-gnu' && runner.os == 'Linux' }}
    # #   run: sudo apt install gcc-mingw-w64

    # # --- Compile Glecs ---

    # - name: Install scons
    #   run: |
    #     pip install scons

    # - name: Build C++ code
    #   run: |
    #     cd addons/glecs/cpp
    #     scons platform=${{ matrix.platform }} arch=${{ matrix.arch }}
    #   #target=template_release

    # # --- Define bin key ---

    # - name: πŸ”οΈ Define library cache key in env
    #   run: |
    #     printf "*** Setting key in env***"
    #     echo "bin_key=bin.${{ matrix.platform }}_${{ matrix.arch }}.${{ hashFiles('addons/glecs/bin') }}" >> $GITHUB_ENV
    # - name: πŸ”οΈ Define library cache key in output
    #   id: set_cache_key
    #   run: |
    #     printf "*** Setting key ***"
    #     echo "bin_key_${{ matrix.platform }}_${{ matrix.arch }}=${{env.bin_key}}" >> $GITHUB_OUTPUT

    # # --- Save caches ---

    # - name: Cache cpp source build files
    #   uses: actions/cache/save@v4
    #   with:
    #     path: addons/glecs/cpp
    #     key: ${{ env.cpp_key }}

    # - name: Cache cpp include build files
    #   uses: actions/cache/save@v4
    #   with:
    #     path: addons/glecs/cpp/include
    #     key: ${{ env.include_key }}

    # - name: πŸ’Ύ Cache bin
    #   uses: actions/cache/save@v4.0.2
    #   with:
    #     path: ./addons/glecs/bin/${{ matrix.glecs_lib }}
    #     key: ${{ env.bin_key }}
    #     enableCrossOsArchive: true

  run_test_suite:
    needs: compile_glecs
    runs-on: ubuntu-latest
    steps:
        - name: πŸ™ Setup git environment
          uses: actions/checkout@v4

        # - name: πŸ’Ύ Load cached library as debug
        #   uses: actions/cache/restore@v4.0.2
        #   with:
        #     path: ./addons/glecs/bin/libglecs.linux.template_debug.x86_64.so
        #     key: ${{ needs.compile_glecs.outputs.bin_key_linux_x86_64 }}
        #     enableCrossOsArchive: true
        # - name: πŸ’Ύ Load cached library as release
        #   uses: actions/cache/restore@v4.0.2
        #   with:
        #     path: ./addons/glecs/bin/libglecs.linux.template_release.x86_64.so
        #     key: ${{ needs.compile_glecs.outputs.bin_key_linux_x86_64 }}
        #     enableCrossOsArchive: true

        # - name: πŸ€– Run Godot unit tests
        #   id: run-godot-tests
        #   uses: croconut/godot-tester@v5.1
        #   with:
        #     # required
        #     version: "4.3"
        #     is-mono: "false"
        #     # the folder with your project.godot file in it
        #     path: "./"
        #     # the ratio of tests that must pass for this action to pass
        #     # e.g. 0.6 means 60% of your tests must pass
        #     minimum-pass: "1.0"
        #     # the directory containing Gut tests
        #     test-dir: "res://unittests"
        #     # default is GUTs default: 'res://.gutconfig.json'; set this to load a different config file
        #     config-file: "res://.gut_editor_config.json"
        #     # relative path to the xml file to read / write GUT's results from, recommended
        #     # for direct-scene users to check this file if you have issues
        #     result-output-file: "test_results.xml"

        # - name: πŸ“„ Print Godot logs
        #   if: failure() && steps.run-godot-tests.outcome != 'success'
        #   run: |
        #     echo ""
        #     echo "***"
        #     echo "GODOT LOG"
        #     echo "***"
        #     echo ""
        #     printf "$(cat logs/godot.log)\n"

        #     echo ""
        #     echo "***"
        #     echo "GODOT TEST RESULTS"
        #     echo "***"
        #     echo ""
        #     echo $(cat test_results.xml)

        #     echo ""
        #     echo "***"
        #     echo "LS"
        #     echo "***"
        #     ls -g -A

        #     echo ""
        #     echo "***"
        #     echo "LS glecs/bin/"
        #     echo "***"
        #     ls addons/glecs/bin -g -A

Relevant log output

[Build Process/run_test_suite] [DEBUG]   🐳  docker volume rm act-Build-Process-run-test-suite-898315f0e00f8ddda9d4f14d4a139d00e0b979c90a05c3b0826ed0c4b5a471a4
Error: Error response from daemon: remove act-Build-Process-run-test-suite-898315f0e00f8ddda9d4f14d4a139d00e0b979c90a05c3b0826ed0c4b5a471a4: volume is in use - [5764949cc2bf543154af786d0fd768e2e17f70cba968851651b1c09f0522e115]

Additional information

I needed to run act as root because of file permission issues surrounding the use of code-server. I still get the same error when running the workflow in my normal file-system home without sudo.

sebastien-perpignane commented 1 month ago

Hey,

Try this maybe: docker ps -a --filter volume=act-Build-Process-run-test-suite-898315f0e00f8ddda9d4f14d4a139d00e0b979c90a05c3b0826ed0c4b5a471a4

It should let you know which container is using the volume.

Then you should be able to remove the container using the volume.

donovanmuller commented 3 weeks ago

Same issue, deleted the exited container:

$ docker ps -a --filter volume=act-xxx-30c9d7d991c0b592bef67343da294c5042c27a4a55765fa4ebc000df27f6bf5c
CONTAINER ID   IMAGE                                  COMMAND                  CREATED         STATUS                        PORTS     NAMES
0a0d1b51677b   danielflook/terraform-github-actions   "/entrypoints/valida…"   8 minutes ago   Exited (137) 59 seconds ago             act-xxx-30c9d7d991c0b592bef67343da294c5042c27a4-535096946b77f9e05d543c3194fc423bdec634726d199f94d2ae0dc92b448fee

$ docker rm 0a0d1b51677b
0a0d1b51677b