Page MenuHomePhorge

Travis CI
Updated 1,957 Days AgoPublic

Version 2 of 4: You are viewing an older version of this document, as it appeared on Jan 11 2019, 12:24 PM.
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}}

Last Author
jkramarz
Last Edited
Jan 11 2019, 12:24 PM