فهرست منبع

build: crosscompilation for nightlies and releases.

Leonard Gram 7 سال پیش
والد
کامیت
7b1e41abc6
4فایلهای تغییر یافته به همراه186 افزوده شده و 61 حذف شده
  1. 98 14
      .circleci/config.yml
  2. 87 0
      scripts/build/build-all.sh
  3. 0 46
      scripts/build/build.sh
  4. 1 1
      scripts/build/download-phantomjs.sh

+ 98 - 14
.circleci/config.yml

@@ -69,6 +69,36 @@ jobs:
           command: './scripts/circle-test-backend.sh'
 
   build:
+    docker:
+     - image: grafana/build-container:crosscompile
+    working_directory: /go/src/github.com/grafana/grafana
+    steps:
+      - checkout
+      - run:
+          name: prepare build tools
+          command: '/tmp/bootstrap.sh'
+      - run:
+          name: build and package grafana
+          command: './scripts/build/build.sh'
+      - run:
+          name: sign packages
+          command: './scripts/build/sign_packages.sh'
+      - run:
+          name: sha-sum packages
+          command: 'go run build.go sha-dist'
+      - run:
+          name: Build Grafana.com publisher
+          command: 'go build -o scripts/publish scripts/build/publish.go'
+      - persist_to_workspace:
+          root: .
+          paths:
+            - dist/grafana*
+            - scripts/*.sh
+            - scripts/publish
+      - store_artifacts:
+          path: dist
+
+  build-all:
     docker:
      - image: grafana/build-container:crosscompile
     working_directory: /go/src/github.com/grafana/grafana
@@ -88,7 +118,7 @@ jobs:
             - /tmp/phantomjs
       - run:
           name: build and package grafana
-          command: './scripts/build/build.sh'
+          command: './scripts/build/build-all.sh'
       - run:
           name: sign packages
           command: './scripts/build/sign_packages.sh'
@@ -168,45 +198,99 @@ workflows:
   version: 2
   test-and-build:
     jobs:
-      - codespell:
+      - build:
           filters:
             tags:
-              only: /.*/
-      - gometalinter:
+              ignore: /^v[0-9]+(\.[0-9]+){2}(-.+|[^-.]*)$/
+      - codespell:
           filters:
             tags:
-              only: /.*/
-      - build:
+              ignore: /^v[0-9]+(\.[0-9]+){2}(-.+|[^-.]*)$/
+      - gometalinter:
           filters:
             tags:
-              only: /.*/
+              ignore: /^v[0-9]+(\.[0-9]+){2}(-.+|[^-.]*)$/
       - test-frontend:
           filters:
             tags:
-              only: /.*/
+              ignore: /^v[0-9]+(\.[0-9]+){2}(-.+|[^-.]*)$/
       - test-backend:
           filters:
             tags:
-              only: /.*/
+              ignore: /^v[0-9]+(\.[0-9]+){2}(-.+|[^-.]*)$/
       - deploy-master:
           requires:
             - test-backend
             - test-frontend
             - build
+            - codespell
+            - gometalinter
           filters:
             branches:
               only: master
+  release:
+    jobs:
+      - build-all:
+          filters:
+            branches:
+              ignore: /.*/
+            tags:
+              only: /^v[0-9]+(\.[0-9]+){2}(-.+|[^-.]*)$/
+      - codespell:
+          filters:
+            branches:
+              ignore: /.*/
+            tags:
+              only: /^v[0-9]+(\.[0-9]+){2}(-.+|[^-.]*)$/
+      - gometalinter:
+          filters:
+            branches:
+              ignore: /.*/
+            tags:
+              only: /^v[0-9]+(\.[0-9]+){2}(-.+|[^-.]*)$/
+      - test-frontend:
+          filters:
+            branches:
+              ignore: /.*/
+            tags:
+              only: /^v[0-9]+(\.[0-9]+){2}(-.+|[^-.]*)$/
+      - test-backend:
+          filters:
+            branches:
+              ignore: /.*/
+            tags:
+              only: /^v[0-9]+(\.[0-9]+){2}(-.+|[^-.]*)$/
       - deploy-release:
           requires:
+            - build-all
             - test-backend
             - test-frontend
-            - build
+            - codespell
+            - gometalinter
           filters:
             branches:
               ignore: /.*/
             tags:
               only: /^v[0-9]+(\.[0-9]+){2}(-.+|[^-.]*)$/
-      # - build-enterprise:
-      #     filters:
-      #       tags:
-      #         only: /.*/
+  nightly-master:
+    triggers:
+      - schedule:
+          cron: "0 0 * * *"
+          filters:
+            branches:
+              only:
+                - master
+                - crosscompile
+    jobs:
+      - build-all
+      - codespell
+      - gometalinter
+      - test-frontend
+      - test-backend
+      - deploy-master:
+          requires:
+            - build-all
+            - codespell
+            - gometalinter
+            - test-frontend
+            - test-backend

+ 87 - 0
scripts/build/build-all.sh

@@ -0,0 +1,87 @@
+#!/bin/bash
+
+#
+#   This script is executed from within the container.
+#
+
+CCARMV7=arm-linux-gnueabihf-gcc
+CCARM64=aarch64-linux-gnu-gcc
+CCOSX64=/tmp/osxcross/target/bin/o64-clang
+CCWIN64=x86_64-w64-mingw32-gcc
+CCX64=/tmp/x86_64-centos6-linux-gnu/bin/x86_64-centos6-linux-gnu-gcc
+
+GOPATH=/go
+REPO_PATH=$GOPATH/src/github.com/grafana/grafana
+
+cd /go/src/github.com/grafana/grafana
+echo "current dir: $(pwd)"
+
+if [ "$CIRCLE_TAG" != "" ]; then
+  echo "Building releases from tag $CIRCLE_TAG"
+  go run build.go -goarch armv7 -cc ${CCARMV7} -includeBuildNumber=false build
+  go run build.go -goarch arm64 -cc ${CCARM64} -includeBuildNumber=false build
+  go run build.go -goos darwin -cc ${CCOSX64} -includeBuildNumber=false build
+  go run build.go -goos windows -cc ${CCWIN64} -includeBuildNumber=false build
+  CC=${CCX64} go run build.go -includeBuildNumber=false build
+else
+  echo "Building incremental build for $CIRCLE_BRANCH"
+  go run build.go -goarch armv7 -cc ${CCARMV7} -buildNumber=${CIRCLE_BUILD_NUM} build
+  go run build.go -goarch arm64 -cc ${CCARM64} -buildNumber=${CIRCLE_BUILD_NUM} build
+  go run build.go -goos darwin -cc ${CCOSX64} -buildNumber=${CIRCLE_BUILD_NUM} build
+  go run build.go -goos windows -cc ${CCWIN64} -buildNumber=${CIRCLE_BUILD_NUM} build
+  CC=${CCX64} go run build.go -buildNumber=${CIRCLE_BUILD_NUM} build
+fi
+
+yarn install --pure-lockfile --no-progress
+
+echo "current dir: $(pwd)"
+
+if [ -d "dist" ]; then
+  rm -rf dist
+fi
+
+if [ "$CIRCLE_TAG" != "" ]; then
+  echo "Building frontend from tag $CIRCLE_TAG"
+  go run build.go -includeBuildNumber=false build-frontend
+  echo "Packaging a release from tag $CIRCLE_TAG"
+  go run build.go -goos linux -pkg-arch amd64 -includeBuildNumber=false package-only latest
+  go run build.go -goos linux -pkg-arch armv7 -includeBuildNumber=false package-only
+  go run build.go -goos linux -pkg-arch arm64 -includeBuildNumber=false package-only
+
+  if [ -d '/tmp/phantomjs/darwin' ]; then
+    cp /tmp/phantomjs/darwin/phantomjs tools/phantomjs/phantomjs
+  else
+    echo 'PhantomJS binaries for darwin missing!'
+  fi
+  go run build.go -goos darwin -pkg-arch amd64 -includeBuildNumber=false package-only
+
+  if [ -d '/tmp/phantomjs/windows' ]; then
+      cp /tmp/phantomjs/windows/phantomjs.exe tools/phantomjs/phantomjs.exe
+      rm tools/phantomjs/phantomjs
+  else
+      echo 'PhantomJS binaries for darwin missing!'
+  fi
+  go run build.go -goos windows -pkg-arch amd64 -includeBuildNumber=false package-only
+else
+  echo "Building frontend for $CIRCLE_BRANCH"
+  go run build.go -buildNumber=${CIRCLE_BUILD_NUM} build-frontend
+  echo "Packaging incremental build for $CIRCLE_BRANCH"
+  go run build.go -goos linux -pkg-arch amd64 -buildNumber=${CIRCLE_BUILD_NUM} package-only latest
+  go run build.go -goos linux -pkg-arch armv7 -buildNumber=${CIRCLE_BUILD_NUM} package-only
+  go run build.go -goos linux -pkg-arch arm64 -buildNumber=${CIRCLE_BUILD_NUM} package-only
+
+  if [ -d '/tmp/phantomjs/darwin' ]; then
+    cp /tmp/phantomjs/darwin/phantomjs tools/phantomjs/phantomjs
+  else
+    echo 'PhantomJS binaries for darwin missing!'
+  fi
+  go run build.go -goos darwin -pkg-arch amd64 -buildNumber=${CIRCLE_BUILD_NUM} package-only
+
+  if [ -d '/tmp/phantomjs/windows' ]; then
+      cp /tmp/phantomjs/windows/phantomjs.exe tools/phantomjs/phantomjs.exe
+      rm tools/phantomjs/phantomjs
+  else
+      echo 'PhantomJS binaries for windows missing!'
+  fi
+  go run build.go -goos windows -pkg-arch amd64 -buildNumber=${CIRCLE_BUILD_NUM} package-only
+fi

+ 0 - 46
scripts/build/build.sh

@@ -4,10 +4,6 @@
 #   This script is executed from within the container.
 #
 
-CCARMV7=arm-linux-gnueabihf-gcc
-CCARM64=aarch64-linux-gnu-gcc
-CCOSX64=/tmp/osxcross/target/bin/o64-clang
-CCWIN64=x86_64-w64-mingw32-gcc
 CCX64=/tmp/x86_64-centos6-linux-gnu/bin/x86_64-centos6-linux-gnu-gcc
 
 GOPATH=/go
@@ -18,17 +14,9 @@ echo "current dir: $(pwd)"
 
 if [ "$CIRCLE_TAG" != "" ]; then
   echo "Building releases from tag $CIRCLE_TAG"
-  go run build.go -goarch armv7 -cc ${CCARMV7} -includeBuildNumber=false build
-  go run build.go -goarch arm64 -cc ${CCARM64} -includeBuildNumber=false build
-  go run build.go -goos darwin -cc ${CCOSX64} -includeBuildNumber=false build
-  go run build.go -goos windows -cc ${CCWIN64} -includeBuildNumber=false build
   CC=${CCX64} go run build.go -includeBuildNumber=false build
 else
   echo "Building incremental build for $CIRCLE_BRANCH"
-  go run build.go -goarch armv7 -cc ${CCARMV7} -buildNumber=${CIRCLE_BUILD_NUM} build
-  go run build.go -goarch arm64 -cc ${CCARM64} -buildNumber=${CIRCLE_BUILD_NUM} build
-  go run build.go -goos darwin -cc ${CCOSX64} -buildNumber=${CIRCLE_BUILD_NUM} build
-  go run build.go -goos windows -cc ${CCWIN64} -buildNumber=${CIRCLE_BUILD_NUM} build
   CC=${CCX64} go run build.go -buildNumber=${CIRCLE_BUILD_NUM} build
 fi
 
@@ -45,43 +33,9 @@ if [ "$CIRCLE_TAG" != "" ]; then
   go run build.go -includeBuildNumber=false build-frontend
   echo "Packaging a release from tag $CIRCLE_TAG"
   go run build.go -goos linux -pkg-arch amd64 -includeBuildNumber=false package-only latest
-  go run build.go -goos linux -pkg-arch armv7 -includeBuildNumber=false package-only
-  go run build.go -goos linux -pkg-arch arm64 -includeBuildNumber=false package-only
-
-  if [ -d '/tmp/phantomjs/darwin' ]; then
-    cp /tmp/phantomjs/darwin/phantomjs tools/phantomjs/phantomjs
-  else
-    echo 'PhantomJS binaries for darwin missing!'
-  fi
-  go run build.go -goos darwin -pkg-arch amd64 -includeBuildNumber=false package-only
-
-  if [ -d '/tmp/phantomjs/windows' ]; then
-      cp /tmp/phantomjs/windows/phantomjs.exe tools/phantomjs/phantomjs.exe
-      rm tools/phantomjs/phantomjs
-  else
-      echo 'PhantomJS binaries for darwin missing!'
-  fi
-  go run build.go -goos windows -pkg-arch amd64 -includeBuildNumber=false package-only
 else
   echo "Building frontend for $CIRCLE_BRANCH"
   go run build.go -buildNumber=${CIRCLE_BUILD_NUM} build-frontend
   echo "Packaging incremental build for $CIRCLE_BRANCH"
   go run build.go -goos linux -pkg-arch amd64 -buildNumber=${CIRCLE_BUILD_NUM} package-only latest
-  go run build.go -goos linux -pkg-arch armv7 -buildNumber=${CIRCLE_BUILD_NUM} package-only
-  go run build.go -goos linux -pkg-arch arm64 -buildNumber=${CIRCLE_BUILD_NUM} package-only
-
-  if [ -d '/tmp/phantomjs/darwin' ]; then
-    cp /tmp/phantomjs/darwin/phantomjs tools/phantomjs/phantomjs
-  else
-    echo 'PhantomJS binaries for darwin missing!'
-  fi
-  go run build.go -goos darwin -pkg-arch amd64 -buildNumber=${CIRCLE_BUILD_NUM} package-only
-
-  if [ -d '/tmp/phantomjs/windows' ]; then
-      cp /tmp/phantomjs/windows/phantomjs.exe tools/phantomjs/phantomjs.exe
-      rm tools/phantomjs/phantomjs
-  else
-      echo 'PhantomJS binaries for windows missing!'
-  fi
-  go run build.go -goos windows -pkg-arch amd64 -buildNumber=${CIRCLE_BUILD_NUM} package-only
 fi

+ 1 - 1
scripts/build/download-phantomjs.sh

@@ -1,7 +1,7 @@
 #!/bin/bash -e
 
 if [ ! -d '/tmp/phantomjs' ]; then
-  _version="2.1.1"
+  _version="2.1.16"
 
   curl -L https://bitbucket.org/ariya/phantomjs/downloads/phantomjs-$_version-windows.zip > /tmp/phantomjs-win.zip
   curl -L https://bitbucket.org/ariya/phantomjs/downloads/phantomjs-$_version-macosx.zip > /tmp/phantomjs-mac.zip