diff --git a/.github/workflows/docker.yml b/.github/workflows/docker.yml index db4896bbd12..d49aa516356 100644 --- a/.github/workflows/docker.yml +++ b/.github/workflows/docker.yml @@ -179,12 +179,6 @@ jobs: (export PATH=$(pwd)/build/bin:$PATH; (cd upstream && bash -x update-pkgs.sh) && sed -i.bak '/upstream/d' .dockerignore && echo "/:toolchain:/i ADD upstream upstream" | sed -i.bak -f - build/bin/write-dockerfile.sh && git diff) if: inputs.upstream_artifact - - name: Merge CI fixes from sagemath/sage - run: | - .ci/merge-fixes.sh - env: - GH_TOKEN: ${{ github.token }} - - name: Try to login to ghcr.io if: inputs.docker_push_repository != '' # https://docs.github.com/en/actions/reference/workflow-commands-for-github-actions#setting-an-environment-variable @@ -197,6 +191,9 @@ jobs: echo "DOCKER_PUSH_REPOSITORY=$(echo ${{ inputs.docker_push_repository }} | tr "[:upper:]" "[:lower:]")" >> $GITHUB_ENV echo "DOCKER_CONFIG_FILE=$HOME/.docker/config.json" >> $GITHUB_ENV fi + # This line needs to be run before the step "Merge CI fixes from sagemath/sage". + DOCKER_TAG="$(git describe --dirty --always)" + echo "DOCKER_TAG=$DOCKER_TAG" >> $GITHUB_ENV # From the docker documentation via .ci/update-env.sh: # "A tag name must be valid ASCII and may # contain lowercase and uppercase letters, digits, underscores, periods and @@ -211,6 +208,15 @@ jobs: EXTRA_DOCKER_TAGS="dev $EXTRA_DOCKER_TAGS";; esac echo "EXTRA_DOCKER_TAGS=$EXTRA_DOCKER_TAGS" >> $GITHUB_ENV + + - name: Merge CI fixes from sagemath/sage + # This step needs to happen after the commit sha is put in DOCKER_TAG + # so that multi-stage builds can work correctly. + run: | + .ci/merge-fixes.sh + env: + GH_TOKEN: ${{ github.token }} + - name: Configure and build Sage distribution within a Docker container run: | set -o pipefail; EXTRA_DOCKER_BUILD_ARGS="--build-arg NUMPROC=4 --build-arg USE_MAKEFLAGS=\"-k V=0 SAGE_NUM_THREADS=3\"" tox -e $TOX_ENV -- $TARGETS 2>&1 | sed "/^configure: notice:/s|^|::warning file=artifacts/$LOGS_ARTIFACT_NAME/config.log::|;/^configure: warning:/s|^|::warning file=artifacts/$LOGS_ARTIFACT_NAME/config.log::|;/^configure: error:/s|^|::error file=artifacts/$LOGS_ARTIFACT_NAME/config.log::|;" diff --git a/.github/workflows/scan-logs.sh b/.github/workflows/scan-logs.sh index 9cab637e850..5df32b0fc48 100755 --- a/.github/workflows/scan-logs.sh +++ b/.github/workflows/scan-logs.sh @@ -5,9 +5,13 @@ LOGS=${1-logs} for a in $(find "$LOGS" -type f -name "*.log"); do if tail -100 "$a" 2>/dev/null | grep "^[A-Za-z]*Error" >/dev/null; then echo :":"error file=$a:":" ==== ERROR IN LOG FILE $a ==== + echo "::group::$a" cat "$a" + echo "::endgroup::" elif tail -20 "$a" 2>/dev/null | grep -E "^(Warning: Error testing|^sage .*doctest.*failed)" >/dev/null; then echo :":"warning file=$a:":" ==== TESTSUITE FAILURE IN LOG FILE $a ==== + echo "::group::$a" cat "$a" + echo "::endgroup::" fi done diff --git a/build/bin/write-dockerfile.sh b/build/bin/write-dockerfile.sh index 6980f6b6e4b..1d0508fe9b3 100755 --- a/build/bin/write-dockerfile.sh +++ b/build/bin/write-dockerfile.sh @@ -230,11 +230,11 @@ ARG EXTRA_CONFIGURE_ARGS="" EOF if [ ${WITH_SYSTEM_SPKG} = "force" ]; then cat <