A development workflow management CLI for GitHub, JIRA, and TeamCity
Zazu is a CLI development workflow management tool that combines elements of git flow with CI and issue tracking.
Zazu is implemented in Python and is a Click based CLI. If you’re wondering why Click, this is a well answered question.
sudo apt-get install python-dev libssl-dev libffi-dev
sudo pip install --upgrade pip sudo pip install zazu
If you get an error about a package called “six” use the following command instead: sudo pip install --upgrade --ignore-installed zazu
The following diagram shows the available subcommands of zazu.
Note: dashed lines are not yet implemented
zazu repo clone <name> clones repo and installs GIT hooks
zazu repo init <name> initializes repo to default project structure (Unimplemented)
zazu repo setup hooks installs default GIT hooks to the repo
zazu repo setup ci sets up CI builds based on the zazu.yaml file in the repo
CI build configuration management
Zazu can setup CI server builds (currently only TeamCity is supported) to build targets specified by a recipe file (the zazu.yaml file in the root of a repo).
zazu repo setup ci
Development workflow management
zazu dev start interactivly creates new ticket
zazu dev start <name> e.g. zazu dev start LC-440_a_cool_feature
zazu dev status displays ticket and pull request status
zazu dev ticket launches web browser to the ticket page
zazu dev builds launches web browser to the CI project page
zazu dev review launches web browser to create/view a pull request
Code Style Enforcement
zazu style fixes code style using astyle and autopep8
Zazu uses the zazu.yaml file to build goals defined there
zazu build <goal>
The target architecture is assumed to be ‘local’ but may be overridden using the –arch flag. e.g zazu build --arch=arm32-linux-gnueabihf package would build targeting 32 bit arm linux.
Passing variables to the build
You may pass extra variables to the build using key=value pairs. zazu build --arch=arm32-linux-gnueabihf package FOO=bar This sets the environement variable FOO to the value bar during the build.
Build tool installation
Zazu will automatically try to obtain required build tools needed for each target as specified in the zazu.yaml file. These may be installed/uninstalled manually as well:
zazu tool install <tool==version>
zazu tool uninstall <tool==version>
These tools will be installed to the ~/.zazu/tools/ folder.
The zazu.yaml file lives at the base of the repo and describes the CI goals and architectures to be run. In addition it describes the requirements for each goal.
components: - name: networkInterface goals: - name: coverage description: "Runs the \"check\" target and reports coverage via gcovr" buildType: coverage buildVars: LOCAL_SERVER: ON builds: - arch: x86_64-linux-gcc - name: package buildType: minSizeRel builds: - arch: arm32-linux-gnueabihf requires: zazu: - gcc-linaro-arm-linux-gnueabihf==4.9 - arch: x86_64-linux-gcc issueTracker: type: github owner: stopthatcow repo: zazu codeReviewer: type: github owner: stopthatcow repo: zazu style: exclude: - dependencies/ #list path prefixes here to exclude from style - build/ astyle: options: - "--options=astyle.conf" # options passed to astyle include: - src/*.cpp # list of globs of files to style - include/*.h - test/*.cpp autopep8: options: - "--max-line-length=150" # options passed to autopep8 zazu: 0.2.0 # optional required zazu version
Architectures are defined as tuple in the folowing form: <ISA>-<OS>-<ABI>
Note that autocompletion currently only works for commands and subcommands (not arguments).
Add the following to your ~/.bashrc file:
eval "$(_ZAZU_COMPLETE=source zazu)"
Add the following to your ~/.zshrc file
autoload bashcompinit bashcompinit eval "$(_ZAZU_COMPLETE=source zazu)"
alias zz="zazu" alias zd="zazu dev" alias zds="zazu dev start" alias zdr="zazu dev review" alias zdt="zazu dev ticket" alias zdb="zazu dev builds" alias zs="zazu style" alias zb="zazu build"
Release history Release notifications | RSS feed
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.