Giter Site home page Giter Site logo

pombredanne / zazu Goto Github PK

View Code? Open in Web Editor NEW

This project forked from stopthatcow/zazu

0.0 1.0 0.0 590 KB

Zazu is a development workflow tool that allows CI, SCM, and Issue tracking to interact seamlessly

License: MIT License

Python 99.38% CMake 0.47% Shell 0.14%

zazu's Introduction

Getting Started

buildBadge coverageBadge ReleaseBadge FormatBadge LicenseBadge PythonVersionBadge

Complete documentation is available at zazu.readthedocs.io.

Zazu is a CLI development workflow management tool that combines elements of git flow with CI and issue tracking.

https://g.gravizo.com/svg?digraph%20G%20{"Zazu"->"ContinuousIntegration""ContinuousIntegration"->"TeamCity""Zazu"->"IssueTracker""IssueTracker"->"JIRA""IssueTracker"->"GitHub""Zazu"->"CodeReview""CodeReview"->"GitHub""Zazu"->"CodeStyle""CodeStyle"->"ArtisticStyle""CodeStyle"->"ClangFormat""CodeStyle"->"autopep8"}

Zazu is implemented in Python and is a Click based CLI. If you're wondering why Click, this is a well answered question.

Install

Pre-requsites (linux)

sudo apt-get install python-dev libssl-dev libffi-dev

All platforms

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

Command overview

The following diagram shows the available subcommands of zazu.

https://g.gravizo.com/svg?digraph%20G%20{"zazu"->"build""zazu"->"tool""tool"->"install""tool"->"uninstall""zazu"->"style""zazu"->"repo""repo"->"setup""setup"->"hooks""setup"->"ci""repo"->"cleanup""repo"->"repo_init"repo_init[label=init,style=dashed]"repo"->"clone""zazu"->"dev""dev"->"start""dev"->"status"dev_builds[label=builds,style=dashed]"dev"->"dev_builds""dev"->"review""dev"->"ticket"}

Note: dashed lines are not yet implemented

Repo management

  • 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

Building

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.

zazu.yaml file

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

Compiler tuples

Architectures are defined as tuple in the folowing form: <ISA>-<OS>-<ABI>

Examples

  • x86_64-linux-gcc
  • x86_32-linux-gcc
  • x86_64-win-msvc_2013
  • x86_64-win-msvc_2015
  • x86_32-win-msvc_2013
  • x86_32-win-msvc_2015
  • arm32-linux-gnueabihf
  • arm32-none-eabi

Command autocompletion

Note that autocompletion currently only works for commands and subcommands (not arguments).

BASH users

Add the following to your ~/.bashrc file:

eval "$(_ZAZU_COMPLETE=source zazu)"

ZSH users

Add the following to your ~/.zshrc file

autoload bashcompinit
bashcompinit
eval "$(_ZAZU_COMPLETE=source zazu)"

Handy aliases

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"

zazu's People

Contributors

aramnhammer avatar enkoder avatar stiaszny avatar stopthatcow avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.