In my team, there is 20% of OS X machines, rest are linuxes. We share one script, that everyone on our team uses.
That script was written by some guy on Ubuntu and guess what? GNU versions of those programs (sed and xpath) are not compatible with BSD versions. The script was failing :(
I was trying to improve the script, but forget about it. Just use GNU programs.
To install gnu sed on osx via homebrew type the following:
GNU Sed
1
brew install gnu-sed --with-default-names
To install gnu xpath on osx via homebrew type the following:
W tym poście przedstawię jak zrobić, aby natychmiast po wypchnięciu zmian do BitBucket.org serwer ciągłej integracji rozpoczął proces budowania aplikacji.
Konfiguracja Jenkinsa
W związku z tym, że nasz Jenkins musi być dostępny publicznie, warto go trochę zabezpieczyć. Dostęp do Jenkinsa ograniczymy tylko dla zarejestrowanych użytkowników. Opcje konfiguracji zabezpieczeń powinny być ustawione tak jak na screenie poniżej.
Nazwa użytkownika w tym przypadku to “lewy”. Następnie musimy pobrać nasz “user API token”. Znajdziemy go tutaj:
Następnie musimy włączyć dla naszego projektu, możliwość zdalnego triggerowania budowania:
Aby przetestować konfigurację Jenkinsa wywołaj zapytanie do serwisu:
Ostatnio przechodziłem z HibernateSessionFactory konfigurowanego w kodzie na hibernate.cfg.xml. Wiąże się to z zamianą mapowań, których może być w dość dużo w projekcie:
Każda klasa reprezentująca encje musi zostać zamieniona na coś takiego:
Code Configuration
1
<mappingclass="pl.myproject.MyClass">
Najprostsze rozwiązanie jakie przychodzi to użycie zamiany z użyciem wyrażenia reguralnego. W naszych IDE należy włączyć tryb zamiany z użyciem wyrażenia reguralnego. W polu “find” definiujemy:
Code Configuration
1
configuration.addAnnotatedClass\((.*).class\);
W polu “replace” definiujemy:
Code Configuration
1
<mappingclass="$1"></mapping>
Klikamy “Replace All” i zrobione. Nie ma tutaj nic trudnego. Wybranie pierwszego podzbioru za pomocą dwóch nawiasów i wstawienie tego za pomocą $1. Proste,a nawet banalne. Za pewne każdy edytor tekstu potrafi takie rzeczy, jednak odnoszę wrażenie, że zbyt często próbujemy robić takie rzeczy ręcznie.
Przewodnik o tym jak zrobić klaster złożony z dwóch instacji tomcata połączonego load balancerem apache mod_jk i jak uruchomić replikację sesji oraz sticky-session. System operacyjny to lubuntu 11.10.
Z góry przepraszam, za dość surowe komendy. Nie jest to tutorial krok-po-korku ani książka, żeby rozlegle wszystko opisywać. Jest to tylko ściągawka na przyszłość, lub ekstrakt z tego co trzeba zrobić.
Adres IP należy zmienić z 10.0.0.90 na localhost czy gdzie tam wasz serwerek się znajduje.
Instalacja
Zainstaluj:
Instalacja
1
apt-get install apache2 libapache2-mod-jk2-mod-jk
Utworz katalog:
Folder
1
/tcluster/instance1
Pobierz Tomcata i rozpakuj zawartość do tego katalogu.
Testy przeprowadzić najlepiej za pomocą aplikacji z przykładów:
W moim przypadku jest ona dostępna pod adresem: http://10.0.0.90:8871/examples/servlets/servlet/SessionExample
Mamy trzy porty HTTP:
8871 - instancja nr 1
8872 - instancja nr 2
8585 - load balancer
Po dodaniu jakiegoś aktrybutu sesji i zmianie portu z 8871 na 8872 powinniśmy mieć ten sam SessionID (Sticky-session) oraz te same atrybuty(Replikacja sesji).
Dodatkowa analiza:
Panel z informacja o mod_jk dostępny pod adresem http://10.0.0.90:8585/jkstatus
Probe (narzędzie do monitorowania) dostępne na danej instancji: http://10.0.0.90:8871/probe oraz http://10.0.0.90:8872/probe