This is a blog post of Hiroki (@kompiro) from Astah dev team.
At Java Day Tokyo 2015 held here in Japan a few weeks ago, Kenji introduced how we develop Astah and what kind of tools we use, there was a nice amount of interest, so I’ve decided to post it here on this Blog.
Main tools that Astah team uses
- Idobata: Chat app for sharing status of tasks within team
- Trac: Wiki & Ticket management
- GitHub: For Source Code Management and also for code review
- Jenkins: For CI and building installers
- VMWare ESXi: For multiple-virtual machine runs
- Trello: As a daily online-Kanban board to show the project status and also used in retrospective meeting
- Hubot: ChatOps – very hard-working guy in our team to move our project smoothly!
- Raspberry Pi: For taking a picture of the kanban board in the office with camera – shots at 10 every morning
- Google Apps: For storing those photos in Google Drive. Seeing those 5-day of Kanban board photos helps us find where tasks tend to be piled up.
- Status Management – Susumu: Github issue-management tool which we developed as Chrome extension.
- Kanban: For visualizing the project – sharing tasks of dev team and also support team
Team Introduction – what we do
For people who doesn’t know about us, Change Vision, Inc. or Astah, we develop “Astah“, a Java-based modeling tool with several editions (UML, SysML and Goal Structuring Notation..etc.); this tool is used by companies around the world and dev teams are based in Tokyo and Fukui offices in Japan. So we need a system that helps us collaborate between our two offices.
Tool Introduction – how we use them
Idobata is a chat app developed by our parent company, Eiwa System management but that is not why we are using it. This tool is just simple to use. Slack is another popular chat app. Slack has many features and can easily integrate with various tools almost without doing nothing. But I love customizing a set of tools to collaborate each other to make them the most effective way for each project, so I tend to like tools with less features and more potentials for customization. That is exactly what Idobata is.
I see JIRA and Redmine are getting popular. Trac does not have many features but is very easy to customize just like they say – “Trac is a minimalistic approach to web-based management of software projects.” I am a long time user of Trac myself and creating plugins to let it integrate with other tools such as one that passes information from Trac to Idobata.
We don’t manage tickets on GitHub as we find that it is not easy to view all the issues of project on it.
Yes, we all know the GitHub – what I like about Git is that it supports the workflow with pull request, and is very useful for a code review, but it also works good as a repository browser. After we make pull requests, we use labels to manage the review status. I plan to write more about the flow we use with Github in other posts.
After pushing in GitHub, Jenkins automatically does CI but also builds installers for each OS using 4 buildslaves. It needs only one button to build installers and also we use Jenkins to deploy them on each server.
Lately I often see the usage of Jenkins with Hubot to process jobs. But in our team, we have too many jobs to get an advantage of the usage yet.. so there is a room for an improvement with Jenkins in our team.
As you know, Astah works on multi-platforms (Windows, Mac and Linux). There are more light-weight virtual environment we can easily try on such as Vagrant and Docker but we are using this server due to our resource and also some of our team member want to share the same machine environments.
This is a very hard working hobbit in our team – executing the commands that are thrown on Idobata based on all the other information which was also thrown on Idobata from other services. For example, when this hobbit sees a label on the pull request on GitHub, he moves the card on Trello to the right status accordingly. Yes, that’s what we call ChatOps – and in my future posts, I will show the Hubot scripts that we are using.
Astah team has been using Kanban to visualize the project status. One of the most powerful advantages we can get with Kanban is how effectively we can see where and in what status the tasks are piled and then we will know where the bottleneck is, then by removing it we can increase the throughput overall. And this is what we do. We take a picture of Kanban board at the same time (10am) every morning and review those photos at our retrospective meeting on every Friday evening. Seeing the Kanban photos of 5 days promotes the discussion for ideas to improve the spot where projects or tasks would get stuck. We are using Raspberry Pi for the automated snap of this Kanban board. And of course we can take the photo anytime manually just by typing the command
bot shot on Idobata.
we are very lucky to live in this era where it is easy to make such system with reasonable cost.
We use Google Apps to use Gmail and Google Drive to share all the internal documents and also to store these Kanban photos automatically.
Status Management Susumu-kun
When a pull request is made on GitHub, we move to check and accept that the modification is made correctly as we planned. And this
Status Management Susumu-kun comes handy in this flow. (Susumu-kun is a male name in Japanese which means “progress”. This is a simple utility to change the status of each task, but makes the workflow very smoothly. This was an idea from Yuri.
At last, Kanban. We use Kanban not only for visualizing the development status, we also use it for visualizing all the bug reports and feature requests we receive from or customers daily. Every morning we have a morning stand-up meeting with dev team and support staff in front of this Kanban board and share each members tasks of the day and also share voices that support team receive from customers directly to dev team members to discuss the best solutions for each customer.
How we collaborate these tools
The top image shows all the relations among all the tools I introduced here, and here are the images of tools cut by scenes/purposes.
CI and Installer building by Jenkins
When someone pushes on GitHub, Jenkins does CI and shows its result on Idobata. Jenkins and other tools are ran by ESXi.
We manage the whole project in Trac, push to each repository and then tickets will be automatically closed in Trac when PullRequest is merged. Kanban visualizes the whole view of the team and project status, requests from customers for both dev team and support team.
Any changes from GitHub and Trac are notified on Idobata on real-time and Hobot monitors every change on Idobata and then automatically makes updates on Trell accordingly.
Automated-snap of Kanban by Hubot
The Hubot runs on Raspberry Pi. RasPi takes a shot of Kanban board at 10:00 every morning and uploads the photo onto Google Apps automatically.
That’s all for today – will write more details for each tool and process in the future posts – thank you for reading!
PS: All the images are made by Astah using customized icons related to stereotypes.
One thought on “How we use Jenkins, Trello, Raspberry Pi, etc. to Build our Product, Astah”