====== Travis CI ======
Jak wszyscy wiedzą, gdy tworzy się dokument, program czy bibliotekę, po zakończeniu pracy trzeba go wrzucić w odpowiednie miejsce. Jak wiadomo trwa sesja i studenci zrobią wszystko byle się nie uczyć do egzaminów czy kolokwiów. Tak więc czemu by nie zautomatyzować wrzucania najnowszej wersji regulaminu na serwer zaraz po tym, gdy zostanie zaktualizowany ? Pokażę jak można to łatwo zrobić z użyciem Travis-CI Pierwszą rzeczą jaką robimy to stworzenie pliku .travis.yml mniej więcej takiego:
```
before_script:
- sudo apt-get install -y texlive texlive-lang-polish texlive-fonts-extra texlive-latex-extra
script:
- pdflatex -halt-on-error regulamin.tex
```
Taki krótki pliczek powoduje doinstalowanie potrzebnych paczek oraz skompilowanie pliku. Tak więc dokładamy ten pliczek do repozytorium. Zaraz przed pushem do głównego repozytorium włączamy na travis-ci.org obsługę naszego repo. By to zrobić logujemy się na travis-ci.org, wybieramy z naszego profilu konta.
{{:blog:travis-ci:travis-0.png?nolink|}}
Wybieramy po lewej stronie odpowiedni profil, następnie włączamy obsługę travis dla odpowiedniego repozytorium.
{{:blog:travis-ci:travis-1.png?nolink|}}
Potem szybki push i możemy obserwować build naszego cudownego dokumentu.
{{:blog:travis-ci:travis-2.png?nolink|}}
Teraz byłoby bardzo miło, gdyby travis sam wrzucał nasz dokument gdzieś (FTP, wiki czy jeszcze coś innego). Możemy to zrobić dokładając w naszym pliku konfiguracyjnym sekcję after_success (więcej można dowiedzieć się z dokumentacji [[http://docs.travis-ci.com/user/deployment/custom/]]). Użytkownicy i hasła lubią się zmieniać, więc od razu przesuwamy te dane do zmiennych.
<code>
env:
global:
- "FTP_USER=user"
- "FTP_PASSWORD=password"
after_success:
"curl --ftp-create-dirs -T regulamin.pdf -u $FTP_USER:$FTP_PASSWORD ftp://static.hskrk.pl/stowarzyszenie/regulamin.pdf"
</code>
Po tych wszystkich zabiegach nasz plik wygląda mniej więcej tak:
<code>
env:
global:
- "FTP_USER=user"
- "FTP_PASSWORD=password"
before_script:
- sudo apt-get install -y texlive texlive-lang-polish texlive-fonts-extra texlive-latex-extra
script:
- pdflatex -halt-on-error regulamin.tex
after_success:
"curl --ftp-create-dirs -T regulamin.pdf -u $FTP_USER:$FTP_PASSWORD ftp://static.hskrk.pl/stowarzyszenie/regulamin.pdf"
</code>
Jednak trzymać hasło do naszego serwera czystym tekstem w otwartoźródłowym projekcie to proszenie się o kłopoty. Travis pozwala na szyfrowanie naszych danych (dokumentacja) . Wystarczy by wpis który ma być ukryty zrobić polem o nazwie „secure” i travis odszyfruje jego zawartość kluczem wygenerowanym dla repozytorium. Tak więc sekcja env konfiguracji będzie wyglądać tak:
<code>
env:
global:
- secure: "FKohlBkvPVrrz6E7Vuik4GUhDyeSpVW8Fa0JN9L4yX2Zxa8SvYH/HIgPRCVGfyEuXwEqaVzLiMPVKnzRcUnDXE9WVWQ5LaPpzT5dkDk9qpz2DRS1S45HJyrm53ps8ohc3qE1bXacIh3/VwtEqfTotv6i0foFDOPlhsbDOxLjUls="
- secure: "D2mNJOq3+o0/NHJFVD2W8SjErgJvdvXLkjiL3JkxTIvyISf7zzFhKHhQ68w+mhPpFhCO2rLRB6XkoKBYGTS1J36ZvtKjeHbnDO9qpplUsrMyznkyuEJZiI6ApbW/YT/RieoPl4HE1p7Ure6gLQBJA0BA+RLCQRiITG6gcvWNjEM="
</code>
Przydatnym może być jeszcze dodanie komentarzy na końcu linii, do której zmiennej się odnoszą.
<code>
env:
global:
- secure: "FKohlBkvPVrrz6E7Vuik4GUhDyeSpVW8Fa0JN9L4yX2Zxa8SvYH/HIgPRCVGfyEuXwEqaVzLiMPVKnzRcUnDXE9WVWQ5LaPpzT5dkDk9qpz2DRS1S45HJyrm53ps8ohc3qE1bXacIh3/VwtEqfTotv6i0foFDOPlhsbDOxLjUls=" # FTP_USER
- secure: "D2mNJOq3+o0/NHJFVD2W8SjErgJvdvXLkjiL3JkxTIvyISf7zzFhKHhQ68w+mhPpFhCO2rLRB6XkoKBYGTS1J36ZvtKjeHbnDO9qpplUsrMyznkyuEJZiI6ApbW/YT/RieoPl4HE1p7Ure6gLQBJA0BA+RLCQRiITG6gcvWNjEM=" # FTP_PASSWORD
</code>
Więc ostatecznie nasze hasła są dobrze zabezpieczone. Nasz końcowy pliczek wygląda tak:
<code>
env:
global:
- secure: "FKohlBkvPVrrz6E7Vuik4GUhDyeSpVW8Fa0JN9L4yX2Zxa8SvYH/HIgPRCVGfyEuXwEqaVzLiMPVKnzRcUnDXE9WVWQ5LaPpzT5dkDk9qpz2DRS1S45HJyrm53ps8ohc3qE1bXacIh3/VwtEqfTotv6i0foFDOPlhsbDOxLjUls=" # FTP_USER
- secure: "D2mNJOq3+o0/NHJFVD2W8SjErgJvdvXLkjiL3JkxTIvyISf7zzFhKHhQ68w+mhPpFhCO2rLRB6XkoKBYGTS1J36ZvtKjeHbnDO9qpplUsrMyznkyuEJZiI6ApbW/YT/RieoPl4HE1p7Ure6gLQBJA0BA+RLCQRiITG6gcvWNjEM=" # FTP_PASSWORD
before_script:
- sudo apt-get install -y texlive texlive-lang-polish texlive-fonts-extra texlive-latex-extra
script:
- pdflatex -halt-on-error regulamin.tex
after_success:
"curl --ftp-create-dirs -T regulamin.pdf -u $FTP_USER:$FTP_PASSWORD ftp://static.hskrk.pl/stowarzyszenie/regulamin.pdf"
</code>
Stworzenie takiego pliku jest dość szybkie. Teraz już zawsze (o ile będzie dostęp do FTP) plik do pobrania będzie zgodny z tym na repozytorium.
====== Autoindex ======
{{indexmenu>blog:travis-ci}}