适用于 GitHub、JIRA 和 TeamCity 的开发工作流管理 CLI
项目描述
Zazu 是一个 CLI 开发工作流管理工具,它将 git flow 的元素与 CI 和问题跟踪相结合。
Zazu 是用 Python 实现的,是一个 基于Click的 CLI。如果您想知道为什么单击,这是一个很好回答的 问题。
安装
先决条件(Linux)
sudo apt-get install python-dev libssl-dev libffi-dev
所有平台
sudo pip install --upgrade pip sudo pip install zazu
如果您收到有关名为“six”的软件包的错误,请改用以下命令:sudo pip install --upgrade --ignore-installed zazu
命令概述
下图显示了 zazu 的可用子命令。
注:虚线尚未实现
回购管理
zazu repo clone <name>克隆 repo 并安装 GIT 钩子
zazu repo init <name>将 repo 初始化为默认项目结构(未实现)
zazu repo setup hooks将默认的 GIT hooks 安装到 repo
zazu repo setup ci根据 repo 中的 zazu.yaml 文件设置 CI 构建
CI 构建配置管理
Zazu 可以设置 CI 服务器构建(目前仅支持 TeamCity)来构建由配方文件(repo 根目录中的 zazu.yaml 文件)指定的目标。
zazu repo 设置 ci
开发工作流程管理
zazu dev start交互式创建新票
zazu dev start <名称>例如 zazu dev start LC-440_a_cool_feature
zazu dev status显示票证和拉取请求状态
zazu dev ticket将 Web 浏览器启动到票务页面
zazu dev builds启动 Web 浏览器到 CI 项目页面
zazu dev review启动 Web 浏览器以创建/查看拉取请求
代码风格执行
zazu style使用 astyle 和 autopep8 修复代码样式
建造
Zazu 使用 zazu.yaml 文件来构建在那里定义的目标
zazu build <目标>
目标架构假定为“本地”,但可以使用 –arch 标志覆盖。例如 zazu build --arch=arm32-linux-gnueabihf包将针对 32 位 arm linux 构建。
将变量传递给构建
您可以使用 key=value 对将额外的变量传递给构建。 zazu build --arch=arm32-linux-gnueabihf package FOO=bar在构建期间将环境变量FOO设置为值bar。
构建工具安装
Zazu 将自动尝试获取 zazu.yaml 文件中指定的每个目标所需的构建工具。这些也可以手动安装/卸载:
zazu 工具安装<tool==version>
zazu 工具卸载<tool==version>
这些工具将安装到~/.zazu/tools/文件夹中。
zazu.yaml 文件
zazu.yaml 文件位于 repo 的基础上,描述了要运行的 CI 目标和架构。此外,它还描述了每个目标的要求。
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
编译器元组
体系结构被定义为以下形式的元组: <ISA>-<OS>-<ABI>
例子
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
命令自动完成
请注意,自动完成目前仅适用于命令和子命令(不是参数)。
BASH 用户
将以下内容添加到您的 ~/.bashrc文件中:
eval "$(_ZAZU_COMPLETE=source zazu)"
ZSH 用户
将以下内容添加到您的~/.zshrc文件中
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"