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__.pyoverrwites some settings forQA_BRANCHESandSOURCE_BRANCHand defines several functions that executegitcommands, with the help ofbg_helper.runmake_fileto create a file usingechoand output redirectionappend_to_fileto append to a file usingechoand output redirectionchange_file_lineto change a line of a file usingsedinit_clone_cd_repoto 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_branchto checkout an existing branchadd_commit_pushto add modified files, commit, and pushdeploy_merge_tagto deploy a branch to an open qa environment, merge back to source, then tag- this makes heavy use of some high-level
easy_workflow_managerfunctionsget_empty_qaget_remote_branchesdeploy_to_qaget_qa_env_branchesmerge_qa_to_sourcetag_releaseget_tag_message
- this makes heavy use of some high-level
tests/conftest.pydefines a single "fixture" that creates a new folder in/tmpto 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.pydefines two test classes with some test methodsTestNewRepo.test_remote_branchesto 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_branchesto confirm that various invocations ofewm.get_local_branches()return what you'd expectTestNewRepo.test_qato 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