workflow-tools 0.6.0
CLI tools for GitHub Actions
License: Apache License 2.0
Requires Python: >=2.7, !=3.0.*, !=3.1.*, !=3.2.*, <4

workflow-tools
==============

|Build| |Black| |License|





CLI tools for GitHub Actions.

- Automate writing GitHub workflow configs with a generator tool
- Automate setting GitHub secrets for repositories
- Integrate the tools into your pipeline for setting up new microservices


Rationale
---------

Microservice architecture may have dozens and dozens of lookalikes services that require similar CI/CD workflows.
With infrastructure as code approach taken by the `GitHub Actions`_, why not using workflows generation?
Setting up a new microservice repository may also be automated. This is where ``workflow-tools`` come in handy.


Examples
--------

Let's set `GitHub Secrets`_ for a repository. First, get a `personal access token`_ in GitHub settings.
Then set up a secret using ``workflow-tools``:

.. code-block:: bash

  workflow_secret --owner=anna-money --repo=workflow-tools \
    --token="YOUR-PERSONAL-ACCESS-TOKEN" \
    update --key=MY_SECRET_KEY --value=MY_VALUE

Now let's use a fragment of `Jinja2`_ template for a GitHub Actions workflow to generate resulting config:

.. code-block:: bash

  WORKFLOW_RUNNER_VERSION=ubuntu-18.04 WORKFLOW_PYTHON27=2.7 WORKFLOW_PYTHON37=3.7 \
  workflow_generator
  # Press Enter to start pasting Jinja2 workflow template into stdin
  jobs:
    test:
      runs-on: [[ workflow.runner_version ]]
      strategy:
        matrix:
          python:
            - [[ workflow.python27 ]]
            - [[ workflow.python37 ]]
  # Press Ctrl+D to render resulting workflow
  # For real workflow templates use reading/writing from/to a file, load variables from envfile
  jobs:
    test:
      runs-on: ubuntu-18.04
      strategy:
        matrix:
          python:
            - 2.7
            - 3.7


Help
----

See `documentation`_ for more details. Use ``--help`` flag for each tool in the package.


Installation
------------

Just run:

.. code-block:: bash

  pip install -U workflow-tools


Contributing
------------

See `CONTRIBUTING.rst`_.

.. |Build| image:: https://github.com/anna-money/workflow-tools/workflows/master/badge.svg
   :target: https://github.com/anna-money/workflow-tools/actions?query=workflow%3Amaster
.. |Black| image:: https://img.shields.io/badge/code%20style-black-000000.svg
   :target: https://github.com/python/black
   :alt: Black Formatter
.. |License| image:: https://img.shields.io/github/license/anna-money/workflow-tools.svg
   :alt: GitHub License

.. _GitHub Actions: https://help.github.com/en/actions
.. _GitHub Secrets: https://help.github.com/en/actions/configuring-and-managing-workflows/creating-and-storing-encrypted-secrets
.. _personal access token: https://github.com/settings/tokens
.. _Jinja2: https://jinja.palletsprojects.com/
.. _documentation: https://workflow-tools.readthedocs.io/
.. _CONTRIBUTING.rst: https://github.com/anna-money/workflow-tools/tree/master/CONTRIBUTING.rst


Changelog
---------

0.6.0 (2020-04-01)
..................
* Update readthedocs config (#8) by @pilosus

0.5.0 (2020-04-01)
..................
* Fix autodocs (#7) by @pilosus
* Add check docs step in CI/CD (#7) by @pilosus
* Add badges to README (#7) by @pilosus

0.4.0 (2020-04-01)
..................
* Extend CI/CD flow with package check (#5) by @pilosus
* Fix bugs with setup.py long description by @pilosus

0.3.0 (2020-03-31)
..................
* Add documentation and ReadTheDocs integration (#3) by @pilosus

0.2.0 (2020-03-30)
..................
* Use GitHub Actions for the project (#2) by @pilosus

0.1.0 (2020-03-30)
..................
* Move internal ANNA project to open source (#1) by @pilosus
* Originally developed by Vitaly Samigullin (@pilosus) as internal ANNA project