build.sh 3.1 KB

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