run-docker.sh 879 B

123456789101112131415161718192021222324252627282930313233343536373839
  1. # Small script to run tests for a target (or all targets) inside all the
  2. # respective docker images.
  3. set -ex
  4. run() {
  5. local gid=$(id -g) \
  6. group=$(id -g -n) \
  7. target=$1 \
  8. uid=$(id -u) \
  9. user=$(id -u -n)
  10. echo $target
  11. docker build -t $target ci/docker/$target
  12. docker run \
  13. --rm \
  14. -e CARGO_HOME=/cargo \
  15. -e CARGO_TARGET_DIR=/target \
  16. -v $HOME/.cargo:/cargo \
  17. -v `pwd`/target:/target \
  18. -v `pwd`:/checkout:ro \
  19. -v `rustc --print sysroot`:/rust:ro \
  20. -w /checkout \
  21. -it $target \
  22. sh -c "
  23. groupadd -g $gid $group
  24. useradd -m -g $gid -u $uid $user
  25. chown $user /cargo /target
  26. su -c 'PATH=\$PATH:/rust/bin ci/run.sh $target' $user
  27. "
  28. }
  29. if [ -z "$1" ]; then
  30. for d in `ls ci/docker/`; do
  31. run $d
  32. done
  33. else
  34. run $1
  35. fi