Skip to content

Instantly share code, notes, and snippets.

@salma71
Created November 2, 2020 12:22
Show Gist options
  • Save salma71/3008ae245d7112f172cb2361ab385b2e to your computer and use it in GitHub Desktop.
Save salma71/3008ae245d7112f172cb2361ab385b2e to your computer and use it in GitHub Desktop.
version: 2
defaults: &defaults
docker:
- image: circleci/python:3.7.2
working_directory: ~/project
prepare_venv: &prepare_venv
run:
name: Create venv
command: |
python3 -m venv venv
source venv/bin/activate
pip install --upgrade pip
fetch_data: &fetch_data
run:
name: Set script permissions and fetch data
command: |
source venv/bin/activate
chmod +x ./scripts/fetch_kaggle_dataset.sh
./scripts/fetch_kaggle_dataset.sh
jobs:
test_regression_model:
<<: *defaults
steps:
- checkout
- *prepare_venv
- run:
name: Install requirements
command: |
. venv/bin/activate
pip install -r packages/regression_model/requirements.txt
- *fetch_data
- run:
name: Train model
command: |
. venv/bin/activate
PYTHONPATH=./packages/regression_model python3 packages/regression_model/regression_model/train_pipeline.py
- run:
name: Run tests
command: |
. venv/bin/activate
test_ml_api:
<<: *defaults
steps:
- checkout
- restore_cache:
keys:
- py-deps-{{ checksum "packages/ml_api/requirements.txt" }}
- run:
name: Runnning tests
command: |
python3 -m venv venv
. venv/bin/activate
pip install --upgrade pip
pip install -r packages/ml_api/requirements.txt
- save_cache:
key: py-deps-{{ checksum "packages/ml_api/requirements.txt" }}
paths:
- "/venv"
train_and_upload_regression_model:
<<: *defaults
steps:
- checkout
- *prepare_venv
- run:
name: Install requirements
command: |
. venv/bin/activate
pip install -r packages/regression_model/requirements.txt
- *fetch_data
- run:
name: Train model
command: |
. venv/bin/activate
PYTHONPATH=./packages/regression_model python3 packages/regression_model/regression_model/train_pipeline.py
- run:
name: Publish model to Gemfury
command: |
. venv/bin/activate
chmod +x ./scripts/publish_model.sh
./scripts/publish_model.sh ./packages/regression_model/
section_9_differential_tests:
<<: *defaults
steps:
- checkout
- *prepare_venv
- run:
name: Capturing previous model predictions
command: |
. venv/bin/activate
pip install -r packages/ml_api/diff_test_requirements.txt
PYTHONPATH=./packages/ml_api python3 packages/ml_api/tests/capture_model_predictions.py
- run:
name: Runnning differential tests
command: |
. venv/bin/activate
pip install -r packages/ml_api/requirements.txt
section_10_deploy_to_heroku:
<<: *defaults
steps:
- checkout
- run:
name: Deploy to Heroku
command: |
git push https://heroku:[email protected]/$HEROKU_APP_NAME.git master
echo${HEROKU_APP_NAME}
section_11_build_and_push_to_heroku_docker:
<<: *defaults
steps:
- checkout
- setup_remote_docker:
docker_layer_caching: false
- run: docker login --username=$HEROKU_EMAIL --password=$HEROKU_API_KEY registry.heroku.com
- run:
name: Setup Heroku CLI
command: |
wget -qO- https://cli-assets.heroku.com/install-ubuntu.sh | sh
- run:
name: Build and Push Image
command: |
git push https://heroku:[email protected]/$HEROKU_APP_NAME.git master
# - run:
# name: Release to Heroku
# command: |
# heroku container:release web --app $HEROKU_APP_NAME
workflows:
version: 2
test-all:
jobs:
- test_regression_model
- test_ml_api
- train_and_upload_regression_model:
requires:
- test_regression_model
- test_ml_api
filters:
branches:
only:
- master
# - section_10_deploy_to_heroku:
# requires:
# - train_and_upload_regression_model
# filters:
# branches:
# only:
# - master
- section_11_build_and_push_to_heroku_docker:
requires:
- train_and_upload_regression_model
filters:
branches:
only:
- master
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment