Pricing Adjustments for TeamCity Integration for Jira

June 30, 2022
#News
4 min

We would like to inform our community and the customers of the TeamCity for Jira Integration app of the upcoming price changes that will affect all hostings (Cloud, Server, and Data Center).

Since the first release of the app, we have extensively invested in the development of new features, provision of timely and effective support, and, of course, collaboration with you on improvements and adjustments within the app. 

Our operational costs have greatly increased since that time, and at the moment we are heavily developing the Data Center infrastructure to ensure the reliability and high performance of our app under any circumstances.

Over the years, we were working to improve services for you and provide the best quality for your satisfaction. Thus, we’ve decided to normalize the existing prices and, in particular, make the Cloud version of the app more cost-effective.

For all hostings, the price change will go into effect on August 1, 2022. Below are the new pricing models.

Cloud Pricing

Data Center Pricing

Server Pricing

Buy at today’s price

You can buy TeamCity for Jira Integration at the current price till August 1, 2022. To save up even more, go with 2 or 3-year licenses — the price will remain the same for the whole maintenance period.

But even after August 1, 2022, existing customers with commercial licenses get a 60-day grandfathering period (till September 30, 2022), so you’ll have 60 days more to renew your license for the old price.

Have questions?

Please, feel free to contact us if you have any questions or need our assistance.

How to integrate TeamCity 10 and Jira

May 12, 2016
#Integration#How To#Jira
3 min

Connect your Bitbucket to the TeamCity CI/CD server with TeamCity Integration for Bitbucket to run builds right from Bitbucket in one click, view build results, logs and artifacts right next to your code, and never lose time switching.

Atlassian JIRA has become, probably, the most popular bug tracker solution. It’s not surprising because it has a powerful set of features, flexible configuration and can be integrated with a variety of other solutions (especially developed by Atlassian). JIRA allows you to create different solutions for different tasks. It can be used for tracking simple home or family tasks (with a 10-user license that costs only $10), it can be also used for building a full-fledged enterprise task management and bug tracking solution with service desk. JIRA, starting from version 7, represents a platform for different applications. At the moment, there are three applications:

– JIRA Core – basic version of JIRA for tracking the tasks in the simple projects
– JIRA Software – old good JIRA that we know – with all its essentilal capabilities, including Kanban and Scrum
– JIRA Service Desk – service desk solution by Atlassian based on JIRA

TeamCity – one of the common and well-proven CI-solutions from JetBrains. It can be used by small teams of developers (there is a free version of TeamCity for small instances), but it also can be used as an enterprise CI-solution for the large companies. TeamCity allows you to automate build, test and deploy workflows.

We’re  using in StiltSoft both JIRA and TeamCity for a development process. We’re updating our JIRA and TeamCity instances every time when a new version is available and we haven’t had any problems yet. JIRA 7 was released by Atlassian last year, and now JetBrains team is preparing TeamCity 10 to release (EAP already available). Let’s sort out what’s new in TeamCity 10.

Continue reading “How to integrate TeamCity 10 and Jira”

Get Мaximum from TeamCity Integration through REST API

November 12, 2015
#How To#Jira#Integration
28 min

Connect your Bitbucket to the TeamCity CI/CD server with TeamCity Integration for Bitbucket to run builds right from Bitbucket in one click, view build results, logs and artifacts right next to your code, and never lose time switching.

Working in a team is a great challenge when you need close collaboration between different people of different occupations and specializations. This becomes a real pain when members of a team do not have direct communication or communication is complicated with external factors. Here come special collaboration platforms that leverage the gap between people and create a single environment for peer-to-peer interaction and efficient knowledge or information sharing.

Today we will try to review an environment of TeamCityJIRA and Confluence integrated into a single ecosystem for quick and easy data retrieval about builds and agents from TeamCity.

So what capabilities does this integration offer to the team of software developers? First of all, Confluence can be used as a collaboration platform listing the latest builds within the appropriate project and configuration. Project Managers and Team Leads can be always aware of the progress on the project and track the current activity on project development. JIRA can be used by developers and quality assurance engineers. Developers can track progress on issues and tasks, and quality assurance engineers can track the completion of development and proceed to testing of functionality.

TeamCity is already bundled with JIRA integration capabilities, but Atlassian JIRA does not have a native tool that can fetch build data and show it in JIRA issues, the same is true and for Confluence. The solution from StiltSoft team allows you to establish full-fledged integration between TeamCity, JIRA and Confluence, in addition to standard integration from JetBrains team available in Teamcity.

In our blog post we will show how you can create tools for fetching data from TeamCity via Rest API and showing this build data in some application.

Connecting to TeamCity Server

TeamCity provides REST API, which powerful capabilities can be used for fetching various data from TeamCity server. You need to send a HTTP request to REST API to fetch the required piece of TeamCity data. In order to get the requested piece of data you need to authorize on the server through one of the following ways:

  1. Basic HTTP Authentication – you need to provide the appropriate TeamCity username and password with the request. In this case, you need to include ‘httpAuth’ into your GET request: http://teamcity-server/httpAuth/app/rest/builds.
  2. Guest Authentication – you needn’t provide the valid username and password, just include ‘guestAuth’ into your GET request: http://teamcity-server/guestAuth/app/rest/builds.

Once your request has been processed, TeamCity server will return a piece of XML data, which you can further parse and output into your application.

Fetch Useful Build Data

First of all, TeamCity server stores a lot of build data, which is the point of interest #1 for you. Build data contains a lot of useful information about builds, their status, time for execution, completion status of tests and related issues in the issue tracking system. The best way is to fetch builds in batches – 20 or 50 builds per batch. You can use the following request to REST API of TeamCity server:

curl -D- -u guest:guest -X GET -H "Content-Type: text/xml" -k https://teamcity-server/httpAuth/app/rest/builds?locator=canceled:any,count:20,start:20,branch:(default:any)

You get a XML response with 20 builds, as follows:

<builds count="20" href="/httpAuth/app/rest/builds?locator=canceled:any,count:20,start:20,branch:(default:any)" nextHref="/httpAuth/app/rest/builds?locator=canceled:any,count:20,start:40,branch:(default:any)" prevHref="/httpAuth/app/rest/builds?locator=canceled:any,count:20,start:0,branch:(default:any)">
 <!--The piece of code is omitted -->
 <build id="6863" buildTypeId="SmartAttachments_Master" number="87" status="SUCCESS" state="finished" branchName="master" defaultBranch="true" href="/httpAuth/app/rest/builds/id:6863" webUrl="http://teamcity.stiltsoft.com/viewLog.html?buildId=6863&buildTypeId=SmartAttachments_Master"/>
 <build id="6862" buildTypeId="SmartAttachments_Master" number="86" status="SUCCESS" state="finished" branchName="master" defaultBranch="true" href="/httpAuth/app/rest/builds/id:6862" webUrl="http://teamcity-server/viewLog.html?buildId=6862&buildTypeId=SmartAttachments_Master"/>
 <build id="6861" buildTypeId="SmartAttachments_Master" number="85" status="SUCCESS" state="finished" branchName="master" defaultBranch="true" href="/httpAuth/app/rest/builds/id:6861" webUrl="http://teamcity-server/viewLog.html?buildId=6861&buildTypeId=SmartAttachments_Master"/>
 <build id="6860" buildTypeId="SmartAttachments_Master" number="84" status="SUCCESS" state="finished" branchName="master" defaultBranch="true" href="/httpAuth/app/rest/builds/id:6860" webUrl="http://teamcity-server/viewLog.html?buildId=6860&buildTypeId=SmartAttachments_Master"/>
 <build id="6859" buildTypeId="SmartAttachments_Master" number="83" status="SUCCESS" state="finished" branchName="master" defaultBranch="true" href="/httpAuth/app/rest/builds/id:6859" webUrl="http://teamcity-server/viewLog.html?buildId=6859&buildTypeId=SmartAttachments_Master"/>
 <!--The piece of code is omitted -->
 <build id="6856" buildTypeId="SmartAttachments_Master" number="82" status="SUCCESS" state="finished" branchName="master" defaultBranch="true" href="/httpAuth/app/rest/builds/id:6856" webUrl="http://teamcity-server/viewLog.html?buildId=6856&buildTypeId=SmartAttachments_Master"/>
 <build id="6855" buildTypeId="SmartAttachments_Master" number="81" status="SUCCESS" state="finished" branchName="master" defaultBranch="true" href="/httpAuth/app/rest/builds/id:6855" webUrl="http://teamcity-server/viewLog.html?buildId=6855&buildTypeId=SmartAttachments_Master"/>
 <build id="6854" buildTypeId="SmartAttachments_Master" number="80" status="SUCCESS" state="finished" branchName="master" defaultBranch="true" href="/httpAuth/app/rest/builds/id:6854" webUrl="http://teamcity-server/viewLog.html?buildId=6854&buildTypeId=SmartAttachments_Master"/>
</builds>

You can further parse this build data and use it for output to the interface of your application.

Additionally, you can get detailed information about each build from the batch by making the following request:

<code class="java plain" style="color: #000000 !important;">curl -D- -u guest:guest -X GET -H </code><code class="java string" style="color: #003366 !important;">"Content-Type: text/xml"</code> <code class="java plain" style="color: #000000 !important;">-k https:</code><code class="java comments" style="color: #008200 !important;">//teamcity-server/httpAuth/app/rest/builds/id:378626</code>

The XML response you get will be the following:

<build id="6854" buildTypeId="SmartAttachments_Master" number="80" status="SUCCESS" state="finished" branchName="master" defaultBranch="true" href="/httpAuth/app/rest/builds/id:6854" webUrl="http://teamcity-server/viewLog.html?buildId=6854&buildTypeId=SmartAttachments_Master">
 <statusText>Success</statusText>
 <buildType id="SmartAttachments_Master" name="Master" projectName="Smart Attachments" projectId="SmartAttachments" href="/httpAuth/app/rest/buildTypes/id:SmartAttachments_Master" webUrl="http://teamcity-server/viewType.html?buildTypeId=SmartAttachments_Master"/>
 <queuedDate>20141128T133710+0300</queuedDate>
 <startDate>20141128T133710+0300</startDate>
 <finishDate>20141128T133725+0300</finishDate>
 <triggered type="vcs" details="jetbrains.git" date="20141128T133710+0300"/>
 <lastChanges count="1">
 <change id="4927" version="f6b67f30820c02182b24ca9d596d24a0fb74b602" username="akhaneev" date="20141128T132640+0300" href="/httpAuth/app/rest/changes/id:4927" webUrl="http://teamcity-server/viewModification.html?modId=4927&personal=false"/>
 </lastChanges>
 <changes href="/httpAuth/app/rest/changes?locator=build:(id:6854)"/>
 <revisions count="1">
 <revision version="f6b67f30820c02182b24ca9d596d24a0fb74b602">
 <vcs-root-instance id="541" vcs-root-id="SmartAttachments_HttpsStashStiltsoftComScmAcaAttachmentCategoryAddOnGit" name="https://stash-server/scm/aca/attachment-category-add-on.git" href="/httpAuth/app/rest/vcs-root-instances/id:541"/>
 </revision>
 </revisions>
 <agent href="/httpAuth/app/rest/agents/id:2" id="2" name="tm7" typeId="2"/>
 <artifacts href="/httpAuth/app/rest/builds/id:6854/artifacts/children"/>
 <relatedIssues href="/httpAuth/app/rest/builds/id:6854/relatedIssues"/>
 <statistics href="/httpAuth/app/rest/builds/id:6854/statistics"/>
</build>

If you want to find out the related issues, you can perform an additional request which fetches information about the related issues in the issue tracker (for example, YouTrack or JIRA):

curl -D- -u guest:guest -X GET -H "Content-Type: text/xml" -k https://teamcity-server/httpAuth/app/rest/builds/id:378549/relatedIssues

You will receive the following XML response from TeamCity server:

<issuesUsages count="1" href="/httpAuth/app/rest/builds/id:6854/relatedIssues">
 <issueUsage>
 <changes count="1">
 <change id="4927" version="f6b67f30820c02182b24ca9d596d24a0fb74b602" username="akhaneev" date="20141128T132640+0300" href="/httpAuth/app/rest/changes/id:4927" webUrl="http://teamcity-server/viewModification.html?modId=4927&personal=false"/>
 </changes>
 <issue id="SMART-40" url="https://jira-server/browse/SMART-40"/>
 </issueUsage>
</issuesUsages>

You can use the received project key and issue number for mapping to the particular issue in the issue tracking system.

Quality assurance engineers can easily monitor the status of each issue and can instantly proceed to functionality testing once the corresponding build with the fix is complete. So they needn’t wait for the development team when someone will resolve this issue in the issue tracking system.

TeamCity Integration through REST API

Find Out Available TeamCity Agents

You can also retrieve information about build agents and get the list of the currently active agents. This can be useful for the quality assurance engineer and developers to track availability of the specific build agent at the definite period of time. You can make the following request to display the list of available build agents:

curl -D- -u guest:guest -X GET -H "Content-Type: text/xml" -k  https://teamcity-server/httpAuth/app/rest/agents

You will get the following XML data about build agents:

<agents count="2" href="/httpAuth/app/rest/agents">
 <agent href="/httpAuth/app/rest/agents/id:4" id="4" name="teamcity2k8" typeId="4"/>
 <agent href="/httpAuth/app/rest/agents/id:2" id="2" name="tm7" typeId="2"/>
</agents>

If needed, you can get detailed information about a specific agent, you should use the following request with the ID of the required agent:

curl -D- -u guest:guest -X GET -H "Content-Type: text/xml" -k  https://teamcity-server/httpAuth/app/rest/agents/id:4

You will receive the following XML data about the agent with the list of its requirements for running builds:

<agent href="/httpAuth/app/rest/agents/id:4" id="4" name="teamcity2k8" typeId="4" connected="true" enabled="true" authorized="true" uptodate="true" ip="192.168.0.31">
 <properties count="145">
 <property name="DotNetFramework2.0.50727_x64_Path" value="C:\Windows\Microsoft.NET\Framework64\v2.0.50727"/>
 <property name="DotNetFramework2.0.50727_x86_Path" value="C:\Windows\Microsoft.NET\Framework\v2.0.50727"/>
 <property name="DotNetFramework2.0_x64" value="2.0.50727"/>
 <!-- The piece of code is omitted -->
 <property name="DotNetFramework2.0_x86_Path" value="C:\Windows\Microsoft.NET\Framework\v2.0.50727"/>
 <property name="teamcity.tool.maven3" value="C:\BuildAgent\tools\maven3"/>
 <property name="teamcity.tool.maven3_1" value="C:\BuildAgent\tools\maven3_1"/>
 <property name="teamcity.tool.maven3_2" value="C:\BuildAgent\tools\maven3_2"/>
 </properties>
 <pool id="0" name="Default" href="/httpAuth/app/rest/agentPools/id:0"/>
</agent>

Developers can easily view which build agents are currently in use by other projects and start building the project with another agent. The list of agents can be shown as a gadget on JIRA dashboard or placed as a macro on some Confluence page.

TeamCity Integration through REST API

Optionally, you can also get information about the agent pools. Agent pool is a separate group of build agents that are assigned to the specific project for running builds. Any project can be assigned to multiple agent pools. Each build agent can be only assigned to one agent pool. You can run project builds only on build agents from pools assigned to the project. By default, all newly authorized agents are included into the Default pool. Agent pools allow you to bind specific agents to specific projects.

Just perform the following request:

curl -D- -u guest:guest -X GET -H "Content-Type: text/xml" -k https://teamcity-server/httpAuth/app/rest/agentPools/id:0

In the outputted listing you will get the following XML data:

<agentPool id="0" name="Default" href="/httpAuth/app/rest/agentPools/id:0">
 <projects count="15">
 <project id="TableFilter" name="TableFilter" parentProjectId="_Root" href="/httpAuth/app/rest/projects/id:TableFilter" webUrl="http://teamcity.stiltsoft.com/project.html?projectId=TableFilter"/>
 <project id="_Root" name="<Root project>" description="Contains all other projects" href="/httpAuth/app/rest/projects/id:_Root" webUrl="http://teamcity.stiltsoft.com/project.html?projectId=_Root"/>
 <project id="InPlaceEditorforConfluence" name="InPlace Editor for Confluence" parentProjectId="_Root" href="/httpAuth/app/rest/projects/id:InPlaceEditorforConfluence" webUrl="http://teamcity.stiltsoft.com/project.html?projectId=InPlaceEditorforConfluence"/>
 <!-- The piece of code is omitted -->
 <project id="ConfluenceTalkPlugin" name="Confluence Talk Plugin" parentProjectId="_Root" href="/httpAuth/app/rest/projects/id:ConfluenceTalkPlugin" webUrl="http://teamcity.stiltsoft.com/project.html?projectId=ConfluenceTalkPlugin"/>
 <project id="SmartAttachments" name="Smart Attachments" parentProjectId="_Root" href="/httpAuth/app/rest/projects/id:SmartAttachments" webUrl="http://teamcity.stiltsoft.com/project.html?projectId=SmartAttachments"/>
 <project id="NoEmailStorm" name="No Email Storm" parentProjectId="_Root" href="/httpAuth/app/rest/projects/id:NoEmailStorm" webUrl="http://teamcity.stiltsoft.com/project.html?projectId=NoEmailStorm"/>
 </projects>
 <agents count="2">
 <agent href="/httpAuth/app/rest/agents/id:4" id="4" name="teamcity2k8" typeId="4"/>
 <agent href="/httpAuth/app/rest/agents/id:2" id="2" name="tm7" typeId="2"/>
 </agents>
</agentPool>

The listing shows the following information:

  • projects that can be built by the agents from the pool
  • list of agents within the pool

Discover Your Projects in TeamCity

TeamCity API allows you to retrieve information about projects by performing the following request to the server:

curl -D- -u guest:guest -X GET -H "Content-Type: text/xml" -k https://teamcity-server/httpAuth/app/rest/projects/

The response will include the list of projects available in TeamCity, as follows:

<projects count="15" href="/httpAuth/app/rest/projects">
 <project id="AWEGRAPHS" name="Awesome Graphs for Stash" parentProjectId="_Root" href="/httpAuth/app/rest/projects/id:AWEGRAPHS" webUrl="http://teamcity.stiltsoft.com/project.html?projectId=AWEGRAPHS"/>
 <!-- The piece of code is omitted -->
 <project id="SmartAttachments" name="Smart Attachments" parentProjectId="_Root" href="/httpAuth/app/rest/projects/id:SmartAttachments" webUrl="http://teamcity.stiltsoft.com/project.html?projectId=SmartAttachments"/>
 <project id="TeamCityIntegrationLibrary" name="TeamCity Connector" parentProjectId="JiraTeamCityIntegration" href="/httpAuth/app/rest/projects/id:TeamCityIntegrationLibrary" webUrl="http://teamcity.stiltsoft.com/project.html?projectId=TeamCityIntegrationLibrary"/>
 <project id="ConfluenceTeamCityIntegration" name="TeamCity Integration for Confluence" parentProjectId="JiraTeamCityIntegration" href="/httpAuth/app/rest/projects/id:ConfluenceTeamCityIntegration" webUrl="http://teamcity.stiltsoft.com/project.html?projectId=ConfluenceTeamCityIntegration"/>
 <project id="JiraTeamCityIntegration_TeamCityIntegrationForJira" name="TeamCity Integration for JIRA" parentProjectId="JiraTeamCityIntegration" href="/httpAuth/app/rest/projects/id:JiraTeamCityIntegration_TeamCityIntegrationForJira"webUrl="http://teamcity.stiltsoft.com/project.html?projectId=JiraTeamCityIntegration_TeamCityIntegrationForJira"/>
 <project id="BambooVMwarePlugin" name="Virtual Agents for Bamboo" parentProjectId="_Root" href="/httpAuth/app/rest/projects/id:BambooVMwarePlugin" webUrl="http://teamcity.stiltsoft.com/project.html?projectId=BambooVMwarePlugin"/>
</projects>

Additionally, you can also fetch data about the project by entering the corresponding project name into the request:

curl -D- -u guest:guest -X GET -H "Content-Type: text/xml" -k https://teamcity-server/httpAuth/app/rest/projects/id:Project_name

You will get the following XML listing:

<project id="SmartAttachments" name="Smart Attachments" parentProjectId="_Root" href="/httpAuth/app/rest/projects/id:SmartAttachments" webUrl="http://teamcity.stiltsoft.com/project.html?projectId=SmartAttachments">
 <parentProject id="_Root" name="<Root project>" description="Contains all other projects" href="/httpAuth/app/rest/projects/id:_Root" webUrl="http://teamcity.stiltsoft.com/project.html?projectId=_Root"/>
 <buildTypes count="2">
 <buildType id="SmartAttachments_Master" name="Master" projectName="Smart Attachments" projectId="SmartAttachments" href="/httpAuth/app/rest/buildTypes/id:SmartAttachments_Master" webUrl="http://teamcity.stiltsoft.com/viewType.html?buildTypeId=SmartAttachments_Master"/>
 <buildType id="SmartAttachments_MasterIt" name="Master IT" projectName="Smart Attachments" projectId="SmartAttachments" href="/httpAuth/app/rest/buildTypes/id:SmartAttachments_MasterIt" webUrl="http://teamcity.stiltsoft.com/viewType.html?buildTypeId=SmartAttachments_MasterIt"/>
 </buildTypes>
 <templates count="0"/>
 <parameters count="0" href="/app/rest/projects/id:SmartAttachments/parameters"/>
 <vcsRoots count="1" href="/httpAuth/app/rest/vcs-roots?locator=project:(id:SmartAttachments)"/>
 <projects count="0"/>
</project>

The XML output will include the following information:

  • project name
  • parent project (if applicable for the current project)
  • list of the latest build types of the project
  • project description

The project manager or team lead can get a simple picture of the project development in JIRA. The project will show the listing of builds and their relations to the created JIRA issues.

TeamCity Integration through REST API

Alternatively, the project manager can use a macro on Confluence page and view the committed code changes per branch.

confluence_teamcity_data_viewing

Results

REST API of TeamCity is a powerful and rich-in-features interface for getting build data and showing it in your application or system. It provides simple and easy-to-use requests for fetching data from TeamCity server, and even beginners can quickly start using it for building their custom solutions. Besides retrieving data from TeamCity server, you can also update or delete build data depending on the complexity and requirements of your project.

If you want to try integration of TeamCity server with Atlassian products, try our add-ons – TeamCity Integration for JIRA and TeamCity Integration for Confluence. If you have any questions or ideas, feel free to contact us at any time.

TeamCity Integration for JIRA breaks into Enterprise!

November 26, 2014
#Integration#Jira
6 min

Not long time ago Atlassian announced release of Enterprise solution – JIRA Data Center. This solution was designed as a high availability and top performance platform for large instances hosted in a dedicated data center.

JIRA Data Center provides you with uninterrupted access to critical services, distributes the load proportionally across the nodes and saves you from any unexpected hardware failures and data losses. Other benefits include a capability to route the appropriate applications to the specific node within the cluster and add new nodes in the real-time mode.

We have being developing add-ons for JIRA for several years, and like Atlassian understand the necessity to adjust our products to requirements of enterprise customers. After the long-lasting development, enhancement and optimization we are proud to say that the TeamCity Integration for JIRA add-on has been significantly improved to meet actual needs of the most demanding enterprise users.

JIRA Data Center

Starting from TeamCity Integration for JIRA 1.7.3 we added support for JIRA Data Center. Enterprise customers usually have complex infrastructure comprised of multiple TeamCity servers and a great number of users working with JIRA and fetching data from continuous integration servers. This stipulates high accessibility and instant response of the system that are available in JIRA Data Center.

jira and teamcity integration

Support for Multiple TeamCity Servers

Enterprise customers usually have several TeamCity servers, which data about builds should be available in one place – in JIRA. Now the add-on allows you to view information about builds from multiple TeamCity servers within the associated JIRA issue and see availability of build agents per each server. You can connect as many as needed TeamCity servers to your JIRA just by adding the corresponding application links.

teamcity servers

Persistent Data Storage

Some customers may also have TeamCity servers storing millions of builds. This fact affects availability of data in JIRA after its restart or update of the add-on. This can be achieved only through maximally quick data indexation and rapid data access to the requested information. The persistent storage for TeamCity data addresses all these issues and lets you always get quick access and maximal data availability after the scheduled maintenance work.

Indexation Optimization

TeamCity servers storing millions of builds can be slow due to large data amounts and can be even inaccessible because of the periodical clean-up. The continuous integration server may also store some abnormal builds with up to 10,000 commits and requests, which comprise two-gigabyte response from TeamCity server during data indexing.

That’s why the add-on has received several options, such as Response TimeoutSocket TimeoutConnection Timeout that allow you to adjust data indexation and speed up the entire process from large TeamCity Servers. The three other options – Index DepthResponse Size and Skip Builds – allow you to limit depth of TeamCity data indexation and better handle abnormal builds with a capability to skip them from the indexing.

teamcity configuration

We hope that you will like the updated version of TeamCity Integration for JIRA. If you still have any questions or encounter any issues, feel free to contact us at any time.

Automation of Routine Processes with JIRA Automation Plugin

August 5, 2014
#How To#Jira
7 min
Integrate TeamCity and JIRA quickly and easily.

Some History

Sometimes cool products appear out of the blue. People just look for a tool for solving their everyday tasks and provided they find none they create it from scratch. If they get a good result, they share it with others. This is how JIRA Automation Plugin came into existence. It’s a known fact that some issues in a bug-tracker or issue-tracker of a large company can go unattended and pop up after a while, which can be somewhat frustrating for users who submitted this issue.

This problem drove the Atlassian team to create a tool to prevent such situations. What to do if for a few weeks nobody commented on a bug that is hard to reproduce? How to understand, if it got to a new release or was fixed? How not to forget getting feedback from a user? JIRA Automation Plugin was meant to solve such problems. And it seems it did solve them since it was shared with the community to help other developers with similar issues.

Add-on Functionality

From the start, it was decided to keep the number of features low. However, each feature is quite functional, there’re a lot of thing you can do with them.

The add-on can:

  • execute some (Cron-based) JQL query and handle the results
  • add comments to existing issues
  • perform actions triggered by some events in JIRA

All this can help to do some thing automatically, like easy stuff as closing very old bugs that are not reproduced for a long time and are not important, or something more complicated. For example, when users log their work on a bug labelled as Important, the system can add a comment asking if it is fixed, and in case it is the label can be removed. It’s only a flow used in JIRA and your creativity that can limit you in coming up with tasks that can be done automatically with this add-on.

Not functional requirements

Truly powerful and popular solution should also be easy-to-use and safe. That’s why the list of requirements was expanded with:

  • easy and fast setting up
  • audit logging
  • loop protection (so JIRA don’t go down if user actions triggered an endless loop)

How does it work

To create an automated task, you need to create and enable at least one rule. The rule is created in 4 steps::

Setting a rule name and user account to work under

You can enable the rule right away.

JIRA Automation

Setting a trigger type

There may be only two types – a JQL expressions and an issue event.

When working with JQL filters, you need to specify a JQL expressin and time of executing this expressions in CRON format. You can also limit the number of results retrieved by the JQL expression.

In case you need to perform some actions triggered by an issue event, you should select these events (can be multiple). If you want, you can limit issues affected by the trigger (reduce their number). Also, you can set a limit for users whose actions can activate the trigger.

Adding triggered actions

There’re not many actions that can be performed automatically. Mainly, they are changing a responsible person, edit and delete an issue. However, you can add several of these which gives you a big range of possible solutions.

Almost there

All you need to do now is to check if everything is correct and here you go.

OK, one routine process is away. To use the add-on easily, there’re options of rule disabling, editing and copying for you. Of course, you can delete rules. The add-on audits rules actions and has a setting that limits the frequency of performing actions to avoid server overloading. However, this limiting algorithm is obscure and not customizable, you can only enable or disable it.

Conclusion

Atlassian made a pretty handy solution for automatically performing easy actions in JIRA. Although the tool is quite new, it boasts relatively flexible and, more importantly, intuitive settings and is quite good for a first version, however, there’s still room to improve.

It makes sense to use it on large JIRA instances with hundreds and thousands of users. Still it may be useful on smaller instances too.

The main drawback is the lack of evaluating consequences of creating a rule. For example, it would be great to see a warning before enabling the rule like ‘This action will affect a large number of issues (2985). Do you want to continue?’ with the Save and Disable buttons.

This is how the add-on looks like in real life:

Integrate multiple TeamCity servers with your JIRA

April 15, 2014
#Jira
3 min

We are happy to announce that one of the most demanding features for TeamCity Integration for JIRA has been added. Now the add-on supports work with multiple TeamCity servers, so you can easily get data from multiple continuous integration servers for your needs.

teamcity server diagram

From now you can instantly view complex data about your projects and builds without even accessing TeamCity servers. If you have multiple projects one per each TeamCity server, you will be able to view statuses for each one in your JIRA. So you needn’t all the time switch between JIRA and your multiple TeamCity servers.

All you need is to add several application links to TeamCity, the rest of work will be done by the add-on. It will thoroughly process and index all the available data from each server for you being able to view this data in your JIRA.

teamcity

All the information about your projects, builds and used configurations will be always at your hand. For the details on completed builds, you can instantly proceed to the appropriate TeamCity instance right from JIRA. The add-on treats each TeamCity server individually so for each instance the similar set of data will be available. If the same issue is mentioned on multiple TeamCity servers, so you will see information from several servers in one listing.

teamcity view issue info

So what can you benefit from this? First of all, you get a convenient tool for being aware of all progress in your projects. The second, you can always directly proceed to the right page with details of the build or configuration without long browsing sections of TeamCity. The third, you can quickly collect data from all your Teamcity servers in your JIRA. And the last, you can always track any changes and modified files for each task.

Download the updated version of TeamCity Integration for JIRA from the Atlassian Marketplace and try it for free. For any details on how to work with the add-on, refer to its documentation.