Created
November 2, 2020 12:22
-
-
Save salma71/3008ae245d7112f172cb2361ab385b2e to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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