Cc: Junio C Hamano <gitster@xxxxxxxxx>, SZEDER Gábor <szeder.dev@xxxxxxxxx>, Eric Sunshine <sunshine@xxxxxxxxxxxxxx>, Johannes Schindelin <johannes.schindelin@xxxxxx> Recently, we've un-broken git for Linux with musl libc, and we have a serie to fix false negative with busybox shell utils. Add a CI job on Travis and Azure to make sure we won't break it again. Change from v3: * reword 2/6: adding su behavior in util-linux and busybox * 6/6: Drop change to azure-pipelines.yml, and declare this series will be used for Travis only. Since Azure will be replaced by GitHub Action in a later series. Hi Junio, The series for GitHub Actions will need to be rebased on this series again. 6/6 in that seriess will have UD conflicts. Please "git rm azure-pipelines.yml" to fix conflicts. SZEDER Gábor (1): ci: make MAKEFLAGS available inside the Docker container in the Linux32 job Đoàn Trần Công Danh (5): ci/lib-docker: preserve required environment variables ci/linux32: parameterise command to switch arch ci: refactor docker runner script ci/linux32: libify install-dependencies step travis: build and test on Linux with musl libc and busybox .travis.yml | 10 ++++- azure-pipelines.yml | 4 +- ci/install-docker-dependencies.sh | 18 +++++++++ ci/lib.sh | 8 ++++ ...n-linux32-build.sh => run-docker-build.sh} | 39 +++++++++++++------ ci/{run-linux32-docker.sh => run-docker.sh} | 28 ++++++++++--- 6 files changed, 86 insertions(+), 21 deletions(-) create mode 100755 ci/install-docker-dependencies.sh rename ci/{run-linux32-build.sh => run-docker-build.sh} (63%) rename ci/{run-linux32-docker.sh => run-docker.sh} (43%) Range-diff against v3: 1: 2fdce60075 = 1: 2fdce60075 ci: make MAKEFLAGS available inside the Docker container in the Linux32 job 2: b7b079f559 ! 2: db574b3ff9 ci/lib-docker: preserve required environment variables @@ Commit message We're using "su -m" to preserve environment variables in the shell run by "su". But, that options will be ignored while "-l" (aka "--login") is - specified. + specified in util-linux and busybox's su. + + In a later patch this script will be reused for checking Git for Linux + with musl libc on Alpine Linux, Alpine Linux uses "su" from busybox. Since we don't have interest in all environment variables, pass only those necessary variables to the inner script. 3: 8c8cf3eb24 = 3: a13715245f ci/linux32: parameterise command to switch arch 4: 22cc7960c3 = 4: b5de868c1e ci: refactor docker runner script 5: 2e0d54f81e = 5: c39451ffe5 ci/linux32: libify install-dependencies step 6: b61ed50cf6 ! 6: 231affae83 travis: build and test on Linux with musl libc and busybox @@ .travis.yml: matrix: os: linux compiler: - ## azure-pipelines.yml ## -@@ azure-pipelines.yml: jobs: - PathtoPublish: t/failed-test-artifacts - ArtifactName: failed-test-artifacts - -+- job: linux_musl -+ displayName: linux-musl -+ condition: succeeded() -+ pool: -+ vmImage: ubuntu-latest -+ steps: -+ - bash: | -+ test "$GITFILESHAREPWD" = '$(gitfileshare.pwd)' || ci/mount-fileshare.sh //gitfileshare.file.core.windows.net/test-cache gitfileshare "$GITFILESHAREPWD" "$HOME/test-cache" || exit 1 -+ -+ res=0 -+ sudo AGENT_OS="$AGENT_OS" BUILD_BUILDNUMBER="$BUILD_BUILDNUMBER" BUILD_REPOSITORY_URI="$BUILD_REPOSITORY_URI" BUILD_SOURCEBRANCH="$BUILD_SOURCEBRANCH" BUILD_SOURCEVERSION="$BUILD_SOURCEVERSION" SYSTEM_PHASENAME="$SYSTEM_PHASENAME" SYSTEM_TASKDEFINITIONSURI="$SYSTEM_TASKDEFINITIONSURI" SYSTEM_TEAMPROJECT="$SYSTEM_TEAMPROJECT" CC=$CC MAKEFLAGS="$MAKEFLAGS" jobname=linux-musl bash -lxc ci/run-docker.sh || res=1 -+ -+ sudo chmod a+r t/out/TEST-*.xml -+ test ! -d t/failed-test-artifacts || sudo chmod a+r t/failed-test-artifacts -+ -+ test "$GITFILESHAREPWD" = '$(gitfileshare.pwd)' || sudo umount "$HOME/test-cache" || res=1 -+ exit $res -+ displayName: 'jobname=linux-musl ci/run-docker.sh' -+ env: -+ GITFILESHAREPWD: $(gitfileshare.pwd) -+ - task: PublishTestResults@2 -+ displayName: 'Publish Test Results **/TEST-*.xml' -+ inputs: -+ mergeTestResults: true -+ testRunTitle: 'musl' -+ platform: Linux -+ publishRunAttachments: false -+ condition: succeededOrFailed() -+ - task: PublishBuildArtifacts@1 -+ displayName: 'Publish trash directories of failed tests' -+ condition: failed() -+ inputs: -+ PathtoPublish: t/failed-test-artifacts -+ ArtifactName: failed-test-artifacts -+ - - job: static_analysis - displayName: StaticAnalysis - condition: succeeded() - ## ci/install-docker-dependencies.sh ## @@ ci/install-docker-dependencies.sh: Linux32) libssl-dev libexpat-dev gettext python >/dev/null -- 2.26.0.334.g6536db25bb