Skip to content
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
141 changes: 141 additions & 0 deletions .circleci/config.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,141 @@
version: 2

jobs:
build_and_test_python27:
docker:
- image: circleci/python:2.7
- image: rabbitmq:3
- image: mongo:3.4

working_directory: ~/repo

environment:
VIRTUALENV_DIR: "~/virtualenv"
# Don't install various StackStorm dependencies which are already
# installed by CI again in the various check scripts
ST2_INSTALL_DEPS: "0"

steps:
- checkout
- restore_cache:
key: v1-dependency-cache-py27-{{ checksum "requirements.txt" }}
- run:
name: Download dependencies
command: |
git clone -b master git://github.com/stackstorm-exchange/ci.git ~/ci
~/ci/.circle/dependencies
- run:
name: Run tests (Python 2.7)
command: ~/ci/.circle/test
- save_cache:
key: v1-dependency-cache-py27-{{ checksum "requirements.txt" }}
paths:
- ~/.cache/pip
- ~/.apt-cache
# NOTE: We use virtualenv files from Python 2.7 step in "deploy" job so we
# only persist paths from this job
- persist_to_workspace:
root: /
paths:
- home/circleci/ci
- home/circleci/virtualenv
- tmp/st2
- home/circleci/repo
- home/circleci/.gitconfig

# NOTE: Until we add "python_version" metadata attribute to pack.yaml and
# explicitly call which packs work with Python 3.x, Python 3.x failures are
# not considered fatal
build_and_test_python36:
docker:
- image: circleci/python:3.6
- image: rabbitmq:3
- image: mongo:3.4

working_directory: ~/repo

environment:
VIRTUALENV_DIR: "~/virtualenv"
# Don't install various StackStorm dependencies which are already
# installed by CI again in the various check scripts
ST2_INSTALL_DEPS: "0"

steps:
- checkout
- restore_cache:
key: v1-dependency-cache-py36-{{ checksum "requirements.txt" }}
- run:
name: Download dependencies
# NOTE: We don't want to use default "-e" option because this means
# step will fail immediately on one of the commands failures and we
# can't intercept the error and cause non-fatal exit in case pack
# doesn't declare support for Python 3
shell: /bin/bash
command: |
git clone -b master git://github.com/stackstorm-exchange/ci.git ~/ci
~/ci/.circle/dependencies ; ~/ci/.circle/exit_on_py3_checks $?
- run:
name: Run tests (Python 3.6)
# NOTE: We don't want to use default "-e" option because this means
# step will fail immediately on one of the commands failures and we
# can't intercept the error and cause non-fatal exit in case pack
# doesn't declare support for Python 3
shell: /bin/bash
command: ~/ci/.circle/test ; ~/ci/.circle/exit_on_py3_checks $?
- save_cache:
key: v1-dependency-cache-py36-{{ checksum "requirements.txt" }}
paths:
- ~/.cache/pip
- ~/.apt-cache

deploy:
docker:
- image: circleci/python:2.7

working_directory: ~/repo

environment:
VIRTUALENV_DIR: "~/virtualenv"

steps:
- checkout
- restore_cache:
key: v1-dependency-cache-py27-{{ checksum "requirements.txt" }}
- attach_workspace:
at: /
- run:
name: Install dependencies
command: sudo apt -y install gmic optipng
- run:
name: Update exchange.stackstorm.org
command: ~/ci/.circle/deployment

workflows:
version: 2
# Workflow which runs on each push
build_test_deploy_on_push:
jobs:
- build_and_test_python27
- build_and_test_python36
- deploy:
requires:
- build_and_test_python27
- build_and_test_python36
filters:
branches:
only: master
build_test_weekly:
jobs:
- build_and_test_python27
- build_and_test_python36
# Workflow which runs nightly - note we don't perform deploy job on nightly
# build
triggers:
# Run nightly build for the pack
- schedule:
# NOTE: We run it at 1 am UTC on every Saturday
cron: "0 1 * * 6"
filters:
branches:
only:
- master