-
-
Notifications
You must be signed in to change notification settings - Fork 226
fix: System.IO.IOException: No space left on device on linux-musl x64 #4743
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Conversation
Codecov Report✅ All modified and coverable lines are covered by tests. Additional details and impacted files@@ Coverage Diff @@
## main #4743 +/- ##
==========================================
+ Coverage 73.66% 73.91% +0.25%
==========================================
Files 476 485 +9
Lines 17442 17682 +240
Branches 3453 3494 +41
==========================================
+ Hits 12848 13070 +222
- Misses 3746 3755 +9
- Partials 848 857 +9 ☔ View full report in Codecov by Sentry. 🚀 New features to boost your workflow:
|
|
The Alpine container that we were using was the nightly build. Up until recently, that had .net 10 rc2 on it. Recently this must have been updated to include the GA release instead. Our workflows install the version of .net that we have pinned and up until recently that was rc2... so when the Alpine container bumped to GA, we ended up with two versions of .net on there: rc2 and ga. After merging #4723, the problem seems to have been resolved. edit: spoke too soon... this has started breaking again. |
| build.binlog | ||
| if-no-files-found: ignore | ||
|
|
||
| - name: Free disk space before tests |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Bug: Cleanup action runs inside container, not on runner
The condition if: ${{ !matrix.container }} was removed from the "Remove unused applications" step. This causes the freediskspace action to run inside Alpine containers rather than being skipped. Since the PR aims to free space on the runner (not the container), running cleanup inside the container won't achieve the intended goal. Additionally, the freediskspace action uses Ubuntu-specific commands (apt-get) that don't exist in Alpine Linux (which uses apk). The original condition correctly prevented this action from running when a container is specified.
This reverts commit 2dc7ca6.
| # Clean up apt packages | ||
| sudo apt-get remove -y '^mysql-.*' --fix-missing || echo "::warning::The command [sudo apt-get remove -y '^mysql-.*' --fix-missing] failed to complete successfully. Proceeding..." | ||
| sudo apt-get remove -y '^postgresql-.*' --fix-missing || echo "::warning::PostgreSQL removal failed" | ||
| sudo apt-get remove -y '^mongodb-.*' --fix-missing || echo "::warning::MongoDB removal failed" | ||
| sudo apt-get autoremove -y || echo "::warning::The command [sudo apt-get autoremove -y] failed to complete successfully. Proceeding..." | ||
| sudo apt-get clean || echo "::warning::The command [sudo apt-get clean] failed to complete successfully. Proceeding..." | ||
| df -h /dev/root | ||
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
question: We get these warnings during the build:
# .NET (linux-musl-x64)
The command [sudo apt-get clean] failed to complete successfully. Proceeding...
# .NET (linux-musl-x64)
The command [sudo apt-get autoremove -y] failed to complete successfully. Proceeding...
# .NET (linux-musl-x64)
MongoDB removal failed
# .NET (linux-musl-x64)
PostgreSQL removal failed
# .NET (linux-musl-x64)
The command [sudo apt-get remove -y '^mysql-.*' --fix-missing] failed to complete successfully. Proceeding...
# .NET (linux-musl-arm64)
The command [sudo apt-get clean] failed to complete successfully. Proceeding...
# .NET (linux-musl-arm64)
The command [sudo apt-get autoremove -y] failed to complete successfully. Proceeding...
# .NET (linux-musl-arm64)
MongoDB removal failed
# .NET (linux-musl-arm64)
PostgreSQL removal failed
# .NET (linux-musl-arm64)
The command [sudo apt-get remove -y '^mysql-.*' --fix-missing] failed to complete successfully. Proceeding...Can we if-Condition to only run on supported platforms / not run on non-supported platforms (linux-musl-x64 and linux-musl-arm64)?
Maybe by splitting it into a step that does sudo rm, and another step that does the sudo apt-get (but not for Alpine Linux)?
Maybe something like:
- name: Remove unused packages
if: ${{ !contains(matrix.container.image, 'alpine') }}
run: |
# Clean up apt packages
sudo apt-get ...
...There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Oh, I meant to just execute thesudo apt-get conditionally, since they produce the ::warning:: messages.
But keep the sudo rm on all Linux runners, since they seem to work just fine.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Ah OK, we can tidy up the non-container runners in another PR if need be 👍🏻

Resolves #4788
The containers are pretty lean and I didn't see any opportunity to trim these down further. This PR cleans up a few temporary files before the tests are run (as that's when the jobs were failing). It doesn't work miracles but probably saves enough space to keep everything running a little longer:
See also
System.IO.IOException: No space left on deviceon linux-musl x64 #4742#skip-changelog