Skip to main content

Job runner for multifaceted projects

Project description

Multi-job

Job runner for multifaceted projects

Status

Source Shields
Project license release
Publishers pypi
Downloads pypi_downloads
Raised issues pulls

Motivation

Configuring jobs to run accross multiple directories should be as easy as writting a yaml file:

jobs:
  fmt:
    function: dev_actions/fmt:main
    targets:
      - app
      - server

  lint:
    command: "pylint ."
    targets: all

  bump:
    command: "bumpversion <bump-type>"
    skips: app
    context:
      bump-type: patch

  boot:
    script: ../boot.bash

  clean:
    function: prod_actions/clean:main
    context:
      clean_dirs:
        - build
        - dist
        - multi_job.egg-info

  pypi-upload:
    function: prod_actions/pypi_upload:main
    context:
      release_type: patch
      twine_username: joellefkowitz

projects:
  app:
    path: ../app

  server:
    path: ../server
    context:
      bump-type: minor

  models:
    path: ../models

routines:
  dev:
    - fmt
    - lint

Additionally, automatic cli generation tools shouldn't need separate configuration:

multi-job config.yml

Usage:
    <Workspace> <config_path> [options] fmt
    <Workspace> <config_path> [options] lint
    <Workspace> <config_path> [options] bump [<bump-type>]
    <Workspace> <config_path> [options] boot
    <Workspace> <config_path> [options] clean [<clean_dirs>]
    <Workspace> <config_path> [options] pypi-upload [<release_type> <twine_username>]
    <Workspace> <config_path> [options] dev

Usage

multi-job config.yml lint --check

⚡ Multi Job ⚡
Plan:
Job: lint, project: Local

Installing

Install from pypi:

pip install multi-job

Running tests

Tests are not included in the package build. Clone the repo to include all the source files.

To invoke tests:

python -m unittest

What is being tested

Multi-job is behaviour driven. Desired model behaviours and validation rules are prescribed unittests.

Docs

Docs are not included in the package build. Clone the repo to include all the source files.

Full documentation can be generated locally:

python setup.py docs

To view the generated docs visit ./build/sphinx/html/multi_job/docs/modules.html:

open -a "Google Chrome" ./build/sphinx/html/multi_job/docs/modules.html

Development roadmap

  • Finish writting validation functions → v0.11.0
  • Write unittests → v0.12.0
  • Fill in missing docstrings → v1.0.0

Contributing

Please read CONTRIBUTING.md for details on our code of conduct, and the process for submitting pull requests.

Versioning

We use SemVer for versioning. For the versions available, see the tags on this repository.

Bumpversion is used to version and tag changes. For example:

bumpversion patch

Releases are made on every major change.

Author

See also the list of contributors who participated in this project.

License

This project is licensed under the MIT License - see the LICENSE.md file. for details

Acknowledgments

None yet!

Project details


Download files

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

Files for multi-job, version 0.10.10
Filename, size File type Python version Upload date Hashes
Filename, size multi_job-0.10.10-py3-none-any.whl (23.5 kB) File type Wheel Python version py3 Upload date Hashes View hashes
Filename, size multi-job-0.10.10.tar.gz (12.5 kB) File type Source Python version None Upload date Hashes View hashes

Supported by

Elastic Elastic Search Pingdom Pingdom Monitoring Google Google BigQuery Sentry Sentry Error logging AWS AWS Cloud computing DataDog DataDog Monitoring Fastly Fastly CDN DigiCert DigiCert EV certificate StatusPage StatusPage Status page