diff --git a/.circleci/config.yml b/.circleci/config.yml index 5fe09fbb349..d59e4984454 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -182,7 +182,7 @@ jobs: paths: - dist/grafana* - build-docker: + grafana-docker-master: docker: - image: docker:stable-git steps: @@ -191,9 +191,8 @@ jobs: at: . - setup_remote_docker - run: docker info - - run: echo $GRAFANA_VERSION - run: cp dist/grafana-latest.linux-x64.tar.gz packaging/docker - - run: cd packaging/docker && ./build.sh ${GRAFANA_VERSION} + - run: cd packaging/docker && ./build-deploy.sh "grafana-docker-${CIRCLE_SHA1}" build-enterprise: docker: @@ -362,7 +361,7 @@ workflows: filters: *filter-not-release-or-master - postgres-integration-test: filters: *filter-not-release-or-master - - build-docker: + - grafana-docker-master: requires: - build - test-backend diff --git a/packaging/docker/build-deploy.sh b/packaging/docker/build-deploy.sh new file mode 100755 index 00000000000..923b1b8f3c0 --- /dev/null +++ b/packaging/docker/build-deploy.sh @@ -0,0 +1,13 @@ +#!/bin/sh + +_grafana_version=$1 +./build.sh "$_grafana_version" +docker login -u "$DOCKER_USER" -p "$DOCKER_PASS" + +#./push_to_docker_hub.sh "$_grafana_version" +echo "Would have deployed $_grafana_version" + +if echo "$_grafana_version" | grep -q "^master-"; then + apk add --no-cache curl + ./deploy_to_k8s.sh "grafana/grafana-dev:$_grafana_version" +fi diff --git a/packaging/docker/build.sh b/packaging/docker/build.sh index df0a809c754..579d65eebb3 100755 --- a/packaging/docker/build.sh +++ b/packaging/docker/build.sh @@ -1,21 +1,28 @@ #!/bin/sh _grafana_tag=$1 -_grafana_version=$(echo ${_grafana_tag} | cut -d "v" -f 2) -_docker_repo=${2:-grafana/grafana} - -echo ${_grafana_version} - -if [ "$_grafana_version" != "" ]; then - echo "Building version ${_grafana_version}" - docker build \ - --tag "${_docker_repo}:${_grafana_version}" \ - --no-cache=true . - docker tag ${_docker_repo}:${_grafana_version} ${_docker_repo}:latest +# If the tag starts with v, treat this as a official release +if echo "$_grafana_tag" | grep -q "^v"; then + _grafana_version=$(echo "${_grafana_tag}" | cut -d "v" -f 2) + _grafana_url="https://s3-us-west-2.amazonaws.com/grafana-releases/release/grafana-${_grafana_version}.linux-amd64.tar.gz" + _docker_repo=${2:-grafana/grafana} else - echo "Building latest for master" - docker build \ - --tag "grafana/grafana:master" \ - . + _grafana_version=$_grafana_tag + _grafana_url="https://s3-us-west-2.amazonaws.com/grafana-releases/master/grafana-${_grafana_version}.linux-x64.tar.gz" + _docker_repo=${2:-grafana/grafana-dev} +fi + +echo "Building ${_docker_repo}:${_grafana_version} from ${_grafana_url}" + +docker build \ + --build-arg GRAFANA_URL="${_grafana_url}" \ + --tag "${_docker_repo}:${_grafana_version}" \ + --no-cache=true . + +# Tag as 'latest' for official release; otherwise tag as grafana/grafana:master +if echo "$_grafana_tag" | grep -q "^v"; then + docker tag "${_docker_repo}:${_grafana_version}" "${_docker_repo}:latest" +else + docker tag "${_docker_repo}:${_grafana_version}" "grafana/grafana:master" fi diff --git a/packaging/docker/deploy_to_k8s.sh b/packaging/docker/deploy_to_k8s.sh new file mode 100755 index 00000000000..26cf88ef688 --- /dev/null +++ b/packaging/docker/deploy_to_k8s.sh @@ -0,0 +1,6 @@ +#!/bin/sh + +curl -s --header "Content-Type: application/json" \ + --data "{\"build_parameters\": {\"CIRCLE_JOB\": \"deploy\", \"IMAGE_NAMES\": \"$1\"}}" \ + --request POST \ + https://circleci.com/api/v1.1/project/github/raintank/deployment_tools/tree/master?circle-token=$CIRCLE_TOKEN diff --git a/packaging/docker/push_to_docker_hub.sh b/packaging/docker/push_to_docker_hub.sh index 4b23996f67f..e779b04d68d 100755 --- a/packaging/docker/push_to_docker_hub.sh +++ b/packaging/docker/push_to_docker_hub.sh @@ -1,16 +1,22 @@ #!/bin/sh _grafana_tag=$1 -_grafana_version=$(echo ${_grafana_tag} | cut -d "v" -f 2) -if [ "$_grafana_version" != "" ]; then - echo "pushing grafana/grafana:${_grafana_version}" - docker push grafana/grafana:${_grafana_version} +# If the tag starts with v, treat this as a official release +if echo "$_grafana_tag" | grep -q "^v"; then + _grafana_version=$(echo "${_grafana_tag}" | cut -d "v" -f 2) + _docker_repo=${2:-grafana/grafana} +else + _grafana_version=$_grafana_tag + _docker_repo=${2:-grafana/grafana-dev} +fi - if echo "$_grafana_version" | grep -viqF beta; then - echo "pushing grafana/grafana:latest" - docker push grafana/grafana:latest - fi +echo "pushing ${_docker_repo}:${_grafana_version}" +docker push "${_docker_repo}:${_grafana_version}" + +if echo "$_grafana_tag" | grep -q "^v"; then + echo "pushing ${_docker_repo}:latest" + docker push "${_docker_repo}:latest" else echo "pushing grafana/grafana:master" docker push grafana/grafana:master diff --git a/packaging/docker/run.sh b/packaging/docker/run.sh index 44411f0f6b6..2d2318a9210 100755 --- a/packaging/docker/run.sh +++ b/packaging/docker/run.sh @@ -46,11 +46,11 @@ if [ ! -z ${GF_AWS_PROFILES+x} ]; then chmod 600 "$GF_PATHS_HOME/.aws/credentials" fi -# Convert all environment variables with names ending in _FILE into the content of -# the file that they point at and use the name without the trailing _FILE. +# Convert all environment variables with names ending in __FILE into the content of +# the file that they point at and use the name without the trailing __FILE. # This can be used to carry in Docker secrets. -for VAR_NAME in $(env | grep '^GF_[^=]\+_FILE=.\+' | sed -r "s/([^=]*)_FILE=.*/\1/g"); do - VAR_NAME_FILE="$VAR_NAME"_FILE +for VAR_NAME in $(env | grep '^GF_[^=]\+__FILE=.\+' | sed -r "s/([^=]*)__FILE=.*/\1/g"); do + VAR_NAME_FILE="$VAR_NAME"__FILE if [ "${!VAR_NAME}" ]; then echo >&2 "ERROR: Both $VAR_NAME and $VAR_NAME_FILE are set (but are exclusive)" exit 1