All Projects → etsy → PushBot

etsy / PushBot

Licence: other
An IRC Bot for organizing code pushes

Programming Languages

java
68154 projects - #9 most used programming language
GAP
223 projects
CSS
56736 projects
javascript
184084 projects - #8 most used programming language
HTML
75241 projects

Labels

Projects that are alternatives of or similar to PushBot

incpath
PHP extension to support atomic deploys
Stars: ✭ 50 (-37.5%)
Mutual labels:  non-sox
cdncontrol ui
A web UI for Etsy's cdncontrol tool
Stars: ✭ 13 (-83.75%)
Mutual labels:  non-sox
Apotheosis
No description or website provided.
Stars: ✭ 27 (-66.25%)
Mutual labels:  non-sox
DebriefingFacilitationGuide
Leading Groups at Etsy to Learn From Accidents
Stars: ✭ 237 (+196.25%)
Mutual labels:  non-sox
etsy.github.com
Etsy! on Github!
Stars: ✭ 15 (-81.25%)
Mutual labels:  non-sox
ELK-utils
Utilities for working with the ELK (Elasticsearch, Logstash, Kibana) stack
Stars: ✭ 58 (-27.5%)
Mutual labels:  non-sox
ab
Etsy's little framework for A/B testing, feature ramp up, and more.
Stars: ✭ 129 (+61.25%)
Mutual labels:  non-sox
Skyline
It'll detect your anomalies! Part of the Kale stack.
Stars: ✭ 2,129 (+2561.25%)
Mutual labels:  non-sox
Logster
Parse log files, generate metrics for Graphite and Ganglia
Stars: ✭ 1,967 (+2358.75%)
Mutual labels:  non-sox
Deployinator
Deployinate!
Stars: ✭ 1,889 (+2261.25%)
Mutual labels:  non-sox
Androidstaggeredgrid
An Android staggered grid view which supports multiple columns with rows of varying sizes.
Stars: ✭ 4,794 (+5892.5%)
Mutual labels:  non-sox
geonames
Scripts for using Geonames
Stars: ✭ 24 (-70%)
Mutual labels:  non-sox

PushBot is an IRC bot that manages the topic in an IRC channel that has a push train.

This is an archived project

Pushbot is no longer actively maintained and is no longer in sync with the version used internally at Etsy.

USAGE

.join                      -- Join the queue for a normal push wherever its convenient
.join config               -- Join the queue for a config push
.join HOLD                 -- A HOLD that is queued and named
.join HOLD "message"       -- You can set a message when you join
.join askme                -- Join the queue and suggest that people ask you before joining along
.join before USER          -- Join before the given user
.join with USER            -- Join the queue at the first position with [username]
.join config with USER     -- You can string join commands together
.join last                 -- Join at the end of the queue
.at {commit,dev,...}       -- Set the state of your push to being at the given value
.in                        -- Mark yourself as having your code checked in
.good                      -- Mark yourself as all-good in the current push state
.uhoh                      -- Mark yourself as not-all-good in the current push state
.done                      -- Mark the head of the push queue as done
.nevermind                 -- Hop out of the queue
.pop                       -- Remove your last entry in the queue
.hold "message"            -- Set a hold with a message. Don't forget the quotes.
.unhold                    -- Release the hold
.message "message"         -- Set a message. Don't forget the quotes.
.message -                 -- Remove the message
.kick username             -- Punt someone from the queue
.drive                     -- Make yourself the leader of the first push group you're in
.config                    -- Get a link to the PushBot settings page
.help                      -- Show Help Information

Join #pushbot to play around with pushbot and see how it works.

An Example

Let's say you're in an IRC channel named #push and it has the initial topic "clear". PushBot can help organize a push queue.

                                       TOPIC: clear
  alice> .join                         TOPIC: alice
    bob> .join with alice              TOPIC: alice + bob
pushbot> alice, bob: You're up         TOPIC: alice + bob
    bob> .good                         TOPIC: alice + bob*
  alice> .good                         TOPIC: alice* + bob*
pushbot> alice, bob: Everyone is ready TOPIC: alice* + bob*
  carol> .join                         TOPIC: alice* + bob* | carol
  alice> .at preprod                   TOPIC: <preprod> alice + bob | carol
  alice> .good                         TOPIC: <preprod> alice* + bob | carol
    bob> .good                         TOPIC: <preprod> alice* + bob* | carol
pushbot> alice, bob: Everyone is ready TOPIC: <preprod> alice* + bob* | carol
  alice> .at prod                      TOPIC: <prod> alice + bob | carol
  alice> .good                         TOPIC: <prod> alice* + bob | carol
   dave> .join                         TOPIC: <prod> alice* + bob | carol + dave
    bob> .good                         TOPIC: <prod> alice* + bob* | carol + dave
pushbot> alice, bob: Everyone is ready TOPIC: <prod> alice* + bob* | carol + dave
  alice> .done                         TOPIC: carol + dave
pushbot> carol, dave: You're up        TOPIC: carol + dave

Configuring PushBot For Your Handle

You can modify a few settings within PushBot with respect to your IRC handle.

  • You can tell PushBot to try to be quiet when you're driving
  • You can have PushBot send you Notifo notifications when you're at the head of the queue

To configure PushBot, head to http://[pushbot-hostname]:8080/

Tricks For Suppressing Pushbot Topic Change Spam

Colloquy

Edit the CSS for your chosen style. If you're using "DecafBland - Inverted", for instance, you should open the file

/Applications/Colloquy.app/Contents/Resources/Styles/DecafBland.colloquyStyle/Contents/Resources/Variants/Inverted.css

and add the line

.event { display: none; }

That'll get rid of all event messages (joins, parts, topic changes), and could be too much, so you might want to make a variant of your style just for #push.

Limechat

Edit the CSS for your chosen style, for instance

/Applications/LimeChat.app/Contents/Themes/Limelight.css

and add the lines

html[channelname="#push"] div[type=topic] {
    position: fixed;
    top: 0;
    left: 0;
    padding-left: 0 !important;
    background: #000;
    width: 100%;
}

That'll move all topics in the #push channel to a line on the top of the channel, with new topics covering up old topics.

IRSSI

/ignore -channels #push * TOPICS

WeeChat

/filter add hush_pushbot irc.host.#push irc_topic pushbot

Other Clients

If you have instructions for other clients, send them to me and I'll add them.

Hacking

To build and run PushBot, run

> cd PushBot
> mvn test
> mvn package
> java -jar target/PushBot.jar --name pushbot --channels "#push,#pushbot" --irc-host "irc.network.net" --irc-port 6667 --irc-pass "password"
Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].