task-ci-cd
v1.7.2
Published
[](https://travis-ci.org/edonosotti/ci-cd-tutorial-sample-app) [](https://codeb
Readme
CD/CI Tutorial Sample Application
Description
This sample Python REST API application was written for a tutorial on implementing Continuous Integration and Delivery pipelines.
It demonstrates how to:
- Write a basic REST API using the Flask microframework
- Basic database operations and migrations using the Flask wrappers around Alembic and SQLAlchemy
- Write automated unit tests with unittest
Also:
- How to use GitHub Actions
Related article: https://medium.com/rockedscience/docker-ci-cd-pipeline-with-github-actions-6d4cd1731030
Requirements
Python 3.8Pipvirtualenv, orconda, orminiconda
The psycopg2 package does require libpq-dev and gcc.
To install them (with apt), run:
$ sudo apt-get install libpq-dev gccInstallation
With virtualenv:
$ python -m venv venv
$ source venv/bin/activate
$ pip install -r requirements.txtWith conda or miniconda:
$ conda env create -n ci-cd-tutorial-sample-app python=3.8
$ source activate ci-cd-tutorial-sample-app
$ pip install -r requirements.txtOptional: set the DATABASE_URL environment variable to a valid SQLAlchemy connection string. Otherwise, a local SQLite database will be created.
Initalize and seed the database:
$ flask db upgrade
$ python seed.pyRunning tests
Run:
$ python -m unittest discoverRunning the application
Running locally
Run the application using the built-in Flask server:
$ flask runRunning on a production server
Run the application using gunicorn:
$ pip install -r requirements-server.txt
$ gunicorn app:appTo set the listening address and port, run:
$ gunicorn app:app -b 0.0.0.0:8000Running on Docker
Run:
$ docker build -t ci-cd-tutorial-sample-app:latest .
$ docker run -d -p 8000:8000 ci-cd-tutorial-sample-app:latestDeploying to Heroku
Run:
$ heroku create
$ git push heroku master
$ heroku run flask db upgrade
$ heroku run python seed.py
$ heroku openor use the automated deploy feature:
For more information about using Python on Heroku, see these Dev Center articles:
