112 lines
3.5 KiB
YAML
112 lines
3.5 KiB
YAML
version: 2.1
|
|
commands:
|
|
restore_cached_venv:
|
|
description: "Restores a cached venv"
|
|
parameters:
|
|
reqs_checksum:
|
|
type: string
|
|
default: "1234"
|
|
venv_name:
|
|
type: string
|
|
default: "default-name"
|
|
steps:
|
|
- restore_cache:
|
|
keys:
|
|
- << parameters.venv_name >>-venv-<< parameters.reqs_checksum >>
|
|
# fallback to using the latest cache if no exact match is found
|
|
- << parameters.venv_name >>-venv-
|
|
save_cached_venv:
|
|
description: "Saves a venv into a cache"
|
|
parameters:
|
|
reqs_checksum:
|
|
type: string
|
|
default: "1234"
|
|
venv_path:
|
|
type: string
|
|
default: "venv"
|
|
venv_name:
|
|
type: string
|
|
default: "default-name"
|
|
steps:
|
|
- save_cache:
|
|
key: << parameters.venv_name >>-venv-<< parameters.reqs_checksum >>
|
|
paths: << parameters.venv_path >>
|
|
jobs:
|
|
checkout_specs:
|
|
docker:
|
|
- image: circleci/python:3.6
|
|
working_directory: ~/specs-repo
|
|
steps:
|
|
# Restore git repo at point close to target branch/revision, to speed up checkout
|
|
- restore_cache:
|
|
keys:
|
|
- v1-specs-repo-{{ .Branch }}-{{ .Revision }}
|
|
- v1-specs-repo-{{ .Branch }}-
|
|
- v1-specs-repo-
|
|
- checkout
|
|
- run:
|
|
name: Clean up git repo to reduce cache size
|
|
command: git gc
|
|
# Save the git checkout as a cache, to make cloning next time faster.
|
|
- save_cache:
|
|
key: v1-specs-repo-{{ .Branch }}-{{ .Revision }}
|
|
paths:
|
|
- ~/specs-repo
|
|
install_test:
|
|
docker:
|
|
- image: circleci/python:3.6
|
|
working_directory: ~/specs-repo
|
|
steps:
|
|
- restore_cache:
|
|
key: v1-specs-repo-{{ .Branch }}-{{ .Revision }}
|
|
- restore_cached_venv:
|
|
venv_name: v1-pyspec
|
|
reqs_checksum: '{{ checksum "test_libs/pyspec/requirements.txt" }}-{{ checksum "test_libs/pyspec/requirements-testing.txt" }}'
|
|
- run:
|
|
name: Install pyspec requirements
|
|
command: make install_test
|
|
- save_cached_venv:
|
|
venv_name: v1-pyspec
|
|
reqs_checksum: '{{ checksum "test_libs/pyspec/requirements.txt" }}-{{ checksum "test_libs/pyspec/requirements-testing.txt" }}'
|
|
venv_path: ./test_libs/pyspec/venv
|
|
test:
|
|
docker:
|
|
- image: circleci/python:3.6
|
|
working_directory: ~/specs-repo
|
|
steps:
|
|
- restore_cache:
|
|
key: v1-specs-repo-{{ .Branch }}-{{ .Revision }}
|
|
- restore_cached_venv:
|
|
venv_name: v1-pyspec
|
|
reqs_checksum: '{{ checksum "test_libs/pyspec/requirements.txt" }}-{{ checksum "test_libs/pyspec/requirements-testing.txt" }}'
|
|
- run:
|
|
name: Run py-tests
|
|
command: make citest
|
|
- store_test_results:
|
|
path: test_libs/pyspec/test-reports
|
|
lint:
|
|
docker:
|
|
- image: circleci/python:3.6
|
|
working_directory: ~/specs-repo
|
|
steps:
|
|
- restore_cache:
|
|
key: v1-specs-repo-{{ .Branch }}-{{ .Revision }}
|
|
- restore_cached_venv:
|
|
venv_name: v1-pyspec
|
|
reqs_checksum: '{{ checksum "test_libs/pyspec/requirements.txt" }}-{{ checksum "test_libs/pyspec/requirements-testing.txt" }}'
|
|
- run:
|
|
name: Run linter
|
|
command: make install_lint && make pyspec && make lint
|
|
workflows:
|
|
version: 2.1
|
|
test_spec:
|
|
jobs:
|
|
- checkout_specs
|
|
- lint
|
|
- install_test:
|
|
requires:
|
|
- checkout_specs
|
|
- test:
|
|
requires:
|
|
- install_test
|