build.sh 2.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475
  1. #!/bin/sh
  2. BUILD_FAST=0
  3. while [ "$1" != "" ]; do
  4. case "$1" in
  5. "--fast")
  6. BUILD_FAST=1
  7. echo "Fast build enabled"
  8. shift
  9. ;;
  10. * )
  11. # unknown param causes args to be passed through to $@
  12. break
  13. ;;
  14. esac
  15. done
  16. _grafana_tag=${1:-}
  17. _docker_repo=${2:-grafana/grafana}
  18. # If the tag starts with v, treat this as a official release
  19. if echo "$_grafana_tag" | grep -q "^v"; then
  20. _grafana_version=$(echo "${_grafana_tag}" | cut -d "v" -f 2)
  21. else
  22. _grafana_version=$_grafana_tag
  23. fi
  24. echo "Building ${_docker_repo}:${_grafana_version}"
  25. export DOCKER_CLI_EXPERIMENTAL=enabled
  26. # Build grafana image for a specific arch
  27. docker_build () {
  28. base_image=$1
  29. grafana_tgz=$2
  30. tag=$3
  31. docker build \
  32. --build-arg BASE_IMAGE=${base_image} \
  33. --build-arg GRAFANA_TGZ=${grafana_tgz} \
  34. --tag "${tag}" \
  35. --no-cache=true .
  36. }
  37. docker_tag_linux_amd64 () {
  38. repo=$1
  39. tag=$2
  40. docker tag "${_docker_repo}:${_grafana_version}" "${repo}:${tag}"
  41. }
  42. # Tag docker images of all architectures
  43. docker_tag_all () {
  44. repo=$1
  45. tag=$2
  46. docker_tag_linux_amd64 $1 $2
  47. if [ $BUILD_FAST = "0" ]; then
  48. docker tag "${_docker_repo}-arm32v7-linux:${_grafana_version}" "${repo}-arm32v7-linux:${tag}"
  49. docker tag "${_docker_repo}-arm64v8-linux:${_grafana_version}" "${repo}-arm64v8-linux:${tag}"
  50. fi
  51. }
  52. docker_build "alpine:3.10" "grafana-latest.linux-x64.tar.gz" "${_docker_repo}:${_grafana_version}"
  53. if [ $BUILD_FAST = "0" ]; then
  54. docker_build "arm32v7/alpine:3.10" "grafana-latest.linux-armv7.tar.gz" "${_docker_repo}-arm32v7-linux:${_grafana_version}"
  55. docker_build "arm64v8/alpine:3.10" "grafana-latest.linux-arm64.tar.gz" "${_docker_repo}-arm64v8-linux:${_grafana_version}"
  56. fi
  57. # Tag as 'latest' for official release; otherwise tag as grafana/grafana:master
  58. if echo "$_grafana_tag" | grep -q "^v"; then
  59. docker_tag_all "${_docker_repo}" "latest"
  60. # Create the expected tag for running the end to end tests successfully
  61. docker tag "${_docker_repo}:${_grafana_version}" "grafana/grafana-dev:${_grafana_tag}"
  62. else
  63. docker_tag_all "${_docker_repo}" "master"
  64. docker tag "${_docker_repo}:${_grafana_version}" "grafana/grafana-dev:${_grafana_version}"
  65. fi