Skip to main content

Tools to support a straightforward branch/qa/merge/release process

Project description

Install

Install with pip

% pip3 install easy-workflow-manager

After running for the first time, the default settings file is copied to ~/.config/easy-workflow-manager/settings.ini

[default]
QA_BRANCHES = qa, qa2, qa3, qa4
IGNORE_BRANCHES = master, develop, release, uat
LOCAL_BRANCH = mylocalprep
SOURCE_BRANCH = master

Understanding

To understand how you might make use of this project, check out some of the test helper functions and test code, then the scripts

  • tests/__init__.py overrwites some settings for QA_BRANCHES and SOURCE_BRANCH and defines several functions that execute git commands, with the help of bg_helper.run

    • make_file to create a file using echo and output redirection

    • append_to_file to append to a file using echo and output redirection

    • change_file_line to change a line of a file using sed

    • init_clone_cd_repo to create a git repo at remote_path, clone it to local_path, and cd to local_path

      • also creates a file, commits it, and pushes to origin

    • checkout_branch to checkout an existing branch

    • add_commit_push to add modified files, commit, and push

    • deploy_merge_tag to deploy a branch to an open qa environment, merge back to source, then tag

      • this makes heavy use of some high-level easy_workflow_manager functions

        • get_empty_qa

        • get_remote_branches

        • deploy_to_qa

        • get_qa_env_branches

        • merge_qa_to_source

        • tag_release

        • get_tag_message

  • tests/conftest.py defines a single “fixture” that creates a new folder in /tmp to contain a new “remote git repository” and its “local clone” per defined test class

    • the fixture yields to let the methods of the test class run before deleting the temporary data

      • this would be a good place to drop a pytest.set_trace() if you want to inspect temporary repos and their commits

  • tests/test_stuff.py defines two test classes with some test methods

    • TestNewRepo.test_remote_branches to make sure the only remote branch is master, create 3 new branches, confirm that various invocations of ewm.get_remote_branches() return what you’d expect

    • TestNewRepo.test_local_branches to confirm that various invocations of ewm.get_local_branches() return what you’d expect

    • TestNewRepo.test_qa to confirm that no qa branches are in use and that ewm.get_empty_qa() returns the set of the overwritten QA_BRANCHES, then use the helper functions to append to a file, commit the changes, push to the remote

      • then check that ewm.deploy_to_qa() gets the specified branch(es) onto the specified qa branch

      • then check that ewm.clear_qa() clears the specified qa branch

    • TestNewRepo.test_change_commit_push() to update a file

      • then check that ewm.get_merged_remote_branches() does not include the branch that was just updated

    • TestNewRepo.test_tagging() to check that merging a branch to source and tagging it works

Commands / scripts

$ venv/bin/ewm-new-branch-from-source --help
Usage: ewm-new-branch-from-source [OPTIONS] [NAME]

  Create a new branch from SOURCE_BRANCH on origin

Options:
  --help  Show this message and exit.


$ venv/bin/ewm-deploy-to-qa --help
Usage: ewm-deploy-to-qa [OPTIONS] [QA]

  Select remote branch(es) to deploy to specified QA branch

Options:
  -g, --grep TEXT  case-insensitive grep pattern to filter branch names by
  --help           Show this message and exit.


$ venv/bin/ewm-qa-to-source --help
Usage: ewm-qa-to-source [OPTIONS] [QA]

  Merge the QA-verified code to SOURCE_BRANCH and delete merged branch(es)

Options:
  --help  Show this message and exit.


$ venv/bin/ewm-show-qa --help
Usage: ewm-show-qa [OPTIONS] [QA]

  Show what is in a specific (or all) qa branch(es)

Options:
  -a, --all  Select all qa environments
  --help     Show this message and exit.


$ venv/bin/ewm-clear-qa --help
Usage: ewm-clear-qa [OPTIONS] [QA]

  Clear whatever is in a specific (or all) qa branch(es)

Options:
  -a, --all  Select all qa environments
  --help     Show this message and exit.


$ venv/bin/ewm-tag-release --help
Usage: ewm-tag-release [OPTIONS]

  Select a recent remote commit on SOURCE_BRANCH to tag

Options:
  --help  Show this message and exit.

Running Tests

Clone this repo then run the ./dev-setup.bash script to create a virtual environment that includes pytest

% ./dev-setup.bash

Run pytest with the -v an -s options to tests invoked as well as all the generated git commands and their output

% venv/bin/pytest -vs

Resources

Project details


Download files

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

Source Distributions

No source distribution files available for this release.See tutorial on generating distribution archives.

Built Distribution

easy_workflow_manager-0.0.14-py3-none-any.whl (19.9 kB view hashes)

Uploaded Python 3

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