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
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 forQA_BRANCHES
andSOURCE_BRANCH
and defines several functions that executegit
commands, with the help ofbg_helper.run
make_file
to create a file usingecho
and output redirectionappend_to_file
to append to a file usingecho
and output redirectionchange_file_line
to change a line of a file usingsed
init_clone_cd_repo
to create a git repo atremote_path
, clone it tolocal_path
, and cd tolocal_path
- also creates a file, commits it, and pushes to origin
checkout_branch
to checkout an existing branchadd_commit_push
to add modified files, commit, and pushdeploy_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
functionsget_empty_qa
get_remote_branches
deploy_to_qa
get_qa_env_branches
merge_qa_to_source
tag_release
get_tag_message
- this makes heavy use of some high-level
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
- this would be a good place to drop a
- the fixture yields to let the methods of the test class run before
deleting the temporary data
tests/test_stuff.py
defines two test classes with some test methodsTestNewRepo.test_remote_branches
to make sure the only remote branch ismaster
, create 3 new branches, confirm that various invocations ofewm.get_remote_branches()
return what you'd expectTestNewRepo.test_local_branches
to confirm that various invocations ofewm.get_local_branches()
return what you'd expectTestNewRepo.test_qa
to confirm that no qa branches are in use and thatewm.get_empty_qa()
returns the set of the overwrittenQA_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
- then check that
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
- then check that
TestNewRepo.test_tagging()
to check that merging a branch to source and tagging it works
$ 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.
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