Notifications
How the computer gets you to do what you should be doing now
Overview
The objective of this page is to describe how to setup a way for you to receive and manage the deluge of notifications coming in from various sources.
I want you to feel confident that you’ve mastered this skill. That’s why this takes a hands-on approach where you type in commands and we explain the responses and possible troubleshooting. This is a “deep dive” because all details are presented.
Like a good music DJ, I’ve carefully arranged the presentation of concepts into a sequence for easy learning, so you don’t have to spend as much time as me making sense of the flood of material around this subject.
Sentences that begin with PROTIP are a high point of this website to point out wisdom and advice from experience. NOTE point out observations that many miss. Search for them if you only want “TL;DR” (Too Long Didn’t Read) highlights.
Stuck? Contact me and I or one of my friends will help you.
Event Notifications
Most people can only handle so much distraction before they feel overwhelmed and thus become less effective.
Several researchers have concluded that “Multi-tasking is making you stupid”. People who think they can multi-task are actually less effective than they think.
Being sent notifications too frequently inures one to paying attention, which reduces the value of notifications.
To avoid “notification fatique”, one needs to be judicious about how each condition is communicated, what communication channel to use, to whom, etc.
The strategy
-
Rank the importance of the subject of alerts. Some responses may not be appropriate for all. For example, automated email filters send some emails into a spam folder that one may never read. The condition of core modules or components on which others depend, revenue-generating processes, and high-value customers and vendors are often treated with higher regard than others.
-
Identify the workflow (or pipeline) of tasks so that the next step is more obvious.
-
Identify what condition, event, or status relevant to each task. An example is the table of conditions below.
-
Identify the primary person or department who should respond to each combination of the above (importance or condition). Call centers have a front-line team that receives calls and emails from the public. They route calls to managers for callers asking for one.
They may be completely bypassed by organizations which pay for a license so they have use a secret contact information to go directly to the experts.
-
Determine what response actions should be taken for each combination of the above. Examples are in the table below.
-
Identify the medium of communication. For example, for immediate
-
Identify the secondary and tertiary responders to contact, and when they are contacted in case primary responders do not respond in time.
The above are the dimensions to consider when analyzing how to respond faster and better.
The strategy would need to be adjusted depending on how much attention each responder can provide at any given moment.
Condition - Response table
Here is an example of mapping conditions to responses for the default level of importance:
Condition | Response | by whom |
---|---|---|
Build Start | Watch if critical | - |
Aborted | Investigate | Developer |
Not Built | Delegate | Developer |
Failure | Diagnose | Lead Developer |
Success | Celebrate | Archive |
Unstable | Analyze patterns | Ops Engineer |
Back to Normal | Do follow-on tasks | Next person |
Repeated Failure | Troubleshoot | Tech lead |
Test Summary | Retrospective Review | Team, Manager |
The mode of communication would ideally be adjusted on the preference of each individual recipient.
Condition | Noisy | SMS | Slack | archive | |
---|---|---|---|---|---|
Build Start | - | - | - | - | all |
Aborted | - | - | - | - | all |
Not Built | - | - | all | - | - |
Failure | - | all | - | - | - |
Success | - | - | - | - | all |
Unstable | 1 | 2 | 3 | 4 | - |
Back to Normal | - | - | - | - | all |
Repeated Failure | - | 1 | 2 | all | - |
Test Summary | - | - | - | - | all |
An audible or visuble noise that’s difficult to ignore apart from computers and mobile devices should be part of the “arsenal” of communication devices for critical situations (like an air-raid siren).
The numbers in the chart above are for the importance level, with 1 being the highest.
Noisy Interrupt Scream
PROTIP: Sometimes, it is necessary to make a visible, auditory, or other physical human sense signal. This is not just to get the attention of someone with a disability. When people are watching a loud movie or have headphones on, how does someone interrupt for an important message?
- https://developer.artik.cloud/
How about configuring different sounds for different programs making noise to tell them apart?
Maybe different animals?
- Skype: Lions
- Slack: Donkeys
- Gitter.im: Monkeys
- Hipchat: Geese
- etc.
Build Start
PROTIP: It may not be necessary to receive a “Build Start” event announcement since notification of failure will be sent out. What should one do while the machine runs? Thus the wisdom of paying attention only to exceptions.
Aborted
If an Abort message occurs because of a manually initiated event, then it would be redundant to send a message to the initatior.
If an Abort message occurs shortly after manual initiation, the initiator is likely on the computer screen. So it can be sent to Slack.
Archive
Notifications are sent to archive to make history available for spotting trends over time as the basis for predictions.
PROTIP: PagerDuty is a company that claims it can provide a fine-grained management platform for notifications.
Hipchat
https://github.com/jlewallen/jenkins-hipchat-plugin
Slack on Jenkins
There are several other instant messaging services available: Hipchat, Microsoft Skype, Snapchat, Facebook WhatsApp, Yahoo Messenger, etc.
Let’s start with Slack, which is the darling in 2016.
-
Get a Slack account at https://slack.com
Once signed in:
-
Create a new channel for experimenation the first time you do this.
-
Go to the Jenkins integration page at
https://my.slack.com/services/new/jenkins-ciIf you’ve signed in, you’ll see the last channel you visited online.
-
Click the “Choose a channel” drop-down and
select “Privately to … (you)” while you’re developing. -
Click “Add Jenkins Integration” green button for instructions to follow.
Setup in Jenkins
-
Be in Jenkins > Manage Plugins > Available.
-
Search for “Slack Notification Plugin” at
https://wiki.jenkins-ci.org/display/JENKINS/Slack+Plugin -
Check the Install button for the plugin.
-
Search for “Global Slack Notifier” at
https://wiki.jenkins-ci.org/display/JENKINS/Slack+Plugin -
Click “Install without restart”.
After install:
Configure
-
Click on Manage Jenkins > Configure System.
-
Find the “Global Slack Notifier” Settings section
-
Copy and paste these values:
Team Domain:
intelligentworld
Integration Token:ETdv3TU4IDPGLnwZT5KZc66Z
-
Repeat the above Configure steps for each project.
-
In the Slack Notifications section, choose the events you’d like to be notified about, referencing the Conditions table you customized for your needs.
-
Click “Save Settings”.
-
Install this plugin on your Jenkins server.
-
Configure it in your Jenkins job and add it as a Post-build action.
-
Create an HPI file to install in Jenkins in target/slack.hpi.
mvn package