Devpi-builder takes a requirements.txt and incrementally fills a devpi index with wheels of the listed python packages.
Brandon the Devpi Builder
Brandon, the devpi builder, takes a requirements.txt and incrementally fills a devpi index with wheels of the listed python packages.
Brandon by Example
Given a requirements.txt, we can upload all listed packages to the index opensource/Debian_7 on a local devpi using the following command:
$ devpi-builder requirements.txt http://localhost:3141/opensource/Debian_7
Example of such a requirements.txt:
progressbar==0.2.2 progressbar==0.2.1 PyYAML==3.11
usage: devpi-builder [-h] [--batch] [--user USER] [--password PASSWORD] [--blacklist BLACKLIST] [--pure-index PURE_INDEX] [--junit-xml JUNIT_XML] [--run-id RUN_ID] [--dry-run] [--client-cert CLIENT_CERT] requirements index Create wheels for all given project versions and upload them to the given index. positional arguments: requirements requirements.txt style file specifying which project versions to package. index The index to upload the packaged software to. optional arguments: -h, --help show this help message and exit --batch Batch mode. Do not prompt for credentials --user USER The user to log in as. --password PASSWORD Password of the user. --blacklist BLACKLIST Packages matched by this requirements.txt style file will never be build. --pure-index PURE_INDEX The index to use for pure packages. Any non-pure package will be uploaded to the index given as positional argument. Packages already found in the pure index will not be built, either. --junit-xml JUNIT_XML Write information about the build success / failure to a JUnit-compatible XML file. --run-id RUN_ID Add the given string to all entries in the XML output, allowing to distinguish output from multiple runs in a merged XML. --dry-run Build missing wheels, but do not modify the state of the devpi server. --client-cert CLIENT_CERT Client key to use to authenticate with the devpi server.
The following environment variables can be used instead of command line arguments:
- The value of this environment variable will be used if --user is not given.
- The value of this environment variable will be used if --password is not given.
- Read a requirements.txt style input file.
- Read user/pass from the environment (using DEVPI_USER and DEVPI_PASSWORD).
- Support multiple versions of a package in the same file.
- Only build packages not yet in the target index.
- Support a black-list for packages to never be built and uploaded (certain packages like numpy are fragile regarding their interdependency with other packages).
- Can use separate indices for plain python packages and those with binary contents.
- Can log build results to a JUnit compatible XML file, thus that it can be parsed by Jenkins.
This lists the most important changes for each release.
Version 3.0.1 — 2017-11-21
- Properly handle non-ASCII characters in the output of failed package builds. Previous versions used to crash in this case if a JUnit XML output file was requested.
Version 3.0.0 — 2017-06-16
- The command line parameter --batch can be used to disable any prompts.
- The way credentials are passed has been changed in an incompatible way.
The positional arguments for user and password no longer exist.
Instead, use one of the following:
- Pass the credentials via --user and --password command line arguments.
- Pass the credentials via the environment variables DEVPI_USER and DEVPI_PASSWORD.
- Answer the interactive prompt for user and password. This is only possible if --batch is not used.
Version 2.3.1 — 2017-05-19
- Improved performance if a blacklist is used.
Version 2.3.0 — 2017-04-07
- The command line parameter --run-id allows to specify a run identifier that will be added to each entry in the generated JUnit XML.
- Changelog is now in the format suggested by Keep-a-CHANGELOG.
Version 2.2.0 — 2016-05-23
- Capture build errors for better output in case of build failures. Thanks Travis Mehlinger.
Version 2.1.0 — 2016-04-22
- Support for client certificates. Thanks Hans Lawrenz.
Version 2.0.0 — 2016-01-20
- Compatibility with pip >= 8.0 by relying on pip’s default download cache mechanism instead of explicitly requiring a download cache. This effectively disables caching for people still using pip < 6.0. Thanks Christian Stefanescu.
- Support for dry-running the wheel build without changing the devpi server state.
- Python 3.5 is now officially supported.
- Python 3.2 is no longer supported.
Version 1.0.0 — 2015-05-22
- Use devpi-plumber instead of a custom devpi wrapper.
- Check the blacklist first when deciding whether to build a package.
Version 0.4.0 — 2015-09-13
- Only consider a package to exist if it is a wheel and it is compatible with the current system. Thanks Michael Still and David Szotten
- The source distribution now properly contains a README.md. Thanks Mikhail Lukyanchenko.
Version 0.3.0 — 2015-08-15
- Support for special-case handling of pure python wheels
- Optional support for reporting skipped packages in a JUnit-compatible XML
- Python 3 support
Version 0.2.1 — 2014-08-07
- Fixed crash if a built wheel could cannot be found (because pip<=1.5.2 skipped it).
Version 0.2.0 — 2014-08-01
- Support for package blacklisting to never build certain wheels.
- build as many packages as possible. Do not stop if one fails.
Version 0.1.0 — 2014-08-01
- Build a list of packages and upload them to a Devpi index
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
|Filename, Size & Hash SHA256 Hash Help||File Type||Python Version||Upload Date|
(12.7 kB) Copy SHA256 Hash SHA256
|Wheel||py2.py3||Nov 21, 2017|
(20.7 kB) Copy SHA256 Hash SHA256
|Source||None||Nov 21, 2017|