Skip to main content

Script to generate Dockerfile from .travis.yml file

  • Free software: BSD license

Installation

pip install travis2docker

Usage

travisfile2dockerfile REPO_URL BRANCH

Or with pull request

travisfile2dockerfile REPO_URL pull/##

In REPO_URL use the ssh url of github.

For more information execute:

travisfile2dockerfile –help

Example:

travisfile2dockerfile –root-path=$HOME/t2d git@github.com:Vauxoo/forecast.git 8.0

The output is:

${HOME}/t2d/script/git_github.com_Vauxoo_forecast.git/8.0/1 ${HOME}/t2d/script/git_github.com_Vauxoo_forecast.git/8.0/2

The first one is the build for env TESTS=1, the second one is for env with LINT_CHECK=1

To build image:

${HOME}/t2d/script/git_github.com_Vauxoo_forecast.git/8.0/1/10-build.sh

To create container:

${HOME}/t2d/script/git_github.com_Vauxoo_forecast.git/8.0/1/20-run.sh –entrypoint=bash

To run the test (into of container):

/entrypoint.sh

Optional tools (--build-env-args)

Some development tools are not installed by default. They are enabled with a flag passed as a build environment variable using --build-env-args, which generates an ENV <FLAG>=TRUE line in the Dockerfile. If the flag is not defined, the installation step is skipped.

Flag

Installs

VIM_INSTALL

vim + spf13-vim, vim-openerp, jedi-vim, wakatime and the pylint_odoo/eslint syntastic configuration

ZSH_INSTALL

zsh + oh-my-zsh with the odoo-shippable theme

Example enabling more than one:

travisfile2dockerfile --build-env-args VIM_INSTALL ZSH_INSTALL \
    git@github.com:Vauxoo/forecast.git 8.0

codebase-memory-deployv

The image ships with codebase-memory-deployv, a wrapper that deploys codebase-memory-mcp (code knowledge graph for AI agents) for instances following this layout.

The repository is not indexed while building the image. Run inside the container:

codebase-memory-deployv

It installs codebase-memory-mcp if it is missing, derives the project name from ${MAIN_REPO_FULL_PATH}/variables.sh (e.g. forecast_17.0), and indexes /home/odoo/instance in batches of modules. Indexing takes a few minutes on a big instance, so it is left as an explicit step for the user.

Depends

SSH key without password

Dockerfile doesn’t support a prompt to enter your password, so you need to remove it from your ssh keys.

export fname=~/.ssh/id_rsa
cp ${fname} ${fname}_with_pwd
openssl rsa -in ${fname} -out ${fname}_without_pwd
cp ${fname}_without_pwd ${fname}

Download the big image

Travis2docker uses a default image with many packages pre-installed.

docker pull vauxoo/odoo-80-image-shippable-auto

Note: You can define a custom image to use with –docker-image parameter.

For example if you want use the original image of travis you can add the following parameters:

–docker-image=quay.io/travisci/travis-python –docker-user=travis

Install docker

https://docs.docker.com/engine/installation/

Documentation

https://travis2docker.readthedocs.io/

Development

To run the all tests run:

tox

Note, to combine the coverage data from all the tox environments run:

Windows

set PYTEST_ADDOPTS=--cov-append
tox

Other

PYTEST_ADDOPTS=--cov-append tox

Release process

This project uses bump2version to manage version bumps across .bumpversion.cfg, docs/conf.py, setup.py and src/travis2docker/__init__.py.

Requirements

  • Write access to push to main and to push tags.

  • A GPG key configured for signing git tags. The CI pipeline that publishes the package to PyPI only builds from signed tags:

    git config --global user.signingkey <YOUR_GPG_KEY_ID>
  • bump2version installed:

    pip install bump2version

Steps to release a new version

  1. Make sure you are on main and it is up to date, with no local commits ahead of origin:

    git checkout main
    git pull origin main
    git status  # must be clean
  2. Bump the version. This creates a commit and a tag automatically (choose patch, minor or major as needed):

    bump2version patch

    This updates:

    .bumpversion.cfg
    docs/conf.py
    setup.py
    src/travis2docker/__init__.py
  3. Verify the tag was created and that it is signed:

    git tag -v vX.Y.Z

    If sign_tags is not enabled in .bumpversion.cfg, the tag created in step 2 will not be signed and the CI build/publish step will not run. In that case, re-create the tag manually before pushing:

    git tag -d vX.Y.Z
    git tag -s vX.Y.Z -m "vX.Y.Z"

    To avoid this every time, add the following to .bumpversion.cfg:

    [bumpversion]
    current_version = X.Y.Z
    commit = True
    tag = True
    sign_tags = True
  4. Push the branch and the tag:

    git push origin main --tags

    Pushing the signed tag is what triggers the CI job that builds and publishes the package to PyPI.

Troubleshooting

  • “tag already exists” / dirty working tree: make sure git status is clean and git pull origin main was run before bump2version, otherwise the bump commit/tag will be based on stale history.

  • CI does not trigger a PyPI build: check that the pushed tag is signed (git tag -v vX.Y.Z should show a valid GPG signature) and that user.signingkey is configured correctly.

Changelog

3.0.0 (2016-07-26)

  • First release on PyPI.

Download files

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

Source Distribution

travis2docker-6.4.28.tar.gz (39.9 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

travis2docker-6.4.28-py2.py3-none-any.whl (36.0 kB view details)

Uploaded Python 2Python 3

File details

Details for the file travis2docker-6.4.28.tar.gz.

File metadata

  • Download URL: travis2docker-6.4.28.tar.gz
  • Upload date:
  • Size: 39.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/7.0.0 CPython/3.12.13

File hashes

Hashes for travis2docker-6.4.28.tar.gz
Algorithm Hash digest
SHA256 9f6df952b4ba8c94dce6d205ab9a90b8e981cbc6e38324b039d3762992c222a4
MD5 e4717bfbe39af235a5330bdf0d15eb80
BLAKE2b-256 40976ca6e88f2361cadbbdd82dd233c0ea2304ac1243d670eaed9f9811e64808

See more details on using hashes here.

File details

Details for the file travis2docker-6.4.28-py2.py3-none-any.whl.

File metadata

File hashes

Hashes for travis2docker-6.4.28-py2.py3-none-any.whl
Algorithm Hash digest
SHA256 345264f1aa37c266203f3ca41ca828990be2b8afc63152cb63fbecb2e60c1b70
MD5 87ce7284192049e222b1a55b3813fd4c
BLAKE2b-256 86ffc00b2c3055bf11023077825d1f13ceeef324f44395e8daf58b380c0c03c5

See more details on using hashes here.

Release history Release notifications | RSS feed

Supported by

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