diff --git a/.dockerignore b/.dockerignore new file mode 100644 index 0000000..0487142 --- /dev/null +++ b/.dockerignore @@ -0,0 +1,70 @@ +# Byte-compiled / optimized / DLL files +__pycache__/ +*.py[cod] +*$py.class + +# C extensions +*.so + +# Distribution / packaging +.Python +env/ +build/ +develop-eggs/ +dist/ +downloads/ +eggs/ +.eggs/ +lib/ +lib64/ +parts/ +sdist/ +var/ +*.egg-info/ +.installed.cfg +*.egg + +# PyInstaller +# Usually these files are written by a python script from a template +# before PyInstaller builds the exe, so as to inject date/other infos into it. +*.manifest +*.spec + +# Installer logs +pip-log.txt +pip-delete-this-directory.txt + +# Unit test / coverage reports +htmlcov/ +.tox/ +.coverage +.coverage.* +.cache +nosetests.xml +coverage.xml +*,cover +.hypothesis/ + +# Translations +*.mo +*.pot + +# Django stuff: +*.log + +# Sphinx documentation +docs/_build/ + +# PyBuilder +target/ + +#Ipython Notebook +.ipynb_checkpoints + +.env +venv/ +.python-version +cleanup.sh +*_example.py +.idea +README.txt diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 0000000..8f5a44f --- /dev/null +++ b/Dockerfile @@ -0,0 +1,40 @@ +FROM ubuntu:xenial +ENV PYTHON_VERSIONS='python2.6 python2.7 python3.4 python3.5 python3.6' \ + OAI_SPEC_URL="https://raw.githubusercontent.com/sendgrid/sendgrid-oai/master/oai_stoplight.json" + +# install testing versions of python, including old versions, from deadsnakes +RUN set -x \ + && apt-get update \ + && apt-get install -y --no-install-recommends software-properties-common \ + && apt-add-repository -y ppa:fkrull/deadsnakes \ + && apt-get update \ + && apt-get install -y --no-install-recommends $PYTHON_VERSIONS \ + git \ + curl \ + && apt-get purge -y --auto-remove software-properties-common \ + && rm -rf /var/lib/apt/lists/* + +WORKDIR /root + +# install Prism +ADD https://raw.githubusercontent.com/stoplightio/prism/master/install.sh install.sh +RUN chmod +x ./install.sh && \ + ./install.sh && \ + rm ./install.sh + +# install pip, tox +ADD https://bootstrap.pypa.io/get-pip.py get-pip.py +RUN python2.7 get-pip.py && \ + pip install tox && \ + rm get-pip.py + +# set up default sendgrid env +WORKDIR /root/sources +RUN git clone https://github.com/sendgrid/sendgrid-python.git && \ + git clone https://github.com/sendgrid/python-http-client.git +WORKDIR /root +RUN ln -s /root/sources/sendgrid-python/sendgrid && \ + ln -s /root/sources/python-http-client/python_http_client + +COPY . . +CMD sh run.sh diff --git a/README.md b/README.md index ba9c9a6..2376003 100644 --- a/README.md +++ b/README.md @@ -19,6 +19,7 @@ If you are looking for the SendGrid API client library, please see [this repo](h * [Usage](#usage) * [Roadmap](#roadmap) * [How to Contribute](#contribute) +- [Local set up](#local_setup) * [Troubleshooting](#troubleshooting) * [Announcements](#announcements) * [Thanks](#thanks) @@ -100,6 +101,18 @@ Quick links: - [Sign the CLA to Create a Pull Request](https://github.com/sendgrid/python-http-client/blob/master/CONTRIBUTING.md#cla) - [Improvements to the Codebase](https://github.com/sendgrid/python-http-client/blob/master/CONTRIBUTING.md#improvements-to-the-codebase) + + +# Local Setup of the project + +The simplest local development workflow is by using docker. + +> Steps + +1. Install Docker +2. Run `docker-compose build` (This builds the container) +3. Run `docker-compose up` (This runs tests by default) + # Troubleshooting diff --git a/docker-compose.yml b/docker-compose.yml new file mode 100644 index 0000000..1b05a3c --- /dev/null +++ b/docker-compose.yml @@ -0,0 +1,6 @@ +version: '3' +services: + app: + build: . + volumes: + - .:/root diff --git a/run.sh b/run.sh new file mode 100644 index 0000000..4c45a10 --- /dev/null +++ b/run.sh @@ -0,0 +1,3 @@ +#!/bin/sh + +python2.7 -m unittest discover -v