riotkit-org / riotkit-do

RKD - RiotKit DO. Task executor - balance between Makefile and Gradle. Written in Python. Powerful tool for every DevOps. Automates production tasks as well as local development tasks
Apache License 2.0
10 stars 2 forks source link
build-system builder ci devops devops-tools gradle makefile maven python python-task riotkit-do rkd tasks tasks-executor

RKD - RiotKit-Do

.. image:: ./docs/background.png

.. image:: http://www.repostatus.org/badges/latest/active.svg :alt: Project Status: Active – The project has reached a stable, usable state and is being actively developed. :target: http://www.repostatus.org/#active

.. PyPI version — https://badge.fury.io/py/

.. image:: https://img.shields.io/github/v/release/riotkit-org/riotkit-do?include_prereleases :target: https://img.shields.io/github/v/release/riotkit-org/riotkit-do?include_prereleases :alt: Github Release

.. image:: https://img.shields.io/badge/Made%20with-Python-1f425f.svg :target: https://img.shields.io/badge/Made%20with-Python-1f425f.svg :alt: Made with Python

.. image:: https://img.shields.io/pypi/l/rkd.svg :target: https://img.shields.io/pypi/l/rkd.svg :alt: License

.. image:: https://github.com/riotkit-org/riotkit-do/workflows/Test%20and%20release%20a%20package/badge.svg :target: https://github.com/riotkit-org/riotkit-do/actions?query=workflow%3A%22Test+and+release+a+package%22 :alt: Test and release a package

.. image:: https://img.shields.io/badge/PRs-welcome-brightgreen.svg?style=flat-square :target: https://img.shields.io/badge/PRs-welcome-brightgreen.svg?style=flat-square :alt: PRs welcome

.. image:: https://img.shields.io/github/issues-pr/riotkit-org/riotkit-do.svg :target: https://img.shields.io/github/issues-pr/riotkit-org/riotkit-do.svg :alt: PRs open

.. image:: https://img.shields.io/github/issues/riotkit-org/riotkit-do.svg :target: https://img.shields.io/github/issues/riotkit-org/riotkit-do.svg :alt: Issues open

Looking for maintainers

Hi! This project needs you! We are sorry - our goals have changed, we need to focus on delivering docker images and Kubernetes operators for our partner-organizations to let them host their services securely, therefore we do not have resources to maintain such big project as RKD. RKD has a potential especially with it's plugin-based architecture (https://github.com/riotkit-org/riotkit-do/pull/78 and https://github.com/riotkit-org/riotkit-do/pull/76)

Task executor - balance between Makefile and Gradle [see documentation_], designed with :heart: by RiotKit for DevOps.

Easiest and cleanest way to write management scripts and share them between projects, teams and even organizations

RKD is a stable, open-source, multi-purpose automation tool which balance flexibility with simplicity. The primary language is Python and YAML syntax.

RiotKit-Do can be compared to Gradle and to GNU Make, by allowing both Python and Makefile-like YAML syntax.

Can be used on PRODUCTION, for development, for testing, to replace some of Bash scripts inside docker containers, and for many more, where Makefile was used.

It is not a build tool for Java, but more a DevOps multi-purpose tool. At this time it will not replace Gradle, but maybe in the future this can be achieved by building community packages with support for building eg. Java applications.

Example use cases


- `Docker based production environment <https://github.com/riotkit-org/riotkit-harbor>`_ with multiple configuration files, procedures
- Database administrator workspace (importing dumps, creating new user accounts, plugging/unplugging databases)
- Development environment (executing migrations, importing test database, splitting tests and running parallel)
- On CI (prepare project to run on eg. Jenkins or Gitlab CI) - RKD is reproducible on local computer which makes inspection easier
- `Kubernetes/OKD deployment workspace <https://github.com/riotkit-org/riotkit-do-example-kubernetes-workspace>`_ (create shared YAML parts with JINJA2 between multiple environments and deploy from RKD)
- Automate things like certificate regeneration on production server, RKD can generate any application configs using JINJA2
- `Installers <https://riotkit-do.readthedocs.io/en/latest/usage/wizard.html>`_ (RKD has built-in commands for replacing lines in files, modifying .env files)

Quick start

.. code:: bash

# 1) via PIP
pip install rkd

# 2) Create project (will create a virtual env and prepare files that could be commited to git)
rkd :rkd:create-structure

Please check available releases there: https://pypi.org/project/rkd/#history

Goals:

Rules

RKD in action

.. image:: ./docs/syntax.png

YAML syntax example


.. image:: ./docs/yaml-example.jpg

Python syntax example (makefile.py)

.. image:: ./docs/makefile.png

Documentation

Please read the documentation here.

.. _documentation: https://riotkit-do.readthedocs.io/en/latest/ .. _here: https://riotkit-do.readthedocs.io/en/latest/

Roadmap

Check our github milestones_, to see what's actually planned for next releases.

.. _milestones: https://github.com/riotkit-org/riotkit-do/milestones

Projects using RKD

Alternative ways of installation

Releasing

  1. Create a release in Github releases
  2. Wait for pipeline to build and publish to PyPI

From authors

We are grassroot activists for social change, so we created RKD especially in mind for those fantastic initiatives:

Special thanks to Working Class History <https://twitter.com/wrkclasshistory>_ for very powerful samples that we could use in our unit tests.