build.sh 2.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273
  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 "ubuntu:latest" "grafana-latest.linux-x64.tar.gz" "${_docker_repo}:${_grafana_version}"
  53. if [ $BUILD_FAST = "0" ]; then
  54. docker_build "arm32v7/ubuntu:latest" "grafana-latest.linux-armv7.tar.gz" "${_docker_repo}-arm32v7-linux:${_grafana_version}"
  55. docker_build "arm64v8/ubuntu:latest" "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. else
  61. docker_tag_all "${_docker_repo}" "master"
  62. docker tag "${_docker_repo}:${_grafana_version}" "grafana/grafana-dev:${_grafana_version}"
  63. fi