Back to The tech awesomeness
Table of contents
Java chapters

The article for today.


The #1 software development tool used by agile teams
https://www.atlassian.com/software/jira as of 2019-10-11.

Jira (/ˈdʒiːrə/ JEE-rə)[4] is a proprietary issue tracking product 
developed by Atlassian that allows bug tracking and agile project management. 
The product name is a truncation of Gojira, the Japanese word for Godzilla,[5] 
which is a reference to a competitor, Bugzilla.
https://en.wikipedia.org/wiki/Jira_(software) as of 2019-10-11.

Prerequisites:


+ your bank card with positive balance
+ your registered email address
+ your id
+ web browser of choice with javascript's support
+ operational system with console, terminal, shell
+ operational system's shell: for example: bash, zsh, sh
+ program inside operational system for executing https requests: curl
+ access to Java's, github.com's and Jira's servers

Steps:

li)

To register your new account at https://atlassian.com with your registered email address of choice in order to register the Jira version later on. I will skip the detailed steps for that.

li)

To register your new account at https://console.hetzner.cloud with your registered email address of choice in order to order server.

li)

To create new project at https://console.hetzner.cloud/projects in web browser of choice with javascript's support.

li)

To create new API_TOKEN at the 'Project', 'Access', 'API tokens' tab for example, https://console.hetzner.cloud/projects/299153/access/tokens

li)

To open macOS's Terminal.app, console, other shell.

li)

To create new server with operational system of choice. I chose to create server at hetzner with Debian 10 for this article with at least 4GB of RAM because I tried with 2GB and Jira did not start. However, scaleway.com is also allowing to do that with additional 2 CPU cores and 8GB RAM more performant for only around 3 EUR more as of 2019-10-11.

I could execute this step from browser as well.

It is easier for me

to execute in macOS Terminal, in linux's, other operational system's console the following command for program for executing https requests, curl to create new server:

curl -H 'Authorization: Bearer API_TOKEN_FROM_PREVIOUS_STEP' \
        -H 'Content-Type: application/json' \
        -d '{ "name": "server0002", "server_type": "cx21", "location": "hel1", "image": "debian-10"}' \     
        -X POST 'https://api.hetzner.cloud/v1/servers'

The start of update from 2019-11-04.

To execute the server creation at https://scaleway.com I requested li) To create the ip for the server by requesting with curl:
curl -H 'X-Auth-Token: TO_CREATE_THIS_TOKEN_IN_USER_SETTINGS_IN_BROWSER' 
    -H 'Content-Type: application/json' https://api.scaleway.com/instance/v1/zones/fr-par-1/ips 
    --data '{"organization" : "THIS_ORGANIZATION_ID_IS_AVAILABLE_IN_USER_SETTINGS_IN_BROWSER"}'
li) To create the server itself with curl:
curl -H 'X-Auth-Token: TO_CREATE_THIS_TOKEN_IN_USER_SETTINGS_IN_BROWSER' 
    -H 'Content-Type: application/json' https://api.scaleway.com/instance/v1/zones/fr-par-1/servers --data '{
    "name": "SERVER_NAME",
    "dynamic_ip_required": true,
    "commercial_type": "ARM64-8GB",
    "image": "0e32f742-93d9-4c2e-aa78-9418e3f54e7c",
    "volumes": {},
    "enable_ipv6": true,
    "public_ip": "THIS_IP_ID_IS_AVAILABLE_FROM_PREVIOUS_STEP",  
    "boot_type": "bootscript",
    "organization": "THIS_ORGANIZATION_ID_IS_AVAILABLE_IN_USER_SETTINGS_IN_BROWSER",
    "tags": [],
    "security_group": "THIS_SECURITY_GROUP_ID_IS_AVAILABLE_AFTER_REQUESTING_https_api_scaleway_com_instance_v1_zones_fr_par_1_security_groups",
    "compute_cluster": null
}'
li) To switch on the server after previous step with curl:

curl -H 'X-Auth-Token: TO_CREATE_THIS_TOKEN_IN_USER_SETTINGS_IN_BROWSER' 
-H 'Content-Type: application/json' https://api.scaleway.com/instance/v1/zones/fr-par-1/servers/THIS_SERVER_ID_IS_AVAILABLE_FROM_PREVIOUS_STEP/action 
--data '{"action": "poweron"}'
li) To log in to server with ip with ssh:

    ssh root@IP_FROM_PREVIOUS_STEP
li) If there is a message, that remote host identification has changed, the following command with authentication ssh key generation, management and conversion software:

    ssh-keygen -t rsa -b 16384 -C "YOUR_REGISTERED_EMAIL_ADDRESS" -R IP_FROM_PREVIOUS_STEP
    ssh root@IP_FROM_PREVIOUS_STEP

The ending of the update from 2019-11-04.

li)

To get 2 values' details from the response in console, Terminal shell after previous step's https request.

It is:

"root_password": "pFCtumRrW7EebEKeCpbT"

and

"ipv4": {
        "ip": "95.217.7.249",

I tried with "ipv6"'s ip as well.

li)

To connect to server using these 2 values' details as follows via Terminal in macOS via:

ssh root@95.217.7.249

#I tried connecting with "ipv6"'s ip as well with no success as of 2019-10-11:
#ssh -6 root@2a01:4f9:c010:5ce3::
#ssh -6 root@2a01:4f9:c010:5ce3::/64
#ssh -6 root@2a01:4f9:c010:5ce3::%eth0
#ssh -6 root@2a01:4f9:c010:5ce3::/64%eth0
#ssh -6 root@2a01:4f9:c010:5ce3::%eth1
#ssh -6 root@2a01:4f9:c010:5ce3::/64%eth1

and to answer to "Are you sure you want to continue connecting (yes/no)?" "yes" and to enter "root_password" from previous step.

li)

To change password as Debian 10 outputs after the first login to your own new operational system of order. And to repeat changing password until success.

li)

To execute in Debian 10 in order to install Linux x64's version of Java 11 jdk-11.0.4+11:


#wget https://github.com/AdoptOpenJDK/openjdk13-binaries/releases/download/jdk-13%2B33/OpenJDK13U-jdk_x64_linux_hotspot_13_33.tar.gz

#tar xfv OpenJDK13U-jdk_x64_linux_hotspot_13_33.tar.gz 

wget https://github.com/AdoptOpenJDK/openjdk11-binaries/releases/download/jdk-11.0.4%2B11/OpenJDK11U-jdk_x64_linux_hotspot_11.0.4_11.tar.gz

tar xvf OpenJDK11U-jdk_x64_linux_hotspot_11.0.4_11.tar.gz 

#sudo update-alternatives --install "/usr/bin/java" "java" "/root/jdk-13+33/bin/java" 1

#sudo update-alternatives --install "/usr/bin/javac" "javac" "/root/jdk-13+33/bin/javac" 1

sudo update-alternatives --install "/usr/bin/java" "java" "/root/jdk-11.0.4+11/bin/java" 1

sudo update-alternatives --install "/usr/bin/javac" "javac" "/root/jdk-11.0.4+11/bin/javac" 1

update-alternatives --config java

java --version

li)

To install Atlassian's Jira 8.4.2:


wget https://atlassian.com/software/jira/downloads/binary/atlassian-jira-software-8.4.2.tar.gz

tar xvf atlassian-jira-software-8.4.2.tar.gz 

export JIRA_HOME=/root/jira

mkdir /root/jira

sh atlassian-jira-software-8.4.2-standalone/bin/start-jira.sh 

li)

To wait untill it starts.

If not to execute in terminal:

less atlassian-jira.log 

li)

To perform Jira's setup from your browser of choice:

to access from your browser of choice:

http://95.217.7.249:8080

I tried http://2a01:4f9:c010:5ce3:::8080 in browsers with no success as of 2019-10-11.

To choose:

"I'll set it up myself", "Next", "Next", "Next".

li)

To specify your license key in browser for Jira:

to login to https://my.atlassian.com/product with account and registered wmail address from previous step

to press 'New Trial License'

to select 'Jira Core'

to add 'Server ID' from your current web page similarly at yours http://95.217.7.249:8080

to follow steps at https://my.atlassian.com/license/evaluation

to click 'Generate License'

to copy and paste current resulting 'License Key' from https://my.atlassian.com/products/index back to similarly yours http://95.217.7.249:8080/secure/SetupLicense!default.jspa

to select 'Next'

to wait till 'Configuring your license' message is at web page.

li)

To setup "Set up administrator account"

to fill the form fields and to select 'Next', 'Finish'.

li)

Jira created administrator account and made a log in to it.

Your Jira is available at similar address:

http://"ipv4":8080

For example, http://95.217.7.249:8080/

li)

To enjoy 'Welcome to Jira, Oleksii!' web page similarly at

http://95.217.7.249:8080/secure/WelcomeToJIRA.jspa

to select language

to choose 'Continue', similarly in chosen language.

Is there any option to use Jira in Ukrainian?

Jira and Atlassian Cloud products are available in the following languages: English(UK), English(US), Chinese, Czech, Danish, Dutch, Estonian, Finnish, French, German, Hungarian, Icelandic, Italian, Japanese, Korean, Norwegian, Polish, Portuguese, Portuguese, Romanian, Russian, Slovak, Spanish, Swedish.

The logotype for your company and organisation in Jira can be changed.

There is opportunity to create the projects and the tasks in your version of Jira in your browser of choice in web. And to buy license for longer maintenance period than trial 1 month. Earlier it was up to 36 month maintenance period and now it is up to 24 month of maintenance period as of 2019-10-11.

Project management with Jira for almost 95 EUR per year for you and for team with maximum 10 persons until that option exists :)

Then on the

Pros:

li) backups and migrations to other Jira servers in XML format and as files.

Costs:

Jira itself: 10 users per 10 EUR + 10 EUR per 24 months' maintenance period (as of 2019-10-11) = 20 EUR

Hosting itself: server at hetzner.cloud with "CX21" name costs 4.9 EUR plus VAT (I found the maximum tax at the website as of 27% as of 2019-10-11), so per year it is 6,223 EUR x 12 ~~~ 75 EUR

So it is around 95 EUR.

To think about:


li) what when the 24 months' license period is over?
li) what when it is not secure (HTTPS) connection and the man is in the middle?
li) what if the developers will release newer version 
of Debian operational system?
li) what if there is the requirement for domain name addition?
li) what if the developers will release newer version of Jira system?
li) what if the developers will release newer version of Java system?
li) what if the Jira system's prices will increase?
li) what if some step of these ones will not work at some point?
li) what if your team has more than 10 users?

NB. I did not receive money directly for this post from the sponsors.

The update from 2019-10-12.

The corresponding apps to mobile devices exist for Jira Server, which can connect to Jira's web site as well with their help:

http://"ipv4":8080

For example, http://95.217.7.249:8080/

app store icon

and

google play icon

The update from 2019-10-16.

In order to issue an SSL certificate with 3650 days of the validity and to start Jira system with SSL certificate there are following commands:


/root/jdk-11.0.4+11/bin/keytool -genkeypair -alias tomcat -keyalg RSA -keysize 2048 -keystore keystore.jks -validity 3650

mv keystore.jks /root/jira

These parameters are to add to server.xml in JIRA_HOME/jira/conf.xml file along with the connector itself:


keystoreFile="/root/jira/keystore.jks"
keystorePass="1"
keystoreType="JKS" 
keyAlias="tomcat"

'keystorePass' is the password to your keystore from previous 'keytool' command.
'keyAlias' is the alias in your keystore from previous 'keytool' command.

vi /root/atlassian-jira-software-8.4.2-standalone/conf/server.xml


<Connector SSLEnabled="true" acceptCount="100" clientAuth="false" 
connectionTimeout="20000" disableUploadTimeout="true" enableLookups="false" 
keyAlias="tomcat" keystoreFile="/root/jira/keystore.jks" 
keystorePass="1" keystoreType="JKS" maxHttpHeaderSize="8192" 
maxSpareThreads="75" maxThreads="150" minSpareThreads="25" port="8443" 
protocol="org.apache.coyote.http11.Http11NioProtocol" scheme="https" 
secure="true" sslProtocol="TLS" useBodyEncodingForURI="true" 
relaxedPathChars="[]|" relaxedQueryChars="[]|{}^\`"<>"/>

And to restart Jira system:


export JIRA_HOME=/root/jira

sh /root/atlassian-jira-software-8.4.2-standalone/bin/stop-jira.sh

sh /root/atlassian-jira-software-8.4.2-standalone/bin/start-jira.sh

And Jira will be accessible at:

https://"ipv4":8443

For example, https://95.217.7.249:8443

When your browser outputs one of the messages:

Your connection is not private
Attackers might be trying to steal your information from 95.217.7.249 (for 
example, passwords, messages or credit cards). Learn more
NET::ERR_CERT_REVOKED
95.217.7.249 normally uses encryption to protect your information. When 
Chromium tried to connect to 95.217.7.249 this time, the website sent back 
unusual and incorrect credentials. This may happen when an attacker is trying 
to pretend to be 95.217.7.249, or a Wi-Fi sign-in screen has interrupted that 
connection. Your information is still secure because Chromium stopped the 
connection before any data was exchanged.

You cannot visit 95.217.7.249 right now because its certificate has been 
revoked. Network errors and attacks are usually temporary, so this page will 
probably work later.

and:


The server's security certificate is revoked!
You attempted to reach 95.217.7.249, but the certificate that the server 
presented has been revoked by its issuer. This means that the security 
credentials the server presented absolutely should not be trusted. You may be 
communicating with an attacker.

NET::ERR_CERT_REVOKED
Help me understand
When you connect to a secure website, the server hosting that site presents 
your browser with something called a "certificate" to verify its identity. 
This certificate contains identity information, such as the address of the 
website, which is verified by a third party that your computer trusts. By 
checking that the address in the certificate matches the address of the 
website, it is possible to verify that you are securely communicating with the 
website you intended, and not a third party (such as an attacker on your 
network).

You cannot visit 95.217.7.249 right now because this certificate has been 
revoked. Network errors and attacks are usually temporary, so this page will 
probably work later.

For Safari browser there is an option to visit web site. The solution for Chromium's Opera browser and for Brave browser in this case is to open the web site via following command:


open -a Opera.app --args --user-data-dir=/tmp/foo --ignore-certificate-errors --unsafely-treat-insecure-origin-as-secure=https://95.217.7.249:8443

open -a Brave\ Browser.app --args --user-data-dir=/tmp/foo --ignore-certificate-errors --unsafely-treat-insecure-origin-as-secure=https://95.217.7.249:8443

open -a Chromium.app --args --user-data-dir=/tmp/foo --ignore-certificate-errors --unsafely-treat-insecure-origin-as-secure=https://95.217.7.249:8443

The update from 2019-10-26.

The server is performing multiple requests making an impact at the level of network resources and, as a result, a segment of the network, for example:

HH:MM:ss.SSSSSS IP 95.217.7.249 > ip.ip.ip.ip: Flags [S] [SEW] [SW],
seq NNNNNNNNN:NNNNNNNNN, win NNNNN, length NNN

So we switch the server off:


curl -H "Authorization: Bearer API_TOKEN_FROM_PREVIOUS_STEP" \          
'https://api.hetzner.cloud/v1/servers' 

curl -X DELETE -H "Authorization: Bearer API_TOKEN_FROM_PREVIOUS_STEP" \
'https://api.hetzner.cloud/v1/servers/SERVER_ID_FROM_PREVIOUS_STEP'

The update from 2020-05-01.

The steps for using openssl, keytool, certutil, converting jks to p12 and for example for adding, including certificate for iOS, Windows at https://web.archive.org/web/20170107050552/http://shib.kuleuven.be/docs/ssl_commands.shtml.

The update from 2020-12-19.

I found cloud(in software) mostly is tending to have a form of a protocol, which consists of the services, which use other protocols for user in cloud for example: for communication, for planning, for files and others.

The update from 2021-02-10.

Here is the link to migrate from Atlassian Jira Server to Atlassian Jira Cloud: https://support.atlassian.com/migration/docs/migrate-from-server-to-cloud.

Also there is a quote from there: "We’ve ended sales for new server licenses, and will end support for server on February 2, 2024." as of 2021-02-10.

So that one will be also the expiry date for this article for Atlassian Jira Server part.

Expiry date for Atlassian Jira Server part: 2024-02-02.

Or there is for example JetBrains YouTrack as an alternative one.

Оновлення від 2020-12-19.

Планування проекту з Атлассіан Джіра Atlassian Jira у майже 3000 UAH в рік для вас і вашої команди з максимум 10 членами допоки така можливість існує(тепер вже відомо що це приблизно протягом року).

Стаття сьогодні.

Оновлення від 2020-12-19.

Я знайшов що переважно хмара(в програмному забезпеченні) схожа має форму протокола, який складається з послуг, які використовують інші протоколи для користувача у хмарі вже наприклад: для спілкування, для планування, для файлів (документів) і інших.

Оновлення від 2021-02-10.

Ось посилання переміщення даних з атлассіан джіра сервер обробляч Atlassian Jira Server до атлассіан джіра клауд Atlassian Jira Cloud: https://support.atlassian.com/migration/docs/migrate-from-server-to-cloud.

Також є цитата звідти: "We’ve ended sales for new server licenses, and will end support for server on February 2, 2024." від 2021-02-10.

Так що та буде також датою недієвості для цієї статті щодо частини з атлассіан джіра сервер обробляч Atlassian Jira Server.

Дата недієвості для цієї статті щодо частини з атлассіан джіра сервер обробляч Atlassian Jira Server: 2024-02-02.

Чи існує наприклад джетбрейнс JetBrains ютрек YouTrack як інша можливість.

Оновлення від 2021-05-20.

The update as of 2021-05-20.

fast-jar is another distibution format in Quarkus framework. It seems it has a custom class loader where another method caches the dependencies for loading them faster during application startup. Defacto for me a continuation for jar format as version 2. Quick jar. (Un)fortunately it is not available for example in Spring or Spark frameworks via vendor lock.

фаст-джар fast-jar є іншим форматом розповсюдження додатків в кваркус Quarkus фреймворковому програмному каркасі. Примарюється що він має для цього спеціальний завантажник файлів де інший метод кешує і зберігає перелік залежностей для завантаження їх швидще протягом запуска додатка. Фактично для мене він є продовженням для джар jar формату як версії 2. Швидкий джар jar. (Не)фортунно він є недоступним для наприклад спрінг Spring чи спарк Spark фреймворкових програмних каркасів завдяки видавницькому замкненню.

Or even sureness framework: https://gitee.com/dromara/sureness.

Чи навіть шуенес фреймворковий програмний каркас: https://gitee.com/dromara/sureness.

As Gong Tom typed "For existing frameworks, whether it is apache shiro which does not natively support rest or deeply bound spring of spring security is not our ideal framework.". To rephrase: shiro is framework independent more than spring security.

Як Гонг Том Gong Tom надрукував "For existing frameworks, whether it is apache shiro which does not natively support rest or deeply bound spring of spring security is not our ideal framework.". Щоб перефразувати: широ shiro є фреймворково програмно каркасово незалежним більше ніж спрінг сєкьюріті spring security.

Оновлення від 2021-12-08.

The update as of 2021-12-08.

Хоча він і огортає, він https://www.mojohaus.org/keytool/keytool-maven-plugin включає щонайменш декілька тих самих особливостей як альтернативу цією веб сторінкою з використанням XML іксЕмЕль для джава java проектів які використовують mvn мейвен, але він вимагає Toolchains ціпок інструментів. З використанням JSON ДжейСон я не знайшов.

Though it is a wrapper, it, https://www.mojohaus.org/keytool/keytool-maven-plugin includes at least several same features within XML for java projects which use with mvn, but it requires Toolchains. Within JSON I have not found.

Оновлення від 2022-02-17.

The update as of 2022-02-17.

If to migrate data between similar web services in which there is tracking back and forth, then such data is rather easy to couple from backend side there.

Якщо мігрувати дані між схожими веб послугами в яких є слідкування туди і назад то такі дані достатньо нескладно пов'язати там у задній невидимій частині.

Оновлення від 2022-02-22.

The update as of 2022-02-22.

Деяке ПЗ не запускається в одних віртуальних машинах але запускається в інших. Іноді це відомо а іноді це невідомо чому особливо у закритокодовому ПЗ. Якщо би віртуальна машина була схожа з серверами для додатків і застосунків тобто з обслуговувачами і обслуговувачками для додатків і застосунків, то вона би мала можливість запускатися вбудовано у іншу віртуальну машину ймовірно наступних версій тобто як вбудовувані такі сервери і обслуговувачі і обслуговувачки а значить такі незапуски у такому режимі для таких віртуальних машин не існували би як тип.

Оновлення від 2022-04-21.

The update as of 2022-04-21.

Forcing a user to repeatedly input expected and desired behaviour is as an alternative one to not hiding or even exposing project structure and such specs in such issue tracker with ability to comment an issue only under such spec.

Оновлення від 2022-11-11.

The update as of 2022-11-11.


    /*only between AJAX requests in some browser; лише між аякс запитами у деяких ППіНТВСвІ*/
.status-view, .aui-iconfont-edit {visibility:hidden;}/*to leave mostly labels and texts in details and some icons; залишити переважно тексти і означення у деталях і деякі малюнки*/
body, p, h1, h2, h3, h4, h5, h6, div, main, dashboard, header, section {background-color: black !important;}/*a dimmer theme and probably not compatible one with Accessibility suggestions in some Devtools;темніша тема і ймовірно не сумісна з підказками щодо доступності у деяких засобах розробки*/