@@ -108,7 +108,18 @@ jobs:
108108 timeout-minutes : 3
109109 run : |
110110 set -x
111+ gid=`id -g`
112+ docker_sock_gid=`stat -c '%g' /var/run/docker.sock`
113+ docker_gid=`getent group docker | cut -d: -f3 || echo 999`
114+ if [ -n "$docker_sock_gid" ]; then
115+ docker_gid=$docker_sock_gid
116+ echo "Using docker gid: $docker_gid"
117+ fi
118+ if [ "$docker_sock_gid" != "$docker_gid" ] && [ -n "$docker_sock_gid" != "$gid" ] && [ "$docker_sock_gid" != 0 ]; then
119+ echo "WARNING: docker.sock gid ($docker_sock_gid) does not match host docker group gid ($docker_gid) or user gid ($gid)." >&2
120+ fi
111121 docker run -d --rm --user root \
122+ --group-add $docker_sock_gid \
112123 --volume /var/run/docker.sock:/var/run/docker.sock \
113124 --env DOCKER_BUILDKIT=$DOCKER_BUILDKIT \
114125 --volume $(pwd):/workspaces/MLOS \
@@ -129,6 +140,28 @@ jobs:
129140 - name : Print some debug info from inside the container
130141 run : |
131142 docker exec --user vscode --env USER=vscode mlos-devcontainer printenv
143+ docker exec --user vscode --env USER=vscode mlos-devcontainer id
144+ docker exec --user vscode --env USER=vscode mlos-devcontainer ls -l /var/run/docker.sock
145+ docker exec --user vscode --env USER=vscode mlos-devcontainer stat /var/run/docker.sock
146+
147+ - name : Check that docker is usable inside the devcontainer
148+ timeout-minutes : 2
149+ run : |
150+ set -x
151+ docker_sock_gid=`stat -c '%g' /var/run/docker.sock`
152+ if ! [ -w /var/run/docker.sock ] \
153+ || ! docker exec --user vscode --env USER=vscode mlos-devcontainer id -G | sed 's/ /\n/' | grep -q -w $docker_sock_gid
154+ then
155+ echo "ERROR: vscode user in container does not have access to docker.sock group (gid: $docker_sock_gid)" >&2
156+ exit 1
157+ fi
158+ docker exec --user vscode --env USER=vscode mlos-devcontainer docker version
159+ docker exec --user vscode --env USER=vscode mlos-devcontainer docker info
160+ docker exec --user vscode --env USER=vscode mlos-devcontainer docker buildx version
161+ if ! docker exec --user vscode --env USER=vscode mlos-devcontainer docker buildx ls | grep linux/; then
162+ echo "ERROR: docker buildx does not have linux builder available" >&2
163+ exit 1
164+ fi
132165
133166 - name : Check that github.com is in the ssh known_hosts file
134167 run : |
@@ -170,21 +203,26 @@ jobs:
170203 test_count=$(docker exec --user vscode --env USER=vscode mlos-devcontainer \
171204 conda run -n mlos python -m pytest -svxl -n auto --collect-only --rootdir /workspaces/MLOS -s --cache-clear \
172205 | grep -c '<Function ')
173- if [ "${test_count:-0}" -lt 725 ]; then echo "Expected at least 725 tests, got '$test_count'" >&2; exit 1; fi
206+ # if [ "${test_count:-0}" -lt 800 ]; then echo "Expected at least 800 tests, got '$test_count'" >&2; exit 1; fi
174207
175208 # Now actually run the tests.
176209 docker exec --user vscode --env USER=vscode mlos-devcontainer make CONDA_INFO_LEVEL=-v test
177210
211+ - name : Upload coverage report as build artifact
212+ if : always() # ensures it runs even if tests fail
213+ uses : actions/upload-artifact@v4
214+ with :
215+ name : coverage-report
216+ path : coverage.xml
217+
178218 - name : Generate and test binary distribution files
179219 timeout-minutes : 10
180220 run : |
181221 set -x
182222 docker exec --user vscode --env USER=vscode mlos-devcontainer make CONDA_INFO_LEVEL=-v dist dist-test
183223
184224 - name : Test rebuilding the devcontainer in the devcontainer
185- # FIXME:
186- # timeout-minutes: 3
187- timeout-minutes : 10
225+ timeout-minutes : 5
188226 run : |
189227 set -x
190228 git --no-pager diff --exit-code
0 commit comments