JIRA in command line

Today’s entry is about „how to use JIRA from command line?”. It’s easier than you think.
The first step to use JIRA from the command line is download JIRA CLI. The latest version is 3.9.0.
After wget&unzip archive you can use the JIRA command line interface.

How to use the jar’s file? In this way:

java -jar path/to/jira-cli-3.9.0.jar --params

The JIRA CLI is really functional. You can see it in these examples.
Why I’m interested in this tool?
It gives me a new possibilities in connection JIRA&Bamboo. By JIRA CLI we can update JIRA’s issues in Bamboo’s jobs. It’s reason why I looked for something like that.
Short but useful tip.

Bamboo – ABC konfiguracji

Ten post powstał m.in. z tego powodu, że sam bardzo potrzebowałem pomocy w kwestii konfiguracji Bamboo, a nie udało mi się znaleźć nic sensownego co rozwiałoby moje wątpliwości. Więc drogą dedukcji i błędnych prób, udało mi się zrozumieć jak działa Bamboo (mam taką nadzieję! :D). Opiszę podstawy konfiguracyjne, zasady działania oraz prosty przykład jak skonfigurowałem swoje środowisko i jakie dało mi to korzyści.
Zauważyłem, że mam ciągoty do tematów związanych z „zarządzaniem projektami”, jednak w tym wpisie skupie się na konfiguracji i możliwościach Bamboo w połączeniu z Bitbucket i JIRA.

Mam do dyspozycji instancję Bamboo onDemand – więc będe wszystko opisywał na jej przykładzie.
Jeśli nie wiesz czym jest Bamboo || Bitbucket || JIRA, odsyłam Cię na stronę producenta gdzie znajdziesz wszystkie niezbędne informacje.
Warto też zaznaczyć, że narzędzia te są od pewnego stopnia płatne, jednak moim zdaniem przy pracy nad większymi projektami koszty te się w zupełności zwrócą, a nawet będziemy w stanie zaoszczędzić na tych narzędziach. Wszystko oczywiście zależy od potrzeb, wielkości projektu etc. Ten wpis nie ma na celu reklamowania usług Atlassian. Moim zadaniem było skonfigurowanie Bamboo, więc chcę się z wami podzielić i przedstawić moją subiektywną opinię na ten temat.

*jeśli nie wiesz czym jest Bamboo, obejrzyj ten filmik. Da Ci pogląd z czym to się je.

Czym jest Bamboo dowiedziałem się z kanału na u2b Atlassian. W filmikach o Bamboo nie było wzmianek o tym, jak działa „od kuchni”, więc dopiero podczas konfiguracji dowiedziałem się, że używanie Bamboo bez konta na Amazone (koszta++;) nie ma większego sensu. Oczywiście nie chodzi tutaj o same konto, a o instancje, które trzeba utrzymywać by zapewnić Bamboo moce przerobowe.

Konfiguracja Bamboo

Pierwszym krokiem będzie konfiguracja elastycznych instancji. Ten krok będzie możliwy po włączeniu „Elastycznego Bamboo” i podłączeniu swojego konta Amazon. Proces jest banalny i nie powinien nikomu sprawić problemów. Natomiast podczas pierwszego zetknięcia z Bamboo nasuwało mi się pytanie PO CO?. Odpowiedź poznałem dopiero po kilku godzinach badania Bamboo.
Konfigurując elastyczne Bamboo (bardzo) ważną kwestią jest wybranie odpowiedniego AWS Region.
Jeśli wybierzemy strefe US East (Northern Virginia) będziemy mieli do dyspozycji domyślne obrazy instancji przygotowane przez Bamboo – może nam to znacznie ułatwić pierwsze kroki. Możemy też przygotować Custom Image.
Instancje stawiane przez Bamboo, będziemy mogli śledzić w naszym koncie na Amazone. Istnieje dość ciekawy cron, dzięki, któremu możemy automatycznie zaplanować start instancji, oraz ich wyłączenie.
To bardzo na plus.
Kolejną rzeczą wartą uwagi są globalne zmienne, które można zdefiniować. Ciekawa sprawa, przydaje się bardzo często w definiowaniu konkretnych tasków. Możemy raz ustawić ścieżkę do projektu i później używać; gdy się zmieni – dokonujemy podmiany w jednym miejscu.

plan, stage, job, task – są to pojęcia bardzo często się przewijające, których nie będę tłumaczył ani odmieniał żeby tekst był bardziej zrozumiały.

Warto obejrzeć ten filmik by zrozumieć czym są plan, stage, job i task.

Sercem Bamboo są plans. Ich tworzenie jest proste, podobnie jest ze stages i jobs. Pominę więc tą kwestię, a przejdę do tasks, które są według mnie bardzo fajnie przemyślane.

Tworząc nowy task, możemy określić jego typ. Myślę, że nawet bardziej wymagający gracze znajdą coś dla siebie 🙂

Do ciekawszych zaliczyłbym: SCP Task, SSH Task, PHPUnit, JUnit, Script. Jeśli nie znajdziemy konkretnego typu task, zawsze możemy to uzupełnić SSH Task, Script, które są naprawdę bardzo przydatne – możemy się posiłkować narzędziami z zewnętrznych serwerów.

W kolejnych wpisach poruszę temat tworzenia planów build, deployment oraz jaką rolę odgrywają artifacts.

Import dużych plików do bazy MySQL

W związku z przenosinami na nowy serwer, musiałem zaimportować stare bazy na nowego Linuksa. Dostałem archiwum *.zip, ważące ~200MB. Czyli wiadomo było, że plik będzie bardzo duży, tekst się bardzo dobrze kompresuję. Po rozpakowaniu plik do importu *.sql, ważył niecałe 3GB.
Można byłoby to zrobić na okrętkę przez phpMyAdmin, modyfikując maksymalny rozmiar uploadowanego pliku, ale po co? Są prostsze sposoby.
BTW, tak dużego pliku nie mogłem otworzyć w żadnym edytorze z GUI pod Windows. Dopiero vi, pod Linuksem to ruszył.
Import pliku do bazy danych :

mysql -u rootOrSth -p someDBName < /path/to/file.sql

i po płaczu 🙂

Jak zmienić maksymalną ilość połączeń z bazą MySQL?

Temat prosty, więc krótko i na temat. Często domyślna konfiguracja deamonów nie jest wystarczająca, jak np liczba maksymalnych połączeń do bazy MySQL. Jeśli masz błąd:

Too many connections ...

to wykonaj to; edytuj plik konfiguracyjny (możliwe, że : /etc/mysql/my.cnf). Odszukaj linijkę:

#max_connections = 100

Odkomentuj ją i wstaw po znaku równości odpowiednią wartość lub pozostaw 100.
Zresetuj deamona MySQL:

sudo /etc/init.d/mysql restart

Powinno działać.

Zdalny dostęp do MySQL

Prosty tip na dziś. Daemon MySQL domyślnie jest dostępny tylko z localhost. Dzieje się tak poprzez domyślną konfigurację tej bazy danych.
Natomiast jeśli chcemy połączyć się z zewnętrznej maszyny – wtedy pojawia się problem, który ma bardzo proste rozwiązanie.

Żeby baza danych MySQL była dostępna na zewnątrz, wystarczy zmienić jedną dyrektywę w pliku konfiguracyjnym.

/etc/mysql/my.cnf

chodzi o dyrektywę bind-address, która domyślnie ogranicza nas do localhost. Ustawiając tam 0.0.0.0 – będziemy mogli połączyć się z każdego adresu IP.