My list of favorite new things at Atlassian since returning from 3 months leave is as follows: my adjustable-height desk, Hipchat video, and (to the surprise of exactly no-one) Bamboo’s ever-more-streamlined deployment flow. Having accurate information about what’s been deployed, what’s about to be deployed, and what state a rollback would leave you in can be the difference between happy teams and teams that cancelled their dinner plans Friday night because they were stuck at the office (*ahem*). And getting this information is easier than ever before.
If you’ve ever missed date night because you were struggling to answer…
- What exactly are we shipping in this release?
- What functionality would we lose if we roll back the release that just broke a bunch of stuff?
- Has my super-important issue been deployed to production?
…then this blog is for you.
A refresher on releases
Any successful build can be deployed by Bamboo. All the artifacts produced by the build, the associated Jira issues, commits, and test results for those commits are collected into a ball of stuff we call a “release”. Each release gets a unique name for easy identification, which can be generated and incremented automatically, or, designated by the user when it is created. We know a lot of you don’t deploy every single successful build for testing, but don’t worry, we’ve got your back. We roll up all the associated issues, commits, and test results not since the last build, but since the last release.
Bamboo also holds information about your environments. In much the same way that you set up CI builds, you use tasks to define the steps needed to make a successful deploy to each environment. As releases are promoted through your environments, Bamboo shows you what’s been deployed where, when, and by whom (and don’t forget you have the option to extend or limit the “by whoms” for each environment as you see fit).
Getting back to date night…
Picture this: it’s 6:42, and you’re still at the office because you’re meeting your sweetie for dinner at 7 and the restaurant is just around the corner. Your teammates have all left because, unlike you, they have no sense of romance and thus no dinner date. Since you were gonna be at your desk anyway, you volunteered to handle the production release scheduled for that evening. You’re just about to kick that off and head out to enjoy some work/life balance when, “PING!”, an IM pops up from your department head (who evidently also lacks a dinner date).
“I saw your team was able to ship this release a few days ahead of schedule – nicely done!”
“I’m so impressed that I want to showcase this in our executive sync-up tomorrow at 5. Can you send me the run-down of everything you’re shipping?”
“Sure thing. You’ll have it by lunch.”
“No, that’s 5am. So the Shanghai and New York execs can join too.”
“So you need it before I leave tonight…?”
<insert screeching-to-a-halt sound effect here>
This is where you might think, “That’s what I get for volunteering. No good deed goes unpunished.”, but with Bamboo in your corner, you don’t even break a sweat. The new deployment preview screen summarizes the changes since your last production deploy, and with one click, you’ve got the entire list of user stories and bug fixes you’re shipping. By the time your deploy finishes at 5:57, you’ve already sent off a summary of the release’s highlights, complete with a screenshot of the entire issue list (because, hey, 91 issues is impressive).
Executive? Satisfied. Date night? Saved.
Now picture yourself a week later
Date night was so awesome, you’re doing it again this week – same time, same place. But you’re older and wiser now, so you started this week’s release a little earlier, just in case. And good thing, too, because moments after the deploy completed, the error graphs for one of your server farms shot into the stratosphere. It basically exploded. You shut the farm down to staunch the bleeding, but without that capacity, traffic is grinding to a halt and users are dropping off like flies. After some initial troubleshooting, you’re loosing hope of getting a roll-forward fix in quickly, and with a sigh, get your project manager on IM to discuss rolling back.
“Agreed. That’s our best option at this point. As soon as you roll back, I need you to send an update to customer support letting them know exactly what functionality we lost.”
The time is now 6:49.
Once again, Bamboo’s deployment preview comes through in the clutch because you’re one click away from the list of issues you’re about to un-deploy. While the build rolls back and servers recover, you assume the role of the support team’s new hero, cataloging all the features and fixes users will now not have.
External stakeholders? Dazzled. Dinner? Ended with breakfast.
Fast-forward to next release
The date night tradition continues, but you’re no fool. This week it’s someone else’s turn to handle it. You’re standing at the bathroom sink, wondering whether you’re overdressed, when you get a text.
“Prod unstable after release. Any ideas?”
You feel your stomach drop in a wave of dread. That huge refactor you’re working on is all kinds of incompatible with the production DB schema – it didn’t slip into the release, did it? That would seriously ruin this evening. You flip over to Jira on your phone (Thanks, Jira Mobile Connect!) and pull up the issue for your refactoring work. You always include the relevant issue key in commit messages, and Bamboo sends build and deploy results back to the issue, so it’s easy to see the development status of any given issue.
Phew. “Deployed to Staging”. Whatever is causing trouble on prod, it’s almost certainly not your changes.
You? Off the hook. Date night? Back on!
As someone with virtually no social life at the moment, I understand how tragic is it to have to cancel date night. Or poker night. Or team lunch at that place with all the random junk on the walls. When you work hard during the day, you deserve tools that help you get that work done faster so you can get on with the rest of your life.
Check out Bamboo 5.4, and be a work/life hero.