Jenkins służy do stawiania projektów w celach testów.
Aby korzystać z Jenkinsa, konieczne jest posiadanie konta LDAP (https://hub.sealcode.org/w/sealcode_wiki/ldap/).
## Korzystanie z Jenkinsa
Zaloguj się do https://jenkins.sealcode.org/ danymi z LDAP. Przejdź do projektu "Deploy to dep.sealco.de", a następnie wybierz opcję "Build with parameters"
{F205046}
Następnie wybierz parametry dla zadanego builda:
* `port` - na jakim porcie ma być wystawiona aplikacja. Jest to port lokalny na serwerze, nie jest otwierany na zewnątrz. Aby dostać się do niego z zewnątrz należy użyć adresu `https://<nr_portu>.dep.sealco.de`. Łączymy się wtedy z nim przez nginx-owe proxy z SSL. Przykładowo: jak wybierzemy port 7777, to dostęp do postawionej aplikacji będzie pod adresem `https://7777.dep.sealco.de`
* `diff` - numer diffa do odpalenia. Jenkins sam pobierze informacje o repozytorium, sklonuje je i zpatchuje tego diffa.
Przejdź do "console output" nowo utworzonego builda. Jeżeli build przejdzie pomyślnie, zobaczysz tam link do zdeployowanej aplikacji.
Szczegółowy tutorial krok po kroku znajduje się [poniżej](https://hub.sealcode.org/w/sealcode_wiki/jenkins/#deployowanie-diffa-szczegółowy).
## Dostosowywanie repozytorium do uruchamiania się w jenkinsie
Trzeba powiedzieć jenkinsowi, jak ma budować zadaną apkę. Robimy to za pomocą specjalnego pliku w repo: `jenkins.start.sh`. Po pomyślnym sklonowaniu repo i spatchowaniu diffa jenkins odpali ten skrypt podając mu jako pierwszy argument numer portu, na którym aplikacja ma nasłuchiwać, a w drugim argumencie - zewnętrzny URL, pod którym będzie dostępna aplikacja.
Przykładowy skrypt jeknins.start.sh znajduje się w repo sealious-playground:
https://hub.sealcode.org/diffusion/PLAY/browse/hotwire/jenkins.start.sh
W jenkinsie jest dostępny docker i docker-compose.
## Deployowanie diffa - szczegółowy tutorial
NOTE: aby mieć dostęp do Jenkinsa, musisz mieć [Sealcode'owe konto LDAP](https://hub.sealcode.org/w/sealcode_wiki/ldap/). W celu jego założenia zagadaj do @kuba-orlik
1. Przejdź do https://jenkins.sealcode.org/
2. Zaloguj się swoimi danymi LDAP
3. Wybierz projekt „Deploy to dep.sealco.de” z listy projektów
{F207745}
4. Kliknij „Build with parameters”
{F207747}
5. Wpisz numer portu i nazwę diffa:
{F207749}
Numer portu to właściwie dowolna czterocyfrowa liczba. Pozwala on wybrać, na którym lokalnym (niedostępnym z zewnątrz) porcie ma się odpalić apka. Apka będzie dostępna z zewnątrz pod adresem `https://<number portu>.dep.sealco.de`, z certyfikatem od LetsEncrypt.
Można odpalać wiele aplikacji równolegle na różnych portach. Jeżeli podamy port aplikacji już istniejącej, to zostanie ona wyłączona i zastąpiona tą nową.
Dla każdej aplikacji zostaje tworzony nowy katalog w workspace tego projektu jenkinsowego. Ten nowy katalog będzie miał nazwę odpowiadającą wybranemu przez nas numerowi portu. Wszystkie te katalogi można podejrzeć tutaj: https://jenkins.sealcode.org/job/Deploy%20to%20dep.sealco.de/ws/
{F207752}
Pomaga to znaleźć wolny port - jeżeli jakiś numer nie pojawia się na tej liście, to znaczy, że jego port nie jest używany przez żadnego innego joba jenkinsowego.
Wewnątrz tych katalogów znajduje się cały kod aplikacji, jej logi oraz dowolne utworzone przez tę aplikację skutki uboczne. Można je podejrzeć za pomocą interfejsu webowego Jenkinsa.
6. Kliknij „Build”.
7. Utworzy się nowy job: {F207759} Kliknij w niego i wybierz "Console Output", aby zobaczyć wynik budowania diffa
8. Jeżeli wszystko pójdzie pomyślnie, to na dole powinna wyświetlić się informacja:
```
...
Creating 8088_test_run ... done
8088_test_run_b3184304f3ca
App started on 8088
Deployed to https://8088.dep.sealco.de
Application logs should be available at https://jenkins.sealcode.org/job/Deploy%20to%20dep.sealco.de/ws/8088/log.html
Finished: SUCCESS
```
Wspomniany w tym komunikacie link do logów prowadzi do pliku z outputem uruchomionej aplikacji:
{F207762, size=full}
Logi te nie odświeżają się automatycznie - ale po odświeżeniu strony wczyta się ich najnowsza wersja. Może to być całkiem pomocne przy debugowaniu ;)