diff --git a/.circleci/config.yml b/.circleci/config.yml new file mode 100644 index 0000000000..6a1549a09a --- /dev/null +++ b/.circleci/config.yml @@ -0,0 +1,137 @@ +# These environment variables must be set in CircleCI UI +# +# DOCKERHUB_REPO - docker hub repo, format: / +# 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: + docker: + - image: docker:18.02.0-ce + working_directory: ~/mozilla/redash + steps: + - checkout + - setup_remote_docker + - run: + name: Deploy to Dockerhub + no_output_timeout: 20m + command: | + ./bin/deploy "master" + + deploy-rc: + docker: + - image: docker:18.02.0-ce + working_directory: ~/mozilla/redash + steps: + - checkout + - setup_remote_docker + - run: + name: Deploy to Dockerhub + no_output_timeout: 20m + command: | + ./bin/deploy "rc" + + deploy-milestone: + docker: + - image: docker:18.02.0-ce + working_directory: ~/mozilla/redash + steps: + - checkout + - setup_remote_docker + - 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: /.*/ diff --git a/bin/alias b/bin/alias index 50969046fd..1d4a32a19b 100755 --- a/bin/alias +++ b/bin/alias @@ -7,6 +7,6 @@ set -eo pipefail VERSION="$1" ALIAS="$2" -docker login -e $DOCKER_EMAIL -u $DOCKER_USER -p $DOCKER_PASS +docker login -u $DOCKER_USER -p $DOCKER_PASS docker tag $DOCKERHUB_REPO:$VERSION $DOCKERHUB_REPO:$ALIAS docker push $DOCKERHUB_REPO:$ALIAS diff --git a/bin/deploy b/bin/deploy index bccc6cb999..2bdb54ed4d 100755 --- a/bin/deploy +++ b/bin/deploy @@ -14,6 +14,6 @@ printf '{"commit":"%s","version":"%s","source":"https://github.com/%s/%s","build "$CIRCLE_BUILD_URL" \ > version.json -docker login -e $DOCKER_EMAIL -u $DOCKER_USER -p $DOCKER_PASS +docker login -u $DOCKER_USER -p $DOCKER_PASS docker build -t $DOCKERHUB_REPO:$VERSION . docker push $DOCKERHUB_REPO:$VERSION diff --git a/circle.yml b/circle.yml deleted file mode 100644 index ea21f094fd..0000000000 --- a/circle.yml +++ /dev/null @@ -1,40 +0,0 @@ -machine: - services: - - docker - - redis - node: - version: - 6.9.1 -dependencies: - override: - - pip install --upgrade setuptools - - pip install -r requirements_dev.txt - - pip install -r requirements.txt - - npm install - - npm run build - cache_directories: - - node_modules/ -test: - override: - - pytest --junitxml=$CIRCLE_TEST_REPORTS/junit.xml tests/ -deployment: - master: - branch: master - owner: mozilla - commands: - - ./bin/deploy "master" - release: - branch: release - owner: mozilla - commands: - - ./bin/deploy "rc" - milestone: - tag: /^m[0-9]+(\.[0-9]+)?$/ - owner: mozilla - commands: - - ./bin/deploy "$CIRCLE_TAG" - - ./bin/alias "$CIRCLE_TAG" "latest" -general: - branches: - ignore: - - gh-pages