https://github.com/kenjyco/easy-workflow-manager
Tools to support a straightforward branch/qa/merge/release process
https://github.com/kenjyco/easy-workflow-manager
cli git kenjyco python workflow
Last synced: about 2 months ago
JSON representation
Tools to support a straightforward branch/qa/merge/release process
- Host: GitHub
- URL: https://github.com/kenjyco/easy-workflow-manager
- Owner: kenjyco
- License: other
- Created: 2018-12-10T08:47:31.000Z (over 7 years ago)
- Default Branch: master
- Last Pushed: 2024-11-30T16:57:55.000Z (over 1 year ago)
- Last Synced: 2025-07-01T04:08:30.449Z (about 1 year ago)
- Topics: cli, git, kenjyco, python, workflow
- Language: Python
- Homepage:
- Size: 66.4 KB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE.txt
Awesome Lists containing this project
README
## 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
-