Metadata-Version: 2.4
Name: travis2docker
Version: 6.4.28
Summary: Script to generate Dockerfile from .travis.yml file
Home-page: https://github.com/vauxoo/travis2docker
Author: Vauxoo
Author-email: info@vauxoo.com
License: BSD-3-Clause
Classifier: Development Status :: 5 - Production/Stable
Classifier: Intended Audience :: Developers
Classifier: Operating System :: Unix
Classifier: Operating System :: POSIX
Classifier: Operating System :: Microsoft :: Windows
Classifier: Programming Language :: Python
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.8
Classifier: Programming Language :: Python :: 3.9
Classifier: Programming Language :: Python :: 3.10
Classifier: Programming Language :: Python :: 3.11
Classifier: Programming Language :: Python :: 3.12
Classifier: Programming Language :: Python :: 3.13
Classifier: Programming Language :: Python :: Implementation :: CPython
Classifier: Programming Language :: Python :: Implementation :: PyPy
Classifier: Topic :: Utilities
Description-Content-Type: text/x-rst
License-File: LICENSE
License-File: AUTHORS.rst
Requires-Dist: PyYAML==3.12; python_version < "3.7"
Requires-Dist: PyYAML==6.0.*; python_version >= "3.7"
Requires-Dist: Jinja2==2.11.3; python_version < "3.7"
Requires-Dist: Jinja2==3.1.*; python_version >= "3.7"
Dynamic: author
Dynamic: author-email
Dynamic: classifier
Dynamic: description
Dynamic: description-content-type
Dynamic: home-page
Dynamic: license
Dynamic: license-file
Dynamic: requires-dist
Dynamic: summary

========
Overview
========



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.

.. list-table::
    :widths: 30 70
    :header-rows: 1

    * - 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
<https://pypi.org/project/codebase-memory-deployv>`__, a wrapper that deploys
`codebase-memory-mcp <https://github.com/DeusData/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:

.. list-table::
    :widths: 10 90
    :stub-columns: 1

    - - Windows
      - ::

            set PYTEST_ADDOPTS=--cov-append
            tox

    - - Other
      - ::

            PYTEST_ADDOPTS=--cov-append tox


Release process
===============

This project uses `bump2version <https://github.com/c4urself/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.
