Skip to main content

Automatic upstream dependency testing

Project description

Build status

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!

Changelog

  • 0.2.5 (2017-01-11)

    • Don’t crash if Strazar is monitoring a package which is not currently in .travis.yml. This can happen when your software switches dependencies, e.g. from boto to boto3 but you still like to keep the monitoring configuration for the previous dependency.

  • 0.2.4 (2017-01-05)

    • Use the new package name and version in commit log;

    • Fix a bug where Strazar will not properly update the test matrix when there are packages that conflict between each other. The following syntax is now supported:

      env:
        - '_BOTO=2.45.0 _DJANGO=1.9 _DJANGO_STORAGES=1.5.1'
      
        - '_BOTO3=1.4.3 _DJANGO=1.9 _DJANGO_STORAGES=1.5.1'

      When Django 1.10 is found the matrix is updated as follows:

      env:
        - '_BOTO=2.45.0 _DJANGO=1.9 _DJANGO_STORAGES=1.5.1'
        - '_BOTO=2.45.0 _DJANGO=1.10 _DJANGO_STORAGES=1.5.1'
      
        - '_BOTO3=1.4.3 _DJANGO=1.9 _DJANGO_STORAGES=1.5.1'
        - '_BOTO3=1.4.3 _DJANGO=1.10 _DJANGO_STORAGES=1.5.1'
  • 0.2.3 (2016-07-28)

    • Add logging to indicate progress and status

  • 0.2.2 (2016-05-16)

    • Handle non-ascii characters in data streams

  • 0.2.1 (2016-05-15)

    • Initial release

Installation

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


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

strazar-0.2.5.tar.gz (6.9 kB view details)

Uploaded Source

Built Distribution

strazar-0.2.5-py3-none-any.whl (9.6 kB view details)

Uploaded Python 3

File details

Details for the file strazar-0.2.5.tar.gz.

File metadata

  • Download URL: strazar-0.2.5.tar.gz
  • Upload date:
  • Size: 6.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No

File hashes

Hashes for strazar-0.2.5.tar.gz
Algorithm Hash digest
SHA256 e121b2357b453f32c37b9655a45d161c93cbec574c58006cf74c74ee8118e39b
MD5 4211805b639564446dcbcfc68846a66c
BLAKE2b-256 64c801bb965d8874e478c009854f2bb1cd6c2483d31758853675a1fe39e7ebce

See more details on using hashes here.

File details

Details for the file strazar-0.2.5-py3-none-any.whl.

File metadata

File hashes

Hashes for strazar-0.2.5-py3-none-any.whl
Algorithm Hash digest
SHA256 91f5e9afda3784dd04dbf88f428855496eda7dd89b40f7efb888f719f8b98948
MD5 68b1a20f682cd071f1987d1aed66722d
BLAKE2b-256 6dc60a3f9ff704be3f727213a2c6f270943fd05d211a920a056d489483c1e3e0

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page