📜 ⬆️ ⬇️

Workflow automation for a small development team (Part 1)

Practically in all places of my work as a programmer for development, only two products were used: bug tracking and version control system. Most often these were Atlassian Jira and SVN. In principle, the presence of these two systems finely organizes the communication of all participants in the development process and positively affects the quality of the department and product.

About 4 years ago I was morally, and then I actually grew to the level of a Timlide. Views have become wider and higher current processes. Different thoughts about motivation, optimization, automation and other things began to come to mind. In this article, I would like to share experience from the category of technical competence of a tmlid: how to automate daily processes (for example, automatic product assembly, putting out, documenting, rights management, etc., etc.).

After the third page of the text of my article, I decided to divide it into 2 blocks:

')

So. Software setting accompanying the development process




Crowd and Jira


The first was Crowd - account manager. I crossed and synchronized it with Jira. Crowd sucked all the groups and all the users of Jira. In Jira, I did read / write work with the Crowd directory (since it is more convenient to add a new user through Jira than through Crowd).
In Jira, all users are divided into groups:


In each project, Jira allows you to configure 3 roles. I brought the project1-users group to the USERS role, brought project1-developers to the DEVELOPERS role, and brought the PM (project manager) to the ADMINISTRATORS role.

In short, users in a group can only create puzzles and watch them, developers can edit and solve them, and administrators manage versions, components, can delete or edit someone else's comments or tasks.

Confluence


I consider this product the most successful among all kinds of knowledge bases. After reading a lot of articles and comparing different systems, I came to the conclusion that Confluence among them is the undisputed leader.

In it I created different Spaces:


The most important and pleasant thing is that Confluence is able to beautifully export stand-alone HTML pages in any of its articles.

All our help is stored in Confluence in the form of a hierarchical structure of articles. At the end of the version with one click you get a pack of HTML files that link to each other. We simply copy all this pleasure into the project and release it. And because we have help page by page (and not all in one huge file), easily maintained and always available online for the whole team (and not somewhere in someone in some folder).

Each Jira project and space confluence are connected. In the article with the statement there is a link to the problem and vice versa.

Bitbucket


For the storage of sources, we historically used SVN. The influence of new technologies did not pass by, and of course the choice fell on git (best practices in any way).

Since I am a programmer and not a sysadmin, I didn’t master the installation of a pure guitar. So I took the finished GitBlit package ... but soon I was disappointed in it. As a result, all transferred to GitLab.

The year of work and 12 simultaneous projects made themselves felt. The server began to sag under the weight of Ruby. In addition, very weak compatibility with Atlassian products has affected.

At that time I noticed Stash. In its pure form under Linux, I, unfortunately, did not find it, for which I installed it as part of Bitbucket. And rushed!

Created projects and repository in each. He gave full rights to each PM to his project (now he can create repositories in his project as much as he wants). In the repository, the master branch issued only the rights of the lead and, by default, set the dev branch.

Crossed Bitbucket with Jira and now in each task there is a list of all commites on the task. And from komitov can go on puzzles.

Fisheye and crucible


I read somewhere that Crucible can be built into Stash. But after studying in detail the already configured Bitbucket, I did not find anything like it. And since CodeReview is a mandatory step in our Workflow, we had to install Fisheye. Really very convenient thing, but having Bitbucket, you could do without it.

When we had GitLab, adding repositories to Fisheye was really moro ... A bunch of settings, key generation, left users ... With Bitbucket, everything went smoothly. Crossed Fisheye and Bitbucket and in Fisheye a list of all repositories with the “add” button appeared.

He created projects, indicated development teams in them, those in Jira for these projects, indicated a repository and crossed each one with his project in Jira. In Jira, on the contrary, in each project I pointed out links to Fisheye and Crucible and the path to the repository.

Now in each task there are task commites not only from Bitbucket, but also from Fisheye. Beztolkovo, of course ... but nothing terrible. But in every task you can now immediately see Review and its status!

Jenkins


That seems to be all, but no! It is necessary this all economy as it is automated to collect. I wanted to screw Bamboo for a very long time, but it looks flawed compared to Jenkins. In Jenkins, I was able to customize the auto-assembly of everything else with mother of pearl buttons. In Bamboo, it's not like that. The community is weak, there are few plug-ins, you can only steer by executing console commands. I will not list the shortcomings. In the beginning I set up a Delphi project assembly, but then switched to the web and the assemblies became simple - I pulled it out, I uploaded it to ftp, I noted it in Jira and I sent the letters. I'll think, maybe let's move to Bamboo.

So crossing Jenkins with no one did not. It seems like there is no need. No one is interested in the problem how many times she was going. The only thing is that it was in the Jenkins itself that it installed the Jira plugin so that when the task is assembled, it automatically moves to another WorkFlow step.

And it is important that all the above products must be configured on Crowd. Unified accounting in all these systems is really convenient. When hiring a new member of a team, it is enough just to enter it in Jira and indicate its group project and he has access to everything. Similarly, with the dismissal. In one place turned off and there is no access anywhere.

Sysadmin corner


The server we have is Xeon X3430 4CPUs x 2.4 Ghz, 8 GB, 1TB

At the beginning, I raised Windows Server and on it all these products immediately + Ubuntu for GitLab. The server did not master, once every two hours I just hung for 10 minutes.
After that, I decided to separate by different virtuals. Here's what happened:

Gateway - to access the Internet (4 cores, 4GB of RAM) - I already got this virtual machine from the admin who initially configured this server.
Jira - 2 cores, 2GB of RAM
Confluence - 2 cores, 2GB of RAM
Bitbucket & Jenkins - 2 cores, 2GB of RAM
Crowd & FishEye & FTP - 2 cores, 2GB of RAM
All virtuals on Linux Debian 8.2

Now all these products fly, and there are no freezes, as before.

On the Gateway virtual, I forward two ports so that Jira and Confluence are accessible from the outside. Thinking about still forwarding the port to access Git. But to make it more sekurno, only ssh access.

Results


That server and all the necessary products for the full automation of workflow development. In the next part, I will try to describe in detail how these all products interact daily in the development process.

PS I considered it unnecessary to describe the detailed configuration of each Atlassian product due to the fact that the article would become very long and complicated. If a respected community has a desire to get acquainted with my experience, I will be happy to describe these nuances of settings.

Source: https://habr.com/ru/post/270299/


All Articles