diff --git a/.circleci/config.yml b/.circleci/config.yml index e4b123073a4..3bdfe2efdcb 100644 --- a/.circleci/config.yml +++ b/.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: - filters: - tags: - only: /.*/ - - gometalinter: - filters: - tags: - only: /.*/ - build: filters: tags: - only: /.*/ + ignore: /^v[0-9]+(\.[0-9]+){2}(-.+|[^-.]*)$/ + - codespell: + filters: + tags: + ignore: /^v[0-9]+(\.[0-9]+){2}(-.+|[^-.]*)$/ + - gometalinter: + filters: + tags: + 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 - - deploy-release: - requires: - - test-backend - - test-frontend - - build + release: + jobs: + - build-all: filters: branches: ignore: /.*/ tags: only: /^v[0-9]+(\.[0-9]+){2}(-.+|[^-.]*)$/ - # - build-enterprise: - # filters: - # tags: - # only: /.*/ + - 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 + - codespell + - gometalinter + filters: + branches: + ignore: /.*/ + tags: + only: /^v[0-9]+(\.[0-9]+){2}(-.+|[^-.]*)$/ + 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 diff --git a/scripts/build/build-all.sh b/scripts/build/build-all.sh new file mode 100755 index 00000000000..7c08d2c333c --- /dev/null +++ b/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 diff --git a/scripts/build/build.sh b/scripts/build/build.sh index 7c08d2c333c..cee80822cac 100755 --- a/scripts/build/build.sh +++ b/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 diff --git a/scripts/build/download-phantomjs.sh b/scripts/build/download-phantomjs.sh index e346faf8765..5738469cd2b 100755 --- a/scripts/build/download-phantomjs.sh +++ b/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