diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index c23db7f94..63a884274 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -131,7 +131,16 @@ jobs: REPO: ${{ github.repository }} steps: - name: Clean Workspace - run: rm -rf "$GITHUB_WORKSPACE"/* + run: | + # This runner (ci-single) is shared with the iso job, which mounts a + # kernel-global devtmpfs at /mulga/scripts/iso-builder/.cache/rootfs/dev. + # If that job is killed its EXIT-trap unmount never runs and the bind + # leaks; a plain rm -rf then traverses it and deletes the host's /dev + # (wipes /dev/null, wedges the box). Detach any leaked mounts under the + # workspace first, then forbid rm from crossing a mount boundary. + awk -v w="$GITHUB_WORKSPACE" '$2 ~ "^"w {print $2}' /proc/mounts \ + | sort -r | xargs -r -I{} sudo umount -l -R {} || true + sudo rm -rf --one-file-system "$GITHUB_WORKSPACE"/* - uses: actions/create-github-app-token@v3 id: app-token @@ -216,7 +225,7 @@ jobs: sudo umount -l "${ROOTFS}/dev" 2>/dev/null || true sudo umount -l "${ROOTFS}/sys" 2>/dev/null || true sudo umount -l "${ROOTFS}/proc" 2>/dev/null || true - sudo rm -rf "$GITHUB_WORKSPACE"/* + sudo rm -rf --one-file-system "$GITHUB_WORKSPACE"/* - uses: actions/create-github-app-token@v3 id: app-token