run.sh 1.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344
  1. #!/bin/bash
  2. set -eo pipefail
  3. dir="$(dirname "$(readlink -f "$BASH_SOURCE")")"
  4. image="$1"
  5. buildDepsImage="$image"
  6. if ! docker run --rm --entrypoint sh "$image" -c 'command -v gcc' > /dev/null; then
  7. buildDepsImage="$("$dir/../image-name.sh" librarytest/ruby-native-extension "$image")"
  8. os="$(docker run --rm --entrypoint sh "$image" -c '. /etc/os-release && echo "$ID"')"
  9. case "$os" in
  10. alpine)
  11. "$dir/../docker-build.sh" "$dir" "$buildDepsImage" <<-EOD
  12. FROM $image
  13. RUN apk add --no-cache gcc make musl-dev
  14. EOD
  15. ;;
  16. *) # must be Debian slim variants (no gcc but not Alpine)
  17. "$dir/../docker-build.sh" "$dir" "$buildDepsImage" <<-EOD
  18. FROM $image
  19. RUN set -eux; \
  20. apt-get update; \
  21. apt-get install -y --no-install-recommends gcc make libc6-dev; \
  22. rm -rf /var/lib/apt/lists/*
  23. EOD
  24. ;;
  25. esac
  26. fi
  27. docker run --interactive --rm --entrypoint sh "$buildDepsImage" -eu <<-'EOSH'
  28. if command -v jruby > /dev/null; then
  29. platform='jruby'
  30. else
  31. platform='ruby'
  32. fi
  33. gem install bcrypt \
  34. --version 3.1.16 \
  35. --platform "$platform" \
  36. --silent
  37. ruby -e 'require "bcrypt"; print "it works\n"'
  38. EOSH