Skip to main content

Script to generate a development Dockerfile from the deployv image of a repository (based on its variables.sh 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 or https url of the git repository. For private repositories use the ssh url.

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

To build image:

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

To create container:

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

The repository needs a variables.sh file in its root path (the one used by the deployv images built from the CI). By default the docker image is built from its values as DOCKER_IMAGE_REPO:MAIN_APP-VERSION-SHA_SHORT; use --docker-image=quay.io/vauxoo/PROJECT:TAG to pick the image pushed by the build_docker pipeline instead.

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.

Recommended: use Ed25519 keys. The tool copies ~/.ssh/id_ed25519.pub to the container’s authorized_keys and warns if only RSA keys are found.

export fname=~/.ssh/id_ed25519
cp ${fname} ${fname}_with_pwd
ssh-keygen -p -N "" -f ${fname}

For legacy RSA keys:

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

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-7.0.2.tar.gz (32.6 kB view details)

Uploaded Source

Built Distribution

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

travis2docker-7.0.2-py3-none-any.whl (27.0 kB view details)

Uploaded Python 3

File details

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

File metadata

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

File hashes

Hashes for travis2docker-7.0.2.tar.gz
Algorithm Hash digest
SHA256 b501a7918402eb1e40640e0ef10f1f677030859d91b9c1289f58f881cc4725c7
MD5 097f5650ae75b1b5994535d5a2a1748a
BLAKE2b-256 8f38e2332bfc314a70f81ad0c8c5fbfddd608d38df7422baac96b1db7c930915

See more details on using hashes here.

File details

Details for the file travis2docker-7.0.2-py3-none-any.whl.

File metadata

  • Download URL: travis2docker-7.0.2-py3-none-any.whl
  • Upload date:
  • Size: 27.0 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/7.0.0 CPython/3.14.6

File hashes

Hashes for travis2docker-7.0.2-py3-none-any.whl
Algorithm Hash digest
SHA256 cafd57f419d55c237b6ef49eeafbf0f5422049939ff4158f9c2c0e48e2aa60f6
MD5 e0f6c0c25faf944cd59d7a347146c945
BLAKE2b-256 3a243a112ba0706e8dc99517cf72647ee2340007445472ec9a11fa2440bce986

See more details on using hashes here.

Release history Release notifications | RSS feed

7.0.3

2 files

This release

7.0.2 This release

2 files

7.0.1

2 files

7.0.0

2 files

6.4.28

2 files

6.4.27

2 files

6.4.26

2 files

6.4.25

2 files

6.4.24

2 files

6.4.23

2 files

6.4.22

2 files

6.4.21

2 files

6.4.20

2 files

6.4.19

2 files

6.4.18

2 files

6.4.17

2 files

6.4.16

2 files

6.4.15

2 files

6.4.14

2 files

6.4.13

2 files

6.4.12

2 files

6.4.11

2 files

6.4.10

2 files

6.4.9

2 files

6.4.8

2 files

6.4.7

2 files

6.4.6

2 files

6.4.5

2 files

6.4.4

2 files

6.4.3

2 files

6.4.1

2 files

6.4.0

2 files

6.3.8

2 files

6.3.7

2 files

6.3.6

2 files

6.3.5

2 files

6.3.4

2 files

6.3.3

2 files

6.3.2

2 files

6.3.1

2 files

6.3.0

2 files

6.2.1

2 files

6.2.0

2 files

6.1.3

2 files

6.1.2

2 files

6.1.0

2 files

6.0.0

2 files

5.4.0

2 files

5.3.0

1 file

5.2.0

1 file

5.1.1

1 file

5.1.0

1 file

5.0.0

1 file

4.3.0

1 file

4.2.0

1 file

4.1.2

1 file

4.1.1

1 file

4.1.0

1 file

4.0.7

1 file

4.0.6

1 file

4.0.5

1 file

4.0.4

1 file

4.0.3

1 file

4.0.2

1 file

4.0.1

1 file

4.0.0

1 file

3.3.3

1 file

3.3.2

1 file

3.3.1

1 file

3.3.0

1 file

3.2.1

1 file

3.2.0

1 file

3.1.0

1 file

3.0.14

1 file

3.0.13

1 file

3.0.12

1 file

3.0.11

1 file

3.0.10

1 file

3.0.9

1 file

3.0.8

1 file

3.0.7

1 file

3.0.6

1 file

3.0.5

1 file

3.0.4

1 file

3.0.3

1 file

3.0.2

1 file

3.0.1

1 file

3.0.0

1 file

2.1.0

1 file

2.0.3

1 file

2.0.2

1 file

2.0.1

1 file

1.6.0

1 file

1.5.0

1 file

1.4.0

1 file

1.3.0

1 file

1.2.0

1 file

1.1.1

1 file

0.1

Supported by

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