Skip to main content

No project description provided

Project description

Patterns_for_Continuous_Integration_Docker_Travis_CI_2_DEV

Build Status PyPI version Coverage Status

Conceptual Schema

The “Docker repo” pattern: create two separate Git repositories: one for Docker release and another for software development. This keeps the Docker-specific code isolated from the actual software. Developers can continue working on the source software as usual, while the production Docker image is developed separately

This repository is an example of the Git repository for software development.

Specifically, we assume that the team uses some different branches and a certain point a pull-request for merge the master branch is necessary. After committing the master branch:

  • before the commit, it is necessary to modify the version number in setup.py so that a new release will be created on the package repository (PyPI in our case)
  • on Travis CI a new job is created and py.test tests are performed measuring code coverage of Python code.
  • if tests are successful
    • code coverage stats are published on coveralls.io through coveralls
    • a new release will be created on the package repository (PyPI in our case)
    • two new docker development images will be released, e.g. e59cbe8-develop (image for last commit on master branch) and develop (the official develop image of the project), on the Docker Registry, i.e. Docker Hub in our case

Dockerfile

FROM python:3.6

COPY . /myproject
WORKDIR /myproject
RUN pip install -e .

CMD ["myproject", "run"]

.travis.yml

sudo: required 
services:
- docker
env:
  global:
    - IMAGE_NAME=gtesei/hello_docker_2
    - REGISTRY_USER=gtesei
    - secure: H8o2BrmikY0e9Gzj1t/Ca1H+hblEv9GC6Qd9MQoN/zxXx0MtiZw3eyCuBO4rpYvX80oeS/e9QM1b4v8OUCsRqGd1nwz4QhRQIRyzh03+n+Sp84qnTqAZvDNbPl0WYDSJyRYFij7SpVP37encJX8ioPaE+YarNn1AGUAVthFOvWhEEeuDGV0lDOXw0j+LsXr1hf821dqvlFLBXPE0dVB6LZD2QEde4BaCQaM+FgBRrcz/bkLMBByviUxdCevJsHSOnhc4rZCbBZ5k5oByJsXVMX/S+SFwP5N4ljkF9rjtIA8fMOlGjk8Z8kXSk3BeLctXGSrZBZBsXG2e89AfBeXFrK91tYdLJROXWdd6MN+U9r+FSIblHqB51zE2zFUpXK9pijUeJLNC2eacdNMRTvxA+tudEIuGkIKkgA4aGw8knoroWXI8ByLtVJA2mXQvlMqiN+pVQt36rwx1Tz0mlw2QOsI713f/JhSoJQNX7flRJrcs2FroCCmDrnpXiE+FN+svjLKz7b07lzw8H78PGfj11YPV8LGDHMRqf0/fu55157QaDgoDKekBLuwXYGT+q5pOu91r+9ywIUo5V8WXel7VM1iUqu3Kjq8DLpwiTErENwEEoq8x5uATXAHsnoXEpBFSj6RsU1BdambMkoz7bbOgviVwTDTGB4jgX7iYdlEYdzA=
language: python
python:
    - "3.6"
cache: pip
before_install:
    - sudo apt-get update
install: 
    - pip install -r requirements-dev.txt
    - pip install pytest pytest-cov
    - pip install coveralls
script: py.test --doctest-modules --cov 
after_success:
    - coveralls
deploy:
  provider: pypi
  user: gtesei
  distributions: sdist bdist_wheel
  password:
    secure: As9TKWe41QcMXIZ0lKZ7uYblvMbOrWklUjbtZo16juLvDmQDd2dqseEv+eBuI6ur6mov8P0+8MuyOcnDcmeUT0FXTYnjw2BHQC8diH4YvNfupRv6dJDspy3UfI8koQzTJqRfoz30UoCWKS4uU9RYP3uRU6VDIabmECAtKdi3eROeeb88W9LlWMXeuQPiNZlyWFQnHrekRWfzvuZtsxkj5eRtkfUsXTnChbBru0yulv9xIJPcigvvBE/I2DF6c1KFQbtXQ2h4a1FYJ9/NbbHthtvWWSvotJK0825mhiIiCjQwy+GmsiMf5ofnVs7Fe3E0bJLdX8npPBy1BGZnVN4vd+j74Vl/Dtziy5uqFe9bPgYZk3jOBcfnDWrpAdh1Qmt1D4ZBqD0afShSyyMi0N2+B+R58bMuWj3dzgc4zZp0NjCS/S8Qt6c9Q/bYF58hA9rGKGydoKcfmdC80SUPgbYa3UKnEJo+oxtuhZlNB7A+KqccQmfPHgq/Ra4BR3ImUokhW68GVqCB1378ynNAML4vdhTHWBVRnsG+gvk1slrRsH1yOqBQo5IWMkWO8SD2OGp56u7P96m9Oh1yXhPxfCFp/9K/5IWSJ3DsA+TjieUPJW7jbMamw/CQvIOpv+VEfkorh9Oxijf22qt88/dN5OZ6Az2IAxQwBZI7D9BISnibj/w=
  on:
    branch: master
after_deploy: 
  - docker pull "${IMAGE_NAME}:develop" || true
  - docker build --pull --cache-from "${IMAGE_NAME}:develop" --tag "$IMAGE_NAME" .
  - docker login -u "$REGISTRY_USER" -p "$REGISTRY_PASS"
  - git_sha="$(git rev-parse --short HEAD)"
  - docker tag "$IMAGE_NAME" "${IMAGE_NAME}:develop"
  - docker tag "$IMAGE_NAME" "${IMAGE_NAME}:${git_sha}-develop"
  - docker push "${IMAGE_NAME}:develop" && docker push "${IMAGE_NAME}:${git_sha}-develop"

Travis CI

Travis CI

Coveralls

Coveralls

Package repository [PyPI]

PyPI

Docker Registry [Docker Hub]

Docker Hub

Useful links

Ruby Installer for Windows

To install Travis

gem install travis

Credits

Coding Tips: Patterns for Continuous Integration with Docker on Travis CI - Part 2 of 3: The “Docker repo” pattern

Defining encrypted variables in .travis.yml

Google Cloud | Continuous Delivery with Travis CI

Continuous Integration. CircleCI vs Travis CI vs Jenkins

Continuous Integration with Jenkins and Docker

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

python-dev-docker-project-0.3.9.dev0.tar.gz (5.2 kB view details)

Uploaded Source

Built Distribution

python_dev_docker_project-0.3.9.dev0-py2.py3-none-any.whl (7.4 kB view details)

Uploaded Python 2 Python 3

File details

Details for the file python-dev-docker-project-0.3.9.dev0.tar.gz.

File metadata

  • Download URL: python-dev-docker-project-0.3.9.dev0.tar.gz
  • Upload date:
  • Size: 5.2 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/1.12.1 pkginfo/1.4.2 requests/2.19.1 setuptools/40.4.3 requests-toolbelt/0.8.0 tqdm/4.26.0 CPython/3.6.3

File hashes

Hashes for python-dev-docker-project-0.3.9.dev0.tar.gz
Algorithm Hash digest
SHA256 a4ee136b32a59c15d4400f2c95d394323f201de03979e14464f1d370092018f7
MD5 4f819b262c9e8af726e7c9b632a82f6e
BLAKE2b-256 6d7c3f22541cbb1c57d408c028e221eefc50caa1cd724fc51340945548c4cd4f

See more details on using hashes here.

File details

Details for the file python_dev_docker_project-0.3.9.dev0-py2.py3-none-any.whl.

File metadata

  • Download URL: python_dev_docker_project-0.3.9.dev0-py2.py3-none-any.whl
  • Upload date:
  • Size: 7.4 kB
  • Tags: Python 2, Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/1.12.1 pkginfo/1.4.2 requests/2.19.1 setuptools/40.4.3 requests-toolbelt/0.8.0 tqdm/4.26.0 CPython/3.6.3

File hashes

Hashes for python_dev_docker_project-0.3.9.dev0-py2.py3-none-any.whl
Algorithm Hash digest
SHA256 51b3766fe92f104cb577c86c38735fb0c5f0eee36c80c745444a1a0a158379e4
MD5 270c9f6365983b9e1f76506c753603b5
BLAKE2b-256 f389cf571ac2d642163e30cf038c487e2e9cf6f4c629d3b21f571255a0d0282d

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page