Skip to content
/ flow Public

Integrates Jenkins, Github & JIRA--makes your life better

License

Notifications You must be signed in to change notification settings

kodify/flow

Repository files navigation

#Flow Build Status Code Climate

Agile environment workflow assistant

##Philosophy

Bored of giving visibility to your work?

Flow automates all workflow related tasks and it integrates with:

Issue trackers - [x] Jira Source Managers - [x] Github

  • Notifiers
    • Hipchat
  • Continuous integrations
    • Scrutinizer
    • Travis CI
    • Jenkins CI

It is also flexible and adaptable to all your needs.

##Quick start

Install flow

git clone [email protected]:kodify/flow.git

... and also its gems

cd flow
bundle install

###Configure

You need to rename the config/parameters.yml.tpl to config/parameters.yml, and fill it with your data

###Run it

You should get flow running on a public ip/address on port 80 (otherwhise jira webhooks won't work), to start it just use rackup

rackup -D
  • -D is to run it as a daemon

###Configure Github WebHooks

Go to your github repo and configure a new WebHook pointing to flow with this info:

  • URL: "http://your_address_or_ip/payload?token=YOUR_TOKEN"
  • EVENTS: Issue comment, Pull Request review comment, Push, Status

Github webhooks: https://help.github.com/articles/about-webhooks/

###Configure Jira WebHooks

Here you have a good explanation of what are Jira webhooks, BTW you should configure them as follows:

# For uat to in progress transition
http://your_address/pr/${issue.key}/ko

# For uat to done transition
http://your_address/pr/${issue.key}/ok

##Supported git workflow

Actually Flow is working over a simple continuous delivering git workflow.

Its based on a master branch where each user story is represented by a branch with the jira issue id.

When a user story is completed (AKA green CI, code reviewed an uat ok) Flow automatically merges this PR and runs a build over master branch.

##What it does

Flow will do all those actions for you:

###Avoid infinite PRs

In order to don't have infinite pull requests without code review, Flow will post on your predefined chat room an alert whenever the max pull requests limit is reached. Please take a look at confg/parameters.yml to configure parameters.

###Deploy remember

It will post a comment on your default chat room remembering that build is green and you can deploy. Just configure a new cron to call:

./bin/kod can_deploy 'my/repo'

###Move reviewed issues on jira

Whenever a pull request is green and has marked as reviewed (+1, 👍) flow will move your Jira issue to uat column.

###Merge and move uat ok pull requests

Pull requests with code review (:+1:) and uat ok (:shipit:) will be automatically merged and origin branch removed

###Move uat ko issues on jira

Whenever you mark a pull request as ko (:boom:) Flow will move it on J ira to in progress column

###Uat OK (Jira integration)

With Jira webhooks you can link the transition between uat to done to automatically post a (:shipit:) message on the Pull Request

###Uat KO (Jira integration)

With Jira webhooks you can link the transition between uat to in progress to automatically post a (:boom:) message on the Pull Request

##Flow language

In order to comunicate with Flow you need to know its language, just a few icons:

  • 👍 : Pull request is code reviewed
  • 👎 : Pull request is code reviewed and is blocked because of some problems
  • :shipit: : Pull request is uat ok
  • 💥 : Pull request is uat ko

... otherwise you can customize the way you talk to Flow on your config/parameters.yml

Supported Ruby Versions

This library aims to support and is [tested against][travis] the following Ruby implementations:

  • Ruby 1.9.3
  • Ruby 2.0.0

If something doesn't work on one of these Ruby versions, it's a bug.

This library may inadvertently work (or seem to work) on other Ruby implementations, however support will only be provided for the versions listed above.

If you would like this library to support another Ruby version, you may volunteer to be a maintainer. Being a maintainer entails making sure all tests run and pass on that implementation. When something breaks on your implementation, you will be responsible for providing patches in a timely fashion. If critical issues for a particular implementation exist at the time of a major release, support for that Ruby version may be dropped.

License

{include:file:LICENSE.md}

About

Integrates Jenkins, Github & JIRA--makes your life better

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published