Browse Source

ci: refactor docker runner script

We will support alpine check in docker later in this series.

While we're at it, tell people to run as root in podman,
if podman is used as drop-in replacement for docker,
because podman will map host-user to container's root,
therefore, mapping their permission.

Signed-off-by: Đoàn Trần Công Danh <congdanhqx@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
maint
Đoàn Trần Công Danh 5 years ago committed by Junio C Hamano
parent
commit
5a33f541dd
  1. 2
      .travis.yml
  2. 4
      azure-pipelines.yml
  3. 6
      ci/run-docker-build.sh
  4. 22
      ci/run-docker.sh

2
.travis.yml

@ -32,7 +32,7 @@ matrix:
services: services:
- docker - docker
before_install: before_install:
script: ci/run-linux32-docker.sh script: ci/run-docker.sh
- env: jobname=StaticAnalysis - env: jobname=StaticAnalysis
os: linux os: linux
compiler: compiler:

4
azure-pipelines.yml

@ -489,14 +489,14 @@ jobs:
test "$GITFILESHAREPWD" = '$(gitfileshare.pwd)' || ci/mount-fileshare.sh //gitfileshare.file.core.windows.net/test-cache gitfileshare "$GITFILESHAREPWD" "$HOME/test-cache" || exit 1 test "$GITFILESHAREPWD" = '$(gitfileshare.pwd)' || ci/mount-fileshare.sh //gitfileshare.file.core.windows.net/test-cache gitfileshare "$GITFILESHAREPWD" "$HOME/test-cache" || exit 1


res=0 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" bash -lxc ci/run-linux32-docker.sh || res=1 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=Linux32 bash -lxc ci/run-docker.sh || res=1


sudo chmod a+r t/out/TEST-*.xml sudo chmod a+r t/out/TEST-*.xml
test ! -d t/failed-test-artifacts || sudo chmod a+r t/failed-test-artifacts 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 test "$GITFILESHAREPWD" = '$(gitfileshare.pwd)' || sudo umount "$HOME/test-cache" || res=1
exit $res exit $res
displayName: 'ci/run-linux32-docker.sh' displayName: 'jobname=Linux32 ci/run-docker.sh'
env: env:
GITFILESHAREPWD: $(gitfileshare.pwd) GITFILESHAREPWD: $(gitfileshare.pwd)
- task: PublishTestResults@2 - task: PublishTestResults@2

6
ci/run-linux32-build.sh → ci/run-docker-build.sh

@ -1,16 +1,16 @@
#!/bin/sh #!/bin/sh
# #
# Build and test Git in a 32-bit environment # Build and test Git inside container
# #
# Usage: # Usage:
# run-linux32-build.sh <host-user-id> # run-docker-build.sh <host-user-id>
# #


set -ex set -ex


if test $# -ne 1 || test -z "$1" if test $# -ne 1 || test -z "$1"
then then
echo >&2 "usage: run-linux32-build.sh <host-user-id>" echo >&2 "usage: run-docker-build.sh <host-user-id>"
exit 1 exit 1
fi fi


22
ci/run-linux32-docker.sh → ci/run-docker.sh

@ -1,16 +1,26 @@
#!/bin/sh #!/bin/sh
# #
# Download and run Docker image to build and test 32-bit Git # Download and run Docker image to build and test Git
# #


. ${0%/*}/lib.sh . ${0%/*}/lib.sh


docker pull daald/ubuntu32:xenial case "$jobname" in
Linux32)
CI_CONTAINER="daald/ubuntu32:xenial"
;;
*)
exit 1
;;
esac

docker pull "$CI_CONTAINER"


# Use the following command to debug the docker build locally: # Use the following command to debug the docker build locally:
# $ docker run -itv "${PWD}:/usr/src/git" --entrypoint /bin/bash daald/ubuntu32:xenial # <host-user-id> must be 0 if podman is used as drop-in replacement for docker
# $ docker run -itv "${PWD}:/usr/src/git" --entrypoint /bin/sh "$CI_CONTAINER"
# root@container:/# export jobname=<jobname> # root@container:/# export jobname=<jobname>
# root@container:/# /usr/src/git/ci/run-linux32-build.sh <host-user-id> # root@container:/# /usr/src/git/ci/run-docker-build.sh <host-user-id>


container_cache_dir=/tmp/travis-cache container_cache_dir=/tmp/travis-cache


@ -26,8 +36,8 @@ docker run \
--env cache_dir="$container_cache_dir" \ --env cache_dir="$container_cache_dir" \
--volume "${PWD}:/usr/src/git" \ --volume "${PWD}:/usr/src/git" \
--volume "$cache_dir:$container_cache_dir" \ --volume "$cache_dir:$container_cache_dir" \
daald/ubuntu32:xenial \ "$CI_CONTAINER" \
/usr/src/git/ci/run-linux32-build.sh $(id -u $USER) /usr/src/git/ci/run-docker-build.sh $(id -u $USER)


check_unignored_build_artifacts check_unignored_build_artifacts


Loading…
Cancel
Save