build.sh 3.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142
  1. #!/bin/bash
  2. #
  3. # This script is executed from within the container.
  4. #
  5. set -e
  6. ##########
  7. CCARMV6=/opt/rpi-tools/arm-bcm2708/arm-linux-gnueabihf/bin/arm-linux-gnueabihf-gcc
  8. CCARMV7=arm-linux-gnueabihf-gcc
  9. CCARM64=aarch64-linux-gnu-gcc
  10. CCX64=/tmp/x86_64-centos6-linux-gnu/bin/x86_64-centos6-linux-gnu-gcc
  11. BUILD_FAST=0
  12. BUILD_BACKEND=1
  13. BUILD_FRONTEND=1
  14. BUILD_PACKAGE=1
  15. while [ "$1" != "" ]; do
  16. case "$1" in
  17. "--fast")
  18. BUILD_FAST=1
  19. echo "Fast build enabled"
  20. shift
  21. ;;
  22. "--backend-only")
  23. BUILD_FRONTEND=0
  24. BUILD_PACKAGE=0
  25. echo "Building only backend"
  26. shift
  27. ;;
  28. "--frontend-only")
  29. BUILD_BACKEND=0
  30. BUILD_PACKAGE=0
  31. echo "Building only frontend"
  32. shift
  33. ;;
  34. "--package-only")
  35. BUILD_BACKEND=0
  36. BUILD_FRONTEND=0
  37. echo "Building only packaging"
  38. shift
  39. ;;
  40. * )
  41. # unknown param causes args to be passed through to $@
  42. break
  43. ;;
  44. esac
  45. done
  46. # shellcheck disable=SC2124
  47. EXTRA_OPTS="$@"
  48. cd /go/src/github.com/grafana/grafana
  49. echo "current dir: $(pwd)"
  50. if [ "$CIRCLE_TAG" != "" ]; then
  51. echo "Building releases from tag $CIRCLE_TAG"
  52. OPT="-includeBuildId=false ${EXTRA_OPTS}"
  53. else
  54. echo "Building incremental build for $CIRCLE_BRANCH"
  55. OPT="-buildId=${CIRCLE_WORKFLOW_ID} ${EXTRA_OPTS}"
  56. fi
  57. echo "Build arguments: $OPT"
  58. echo "current dir: $(pwd)"
  59. function build_backend_linux_amd64() {
  60. if [ ! -d "dist" ]; then
  61. mkdir dist
  62. fi
  63. CC=${CCX64} go run build.go "${OPT}" build
  64. }
  65. function build_backend() {
  66. if [ ! -d "dist" ]; then
  67. mkdir dist
  68. fi
  69. go run build.go -goarch armv6 -cc ${CCARMV6} "${OPT}" build
  70. go run build.go -goarch armv7 -cc ${CCARMV7} "${OPT}" build
  71. go run build.go -goarch arm64 -cc ${CCARM64} "${OPT}" build
  72. build_backend_linux_amd64
  73. }
  74. function build_frontend() {
  75. if [ ! -d "dist" ]; then
  76. mkdir dist
  77. fi
  78. yarn install --pure-lockfile --no-progress
  79. echo "Building frontend"
  80. go run build.go "${OPT}" build-frontend
  81. echo "FRONTEND: finished"
  82. }
  83. function package_linux_amd64() {
  84. echo "Packaging Linux AMD64"
  85. go run build.go -goos linux -pkg-arch amd64 "${OPT}" package-only
  86. go run build.go latest
  87. echo "PACKAGE LINUX AMD64: finished"
  88. }
  89. function package_all() {
  90. echo "Packaging ALL"
  91. go run build.go -goos linux -pkg-arch armv6 "${OPT}" -skipRpm package-only
  92. go run build.go -goos linux -pkg-arch armv7 "${OPT}" package-only
  93. go run build.go -goos linux -pkg-arch arm64 "${OPT}" package-only
  94. package_linux_amd64
  95. echo "PACKAGE ALL: finished"
  96. }
  97. function package_setup() {
  98. echo "Packaging: Setup environment"
  99. if [ -d "dist" ]; then
  100. rm -rf dist
  101. fi
  102. mkdir dist
  103. go run build.go -gen-version "${OPT}" > dist/grafana.version
  104. # Load ruby, needed for packing with fpm
  105. # shellcheck disable=SC1091
  106. source /etc/profile.d/rvm.sh
  107. }
  108. if [ $BUILD_FAST = "0" ]; then
  109. build_backend
  110. build_frontend
  111. package_setup
  112. package_all
  113. else
  114. if [ $BUILD_BACKEND = "1" ]; then
  115. build_backend_linux_amd64
  116. fi
  117. if [ $BUILD_FRONTEND = "1" ]; then
  118. build_frontend
  119. fi
  120. if [ $BUILD_PACKAGE = "1" ]; then
  121. package_setup
  122. package_linux_amd64
  123. # last step
  124. #go run build.go latest
  125. fi
  126. fi