Skip to content
This repository has been archived by the owner on Nov 23, 2020. It is now read-only.

quantmind/pulsar-agile

Repository files navigation

Toolkit for agile development with python, git, github, docker and aws

Badges

license pyversions status pypiversion

Master CI

master-build coverage-master

Downloads

http://pypi.python.org/pypi/pulsar-agile

Source

https://github.com/quantmind/pulsar-agile

Mailing list

google user group

Design by

Quantmind and Luca Sbardella

Platforms

Linux, OSX, Windows. Python 3.5 and above

Keywords

git, github, python, aws, release, documentation

CONTENTS

Install

This is a python package for aiding deployment and dev-ops type operations on the local machine. To install the package you need python 3.5 or above:

pip install -U pulsar-agile

Setup

Once installed, create the play.py script inside of your repository:

if __name__ == '__main__':
    from agile.app import AgileManager
    AgileManager(description='Release manager for my package').start()

and create the agile.json file along side it.

Usage

Check tasks available:

python play.py -l

Logging

When running tasks, the logging level is by default set to info. For a more verbose logging pass --log-level agile.debug.

Commands

Github

Pulsar agile contains two commands which interacts with github:

  • labels
  • release

Configuration

Before using github commands one needs to configure the .gitconfig file by adding the username and the token. The token is obtained from github from the personal access tokens page:

[user]
  email = ...
  username = lsbardel
  token = bqedoeunzplesw52tme00zwuj2lhbjr8emrbrxax

Labels

Keep labels consistent across repositories. To add a label command create the labels entry in the agile.json file:

{
    "labels": {
        "group1": {
            "repositories": [
                "quantmind/pulsar-agile",
                "quantmind/pulsar-cloud"
            ],
            "labels": {
                "aws": "e47911",
                "benchmark": "006b75"
            }
        }
    },
    "tasks": {
        "repo-labels": {
            "description": "Update labels in all repositories",
            "command": ["labels"]
        }
    }
}

and run the repo-labels command:

python play.py repo-labels

Release

Release dry run:

python play.py release

Release push:

python play.py release --push

HttpCopy

Copy files over an Http connection. For example:

"httpcopy": {
    "sockjs": {
        "src": "https://cdnjs.cloudflare.com/ajax/libs/sockjs-client/{{ sockjs_version }}/sockjs.js",
        "target": "/media/"
    }
}

Sass

Compile scss files using SASS

Shell

Run arbitrary commands on the shell

Template

Transform jinja2 templates files into new files with context dictionary given in the agile.json or other json files. It can also replace ad-hoc string via the replace directive.

Testing

To run unit tests, create a test_config.py file alongside this file and add the following two entries:

import os

os.environ['GITHUB_USERNAME'] = "<username for token>"
os.environ['GITHUB_TOKEN'] = "<generate one from https://github.com/settings/tokens>"
os.environ['GITHUB_TEST_REPO'] = "<username>/<reponame>"

Changelog