In the project where there are many components to track new versions (docker images and pypi packages) this tool automates finding new versions, running tests and commit changes to git.
Create YAML file with definition of your components (see example in
tests/test_files/components.yaml ). Place components.yaml
in the
root of your project directory and run:
>>> python -m updater check
10 components to check
1 components to update
>>> python -m updater check --verbose
10 components to check
1 components to update
pymongo - current: 3.12.1 next: 3.12.2
This will check versions for all components defined in components2.yaml
:
>>> python -m updater --file=/path/to/your/components2.yaml check
10 components to check
1 components to update
Here is an example of update script which will do checking and print out updated config file without making any changes in your files:
>>> python -m updater --dry-run --print update
Here is full example of using update command:
>>> python -m updater update --git-commit --test-command="make test"
It will, for each defined component in components.yaml
from the local directory:
-
Check if there are new versions of your components available
-
Replace in all files version numbers to the newest one
-
Run tests
-
Add and commit changes to git
Install via pypi packages repository:
>>> python -m pip install updater
Example of components definition:
# name of the component
python:
# docker-image or pypi
component-type: docker-image
# this version tak needs to aligned with versions in files
# if you put "latest" then check and update will be skipped for this component
current-version: 3.6.6-alpine3.8
# for docker-image component-type only
docker-repo: library
# filter used to get all possible versions
filter: /^\d+\.\d+\.\d+-alpine\d+\.\d+$/
# files in which version number should be replaced
files: [locust/Dockerfile, locust/some_script.sh]
# this is the find (current version) and replace (new version) pattern.
# {version} and {component} can be used
version-pattern: "PYTHON_VERSION {version}"
# if there are different patterns in particular files, you can specify them here
# file level pattern overrides component level pattern
files-version-pattern:
- file: locust/Dockerfile
pattern: PYTHON_VERSION={version}
- file: locust/some_script.sh
pattern: version {version}
Django:
component-type: pypi
current-version: 2.2.24
filter: /^\d+\.\d+(\.\d+)?$/
files: [app/requirements.txt]
logspout:
component-type: docker-image
current-version: v3.1
docker-repo: gliderlabs
filter: /^v\d+\.\d+\.\d+$/
# if there is prefix before numeric part of version, you can specify it here
prefix: v
files: [logspout/Dockerfile-logspout]
# put here versions which should be skipped
exclude-versions: [v3.2.6]
If you want to “copy” python packages to components.yaml from requirements.txt, pipfile (pipenv)
or Poetry (project.toml) you need use import-req
command with --source
set to one of
requirements
, pipfile
or poetry
. In each cases the --requirements-file
param needs to point at
requirements.txt like file but will set proper version-pattern
and files
.
updater [OPTIONS] COMMAND [ARGS]...
Show the version and exit.
YAML file with components configuration. If not present other options for ‘check’ command are required.
If this option is given components configuration with new versions will be written here.
If set no changes to any files are written.
Config is printed to stdout at the end.
Check if new versions of ddefined components are available.
updater check [OPTIONS]
Component type: docker-image or pypi package.
-
Options
docker-image|pypi
A component name for which the version should be verified.
A repository name if component is a docker image.
Version tag eg. v2.3.0 against which new version check will be run.
Print detailed info for each component about new version avaialble.
Clear all the cached responses about versions in rpositories.
Ignore components.yaml file in local directory if exists.
Imports python packages from requirements.txt file.
updater import-req [OPTIONS]
Source of the requirement.txt file. [required]
-
Options
requirements|pipfile|poetry
Requirements.txt file from which packages and versions will be added to components.yaml file. [required]
Update files, run test and commit changes.
updater update [OPTIONS]
Command that should be run after updating each component.
If test-command param is given, this will be the context dir to run it.
When set after each components update, git commit is performed in active branch.
If given, then it will be treated as a root dir for paths in config file.
Print at the end detailed info for each component about update process.
Print at the end detailed info for each component about update process.
- :ref:
genindex
- :ref:
modindex
- :ref:
search
-->