Skip to content

Commit

Permalink
Update Circle CI for our workflow
Browse files Browse the repository at this point in the history
- Use new master / rc release release strategy (getredash#440)
- Migrate Circle CI 2.0 (getredash#488, getredash#502)
  • Loading branch information
robotblake authored and jezdez committed Aug 16, 2018
1 parent f3c2e44 commit 2d189d5
Show file tree
Hide file tree
Showing 4 changed files with 165 additions and 38 deletions.
134 changes: 134 additions & 0 deletions .circleci/config.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,134 @@
# These environment variables must be set in CircleCI UI
#
# DOCKERHUB_REPO - docker hub repo, format: <username>/<repo>
# DOCKER_USER
# DOCKER_PASS
#

version: 2
jobs:
build:
docker:
- image: docker:18.02.0-ce
working_directory: ~/mozilla/redash
steps:
- checkout
- setup_remote_docker
- run:
command: docker build -t app:build .
no_output_timeout: 20m

test:
docker:
- image: circleci/node:6.14.3-stretch
- image: redis
- image: circleci/postgres:10-alpine-postgis
working_directory: ~/mozilla/redash
steps:
- checkout
- run: mkdir -p /tmp/test-reports/pytest
- run: sudo apt-get update
- run: sudo apt-get install -y python-pip python-dev
- run: sudo apt-get install -y redis-tools redis-server
- run: sudo pip install --upgrade setuptools
- run: sudo pip install -r requirements_dev.txt
- run: sudo pip install -r requirements.txt
- run: sudo npm install
- run: sudo npm run build
- run:
command: pytest --junitxml=/tmp/test-reports/pytest/junit.xml tests/
environment:
REDASH_REDIS_URL: redis://localhost:6379/0
REDASH_DATABASE_URL: "postgresql://postgres@localhost/postgres"
- store_artifacts:
path: /tmp/test-reports/
destination: tr1
- store_test_results:
path: /tmp/test-reports/

deploy-master:
machine:
enable: true
working_directory: ~/mozilla/redash
steps:
- checkout
- run:
name: Deploy to Dockerhub
no_output_timeout: 20m
command: |
./bin/deploy "master"
deploy-rc:
machine:
enable: true
working_directory: ~/mozilla/redash
steps:
- checkout
- run:
name: Deploy to Dockerhub
no_output_timeout: 20m
command: |
./bin/deploy "rc"
deploy-milestone:
machine:
enable: true
working_directory: ~/mozilla/redash
steps:
- checkout
- run:
name: Deploy milestone to Dockerhub
no_output_timeout: 20m
command: |
./bin/deploy "$CIRCLE_TAG"
./bin/alias "$CIRCLE_TAG" "latest"
workflows:
version: 2
build-test-deploy:
jobs:
- build:
filters:
tags:
only: /.*/
branches:
ignore:
- gh-pages

- test:
filters:
tags:
only: /.*/
branches:
ignore:
- gh-pages

- deploy-master:
requires:
- test
filters:
tags:
only: /.*/
branches:
only:
- master

- deploy-rc:
requires:
- test
filters:
tags:
only: /.*/
branches:
only:
- release

- deploy-milestone:
requires:
- test
filters:
tags:
only: /^m[0-9]+(\.[0-9]+)?$/
branches:
ignore: /.*/
12 changes: 12 additions & 0 deletions bin/alias
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
#!/bin/bash

set -eo pipefail

[ ! -z $DOCKERHUB_REPO ] && [ $# -eq 2 ]

VERSION="$1"
ALIAS="$2"

docker login -u $DOCKER_USER -p $DOCKER_PASS
docker tag $DOCKERHUB_REPO:$VERSION $DOCKERHUB_REPO:$ALIAS
docker push $DOCKERHUB_REPO:$ALIAS
19 changes: 19 additions & 0 deletions bin/deploy
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
#!/bin/bash

set -eo pipefail

[ ! -z $DOCKERHUB_REPO ] && [ $# -eq 1 ]

VERSION="$1"

printf '{"commit":"%s","version":"%s","source":"https://github.com/%s/%s","build":"%s"}\n' \
"$CIRCLE_SHA1" \
"$VERSION" \
"$CIRCLE_PROJECT_USERNAME" \
"$CIRCLE_PROJECT_REPONAME" \
"$CIRCLE_BUILD_URL" \
> version.json

docker login -u $DOCKER_USER -p $DOCKER_PASS
docker build -t $DOCKERHUB_REPO:$VERSION .
docker push $DOCKERHUB_REPO:$VERSION
38 changes: 0 additions & 38 deletions circle.yml

This file was deleted.

0 comments on commit 2d189d5

Please sign in to comment.