Discussions
-
Jira Cloud app: i18n support
Hello! In this article I will show you how to add i18n support to a Jira cloud app. I will change the app developed in this article. Our app consists of two parts where we can apply i18n - thymeleaf and react. We will add i18n support to both of the parts. You can take the complete code here. i18n support for Thymeleaf…
-
Atlassian Confluence Docker from Idalko
Hello! I needed to install a Confluence instance for my internal testing but I wanted to use the Postgres database not the internal one. First I had a look at the docker shipped by Atlassian: https://hub.docker.com/r/atlassian/confluence-server/ I found a section about using external database but there was no examples. Of…
-
Performance testing of Jira, Confluence and Bitbucket with dc_app_performance_toolkit Part3
You can read Part 2 here. In Part 3 we will talk about preparing test data for dc-app-performance-toolkit. Prepare test data There are two options to prepare data: * use backups prepared by Atlassian. This option can be used if you develop your own app and you want to test your app for performance. * use your own data.…
-
Performance testing of Jira, Confluence and Bitbucket with dc_app_performance_toolkit Part 2
You can find Part 1 here. I briefly explained the jira.xml file. Let's sum it up. We have 6 sections in our jira.xml file: settings - we define our settings here. You need to change the following parameters in this section: application_hostname: localhost # Jira DC hostname without protocol and port e.g.…
-
Prometheus Exporter apps and Histograms
In this article we will talk how to use histograms in Prometheus Exporter apps(Jira, Confluence, Bitbucket, Bamboo). I will use the jira_request_duration_on_path metric as an example, but you can apply the same principles to all histogram metrics. Here is how the metric looks in the documentation…
-
Swagger vs Wrappers
Hello! In this article I would like to talk about Swagger and Wrappers. Swagger simplifies API development for users, teams, and enterprises with the Swagger open source and professional toolset. You can find more info here. By wrappers I mean libraries which manipulate data by Rest Api in a more convenient for developers…
-
Performance testing of Jira, Confluence and Bitbucket with dc_app_performance_toolkit Part4
Part 3 In part 3 we defined data which are needed to run tests for Jira. That is why I created Scrum Software Development and Kanban Software Development projects in my empty Jira and ran again: bzt jira.yml This time the script ran successfully. Here is the output: 18:15:24 INFO: Taurus CLI Tool v1.14.018:15:24 INFO:…
-
Atlassian Jira. Admin evolution. Part 10
Part 9 Javascript: changes by the source code If you look through the source code you will find the NEW_CONTENT_ADDED event. This event has the following reasons: pageLoad: "pageLoad", inlineEditStarted: "inlineEditStarted", panelRefreshed: "panelRefreshed", criteriaPanelRefreshed: "criteriaPanelRefreshed",…
-
Atlassian Jira. Admin evolution. Part 9
Part 8 Javascript: Common sense changes Well, we have a not bad solution for our mapping table. Let's have a look at our Javascript. First of all we have the following problems: * sometimes our browser freezes * there is a delay between the button Ready For Work is hidden or value manager1 is set for the Approver…
-
Atlassian Jira. Admin evolution. Part 11
Part 10 Javascript refactoring Here is our JavaScript code so far: <script> $(function () { JIRA.bind(JIRA.Events.NEW_CONTENT_ADDED, function (e, $context, reason) { if (reason == JIRA.CONTENT_ADDED_REASON.dialogReady) { $("#reporter").change( function(e) { if ($("optgroup#reporter-group-suggested > option:selected").val()…
-
Atlassian Jira. Admin evolution. Part 3
Part 2 This solution should be avoided at all cost! JavaScript Now we can manage the user_managers table, let's try to set the Approver field automatically when we create a new issue. Here is the create issue dialog: As you can see we've got the Reporter field and the Approver field. If the Reporter is Alexey Matveev then…
-
Atlassian Jira. Admin evolution. Part 4
Part 3 This solution should be avoided at all cost! More JS Now we need to let only the user in the Approver field to transit an issue from the "On Approval" status to the "Ready For Work" status. The easiest way is to hide the Ready For Work button in the Jira issue view: Let's open again the Jira view issue screen in the…
-
Atlassian Jira. Admin evolution. Part 5
Part 4 This solution should be avoided at all cost! A bit more JSP One thing left. I set the Approver as manager1 all the time, but I need to get the manager for the reporter from my user_managers table. How to do it? Again we can create a jsp page. Let's call this page getmanagerforuser.jsp with the following code: <%@…
-
Atlassian Jira. Admin evolution. Part 6
Part 5 This solution should be avoided at all cost! DB triggers and functions If the manager has been deactivated we need to change this manager to the supermanager user. How to do it? Easy! We will create a trigger for the cwd_user table. And if a user is deactivated then we will update the customfieldvalue. First we will…
-
Extend your Jira Server/Data Center app with ModuleType Part 2
Part 1 Change our app Now we need to add support for modules to our calculator. First uncomment the jira-core dependency in the pom.xml file. <dependency><br> <groupId>com.atlassian.jira</groupId><br> <artifactId>jira-core</artifactId><br> <version>${jira.version}</version><br> <scope>provided</scope><br></dependency> Then…
-
Extend your Jira Server/Data Center app with ModuleType Part 1
Hello! In this article we will talk how to extend your own Jira Server/Data Center app with the ModuleType annotation. The ModuleType annotation lets you expose a module from you Jira Server/Data Center app. Why would we need it? Let's take Configuration Manager. This app allows you to migrate Jira configuration from one…
-
Atlassian Jira. Admin evolution. Part 8
Part 7 JSP pages Never use JSP pages. There are multiple disadvantages: * you can easily introduce security bugs * there is no API checks that is why it is time consuming to develop such a solution * you need to restart Jira after every change introduced to a JSP page, which makes development very annoying and long * You…
-
Atlassian Jira. Admin evolution. Part 7
Part 6 In this part we will start changing our solution to make it better. Database As you can remember we created the user_managers table in the database using a Postgres database manager. This is a bad solution because: * you need to remember that this table should be created manually, if you move Jira configuration from…
-
Make your Jira Server/Data Center app work without dependant 3d party app Part 2
Part 1 Make it more complicated Actually if we want to use JCMA gateway service we need to create a listener of the AppCloudMigrationListener class. Let's do it. First change our interface src/main/java/ru/matveev/alexey/atlassian/tutorial/api/MyPluginComponent.java public interface MyPluginComponent extends…
-
How to integrate Jira plugins with Bitbucket, SonarCube, Jacoco and Bitbucket Pipelines
The aim of the article is to make a short guide on how to setup a simple Jira plugin development process using SonarCube, Jacoco , Bitbucket and Bitbucket pipelines. All of the mentioned tools are free of charge. Bitbucket pipeline offers you 50 free minutes per month to run your pipeline. A few words on each tool.…