Automatic upstream dependency testing
Project description
Strazar (from Bulgarian for sentinel) helps you pro-actively monitor for new versions of upstream packages. Once a package is found it is added to your test matrix to ensure your software works with the latest upstream dependencies!
Strazar works by updating the .travis.yml environment and uses the GitHub API to pull and push changes automatically to your repositories. The actual environment setup and testing is performed by the CI server, while Strazar acts as a trigger for new builds!
To install:
pip install strazar
Supported upstream package repositories
Currently only PyPI is supported. We have plans for adding RubyGems and NPM very soon! Others will come later.
Supported CI environments
At the moment only Travis-CI is supported!
Supported source code repositories
At the moment only GitHub is supported as we use their API, not git directly!
GITHUB_TOKEN environment variable allows authenticated API access. This token needs the public_repo or repo permission.
Prepare .travis.yml
Strazar uses the variable format _PACKAGE_NAME where the variable name starts with an under-score followed by the capitalized package name. All hyphens are converted to under-scores as well. We advise that your .travis.yml files follow the same convention. This is how Strazar’s own .travis.yml looks like:
language: python python: - 2.7 - 3.5 install: - pip install coverage flake8 mock PyYAML==$_PYYAML PyGithub==$_PYGITHUB script: - ./test.sh env: - _PYGITHUB=1.26.0 _PYYAML=3.11
Monitor PyPI
PyPI doesn’t provide web-hooks so we examine the RSS feed for packages of interest based on configuration settings. To start monitoring PyPI execute the following code from a cron job (at Mr. Senko we do it every hour):
import os import strazar os.environ['GITHUB_TOKEN'] = 'xxxxxxxxx' config = { "PyYAML" : [ { 'cb' : strazar.update_github, 'args': { 'GITHUB_REPO' : 'MrSenko/strazar', 'GITHUB_BRANCH' : 'master', 'GITHUB_FILE' : '.travis.yml' } }, ], } strazar.monitor_pypi_rss(config)
The config dict uses package names as 1st level keys. If you are interested in a particular package add it here. All other packages detected from the RSS feed will be ignored. If your project depends on multiple packages you have to list all of them as 1st level keys in config and duplicate the key values.
The key value is a list of call-back methods and arguments to execute once a new package has been published online. If two or more repositories depend on the same package then add them as values to this list.
The strazar.update_github call-back knows how to commit to your source repo which will automatically trigger a new CI build.
Contributing
Source code and issue tracker are at https://github.com/MrSenko/strazar
Commercial support
Mr. Senko provides commercial support for open source libraries, should you need it!
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
File details
Details for the file strazar-0.2.3.tar.gz
.
File metadata
- Download URL: strazar-0.2.3.tar.gz
- Upload date:
- Size: 11.3 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | d19ff3c6086476c52268d11f4bf4c9e70fc02739196ec2fcee667b3dfb0483ae |
|
MD5 | ceff8becd3760d6384009c5d9b928531 |
|
BLAKE2b-256 | a92d18abff403e77d1288848718f9c3233316a42d3e05f450d29701f63a609c7 |