| docs | |
|---|---|
| tests | |
| package |
Script to generate Dockerfile from .travis.yml file
- Free software: BSD license
pip install travis2docker
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
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}
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
https://docs.docker.com/engine/installation/
https://travis2docker.readthedocs.io/
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 |
This project uses bump2version to
manage version bumps across .bumpversion.cfg, docs/conf.py,
setup.py and src/travis2docker/__init__.py.
Write access to push to
mainand 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>
bump2versioninstalled:pip install bump2version
Make sure you are on
mainand it is up to date, with no local commits ahead oforigin:git checkout main git pull origin main git status # must be clean
Bump the version. This creates a commit and a tag automatically (choose
patch,minorormajoras needed):bump2version patch
This updates:
.bumpversion.cfg docs/conf.py setup.py src/travis2docker/__init__.py
Verify the tag was created and that it is signed:
git tag -v vX.Y.Z
If
sign_tagsis 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
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.
- "tag already exists" / dirty working tree: make sure
git statusis clean andgit pull origin mainwas run beforebump2version, 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.Zshould show a valid GPG signature) and thatuser.signingkeyis configured correctly.