From b8a1a336633cf5e6debbeca7e81364759a956ab7 Mon Sep 17 00:00:00 2001 From: Matthias Koeppe Date: Tue, 26 Dec 2023 11:14:17 -0800 Subject: [PATCH] tox.ini (docker): Move copying of logs from container here from .github/workflows/docker.yml --- .github/workflows/docker.yml | 4 +--- tox.ini | 11 ++++++++++- 2 files changed, 11 insertions(+), 4 deletions(-) diff --git a/.github/workflows/docker.yml b/.github/workflows/docker.yml index be3e784d87c..818b26b5b05 100644 --- a/.github/workflows/docker.yml +++ b/.github/workflows/docker.yml @@ -235,9 +235,7 @@ jobs: - name: Copy logs from the Docker image or build container run: | mkdir -p "artifacts/$LOGS_ARTIFACT_NAME" - cp -r .tox/$TOX_ENV/Dockerfile .tox/$TOX_ENV/log "artifacts/$LOGS_ARTIFACT_NAME" - if [ -f .tox/$TOX_ENV/Dockertags ]; then CONTAINERS=$(docker create $(tail -1 .tox/$TOX_ENV/Dockertags) /bin/bash || true); fi - if [ -n "$CONTAINERS" ]; then for CONTAINER in $CONTAINERS; do for ARTIFACT in /sage/logs; do docker cp $CONTAINER:$ARTIFACT artifacts/$LOGS_ARTIFACT_NAME && HAVE_LOG=1; done; if [ -n "$HAVE_LOG" ]; then break; fi; done; fi + cp -r .tox/$TOX_ENV/* "artifacts/$LOGS_ARTIFACT_NAME" if: always() - uses: actions/upload-artifact@v3 with: diff --git a/tox.ini b/tox.ini index 9e7741ff26c..1c225168342 100644 --- a/tox.ini +++ b/tox.ini @@ -763,9 +763,10 @@ commands = docker: --build-arg TARGETS="{posargs:build}" \ docker: --build-arg TARGETS_OPTIONAL="{env:TARGETS_OPTIONAL:ptest}" \ docker: {env:EXTRA_DOCKER_BUILD_ARGS:}; status=$?; \ + docker: unset CONTAINER; \ docker: if [ $status != 0 ]; then \ docker: if [ $DOCKER_BUILDKIT = 0 ]; then \ - docker: BUILD_TAG="$BUILD_TAG-failed"; docker commit $(docker ps -l -q) $BUILD_IMAGE:$BUILD_TAG; PUSH_TAGS=$BUILD_IMAGE:$BUILD_TAG; \ + docker: BUILD_TAG="$BUILD_TAG-failed"; CONTAINER=$(docker ps -l -q); docker commit $CONTAINER $BUILD_IMAGE:$BUILD_TAG; PUSH_TAGS=$BUILD_IMAGE:$BUILD_TAG; \ docker: else \ docker: unset BUILD_TAG; unset PUSH_TAGS; echo "DOCKER_BUILDKIT=1, so we cannot commit and tag the failed image"; \ docker: fi; \ @@ -779,6 +780,14 @@ commands = docker: docker push $tag || echo "(ignoring errors)"; \ docker: done; \ docker: fi; \ + docker: if [ x"$CONTAINER" = x -a x"$BUILD_TAG" != x ]; then \ + docker: CONTAINER=$(docker create $BUILD_TAG /bin/bash; \ + docker: fi; \ + docker: if [ x"$CONTAINER" != x ]; then \ + docker: for ARTIFACT in /sage/logs /sage/{prefix,venv}/installed /root/.sage/timings2.json "/sage/pkgs/*/.tox/*/.sage/timings2.json"; do \ + docker: docker cp -L $CONTAINER:$ARTIFACT {envdir}/; \ + docker: done; \ + docker: fi; \ docker: if [ $status != 0 ]; then exit $status; fi; \ docker: done' # #28728: gap fails its test suite.