2018-11-23

Nastavení spouštění Jenkins úlohy na webhook z Gitu

Hrál jsem si s nastavováním automatického spouštění úlohy v Jenkins po commitu do GitHubu. Čistě teoreticky jde o triviální věc, kterou popisuje spousta videí, nicméně v praxi jsem narazil na několik problémů, které si tady odložím, abych to příště nemusel řešit. Třeba to pomůže i někomu dalšímu.

Na začátek hezké video, které popisuje úlohu bez nastavení tajného hesla:

Nejprve je třeba připravit Jenkins, předpokládám, že už vám joby a integrace s GitHubem funguje, jen pro informaci je třeba mít nainstalovaný plugin GitHubu.

Dále musí být dostupná adresa JENKINS_URL/github-webhook/ z veřejného internetu (nebo filtru podle GitHub IP adres), případně přenastavena na jinou v JENKINS_URL/configure sekce GitHub/Advanced (to druhé advanced) a políčko "Override Hook URL/Specify another hook URL for GitHub configuration" 

Manage webhooks zůstane nezaškrtnuto (sekce A.3) pro manuální instalaci webhooku na GitHubu.

Protože nechceme, aby každý, kdo se dostane k odkazu webhooku, spouštěl úlohu, je třeba nastavit heslo neboli "shared secret", respektive jej vytvořit v JENKINS_URL/credentials/add/secret text/system/ a pak nalinkovat "Shared secret". Nicméně je taky fajn to nejdříve vyzkoušet, že to funguje a secret přidat později (nezapomněout na to!).

Poté je třeba registrovat job, který se na webhook spustí. Zpátky na seznam úloh, rozklinout ho a možnost configure, pak checkbox GitHub project a do Project url vložit https://github.com/<user>/<repository>/ toto musí být uděláno manuálně.
Níže pak ještě zaškrtnout "GitHub hook trigger for GITScm polling", nebo to přidat do pipeline definice úlohy jako triggers{githubPush()}.

Poslední částí je nastavit URL webook na GitHubu, link: https://github.com/<user>/<repository>/settings/hooks/new, kde se vloží Payload URL: JENKINS_URL/github-webhook/ včetně lomítka na konci, content type jako application/json a secret je ten námi zvolený a uložený string.

Poté je výhodné udělat testovací ping a počkat na zelenou fajku, nicméně vlastní run jobu začně až po prvním commitu. Zejména na začátku nespěchtejte, občas to chce čas na reakci.


2018-11-19

Namespace Microsoft.SqlServer (are you missing an assembly reference?)

Chvíli jsem bojoval s chybovou hlášku u SW buildu na novém serveru, která se při sestavování stejného řešení na starším serveru neprojevovala, což bylo zjevně podezřelé. 


Její znění:
error CS0234: The type or namespace name 'Management' does not exist in the 
namespace 'Microsoft.SqlServer' (are you missing an assembly reference?) 
[...Installer.csproj]
Nepomohlo ruční doinstalování přes Nuget, ani doinstalování Microsoft SQL Server Feature Packu, ale bylo potřeba přidat celý SQL Server 2017 Developer edition, který zjevně deplnil některou závislost do systému Windows Server.

Ještě zkusím i odinstalování...
 

2018-11-10

Finské obchody, supermarkety a nákupní zvyky

V dalším obecném článku o Zemi tisíců kaluží bych rád revidoval znalosti ohledně nakupování, zejména proto, že jsem narazil na starší články, které jsou již dnes neaktuální – rozpoznávací znamením je skutečnost, že mluví o zavřených obchodech o nedělích, což už dnes není pravda.


Maloobchodní trh ve Finsku má nám poněkud neznámé prvky, které se hodí za to vypíchnout. Zejména skutečnost, že naprostá většina zboží se prodá v supermarketech a případně specializovaných hypermarketech, malých či specializovaných obchůdků je málo. Nejvíce je to vidět na drobných potravinách, například prodejnu pekárny či sýrárnu budete hledat opravdu těžko. Je to dáno hustotou obyvatel, mzdami zaměstnanců a třeba u těch pekáren taky tím, že Finové pečivo moc nejí.

Ve všech zmíněných obchodech a v podstatě všude v zemi zaplatíte kartou a není potřeba mít vůbec hotovost, snad jen kvůli kolečka do vozíku. Do specialit také patří zmínit, že téměř všechny lahve a plechovky jsou zálohované a vrací se v obchodě do strojů. Proto nikde neuvidíte se povalovat PET lahve a když už, tak je někdo fofrem "uklidí".

Kam na průběžný nákup či svačinu? Do supermarketu! V centru města se obvykle nachází nějaký K-market, S-market, Siwa či Sale, které odpovídají různě velkým našim Albertům, Hruškám či Billám. Pokud budete po supermarketech pátrat, určitě bude nějaký v podzemním patře obchodních domů Stockmann či Sokos.

Ještě menší prodejnou jsou R-kioski u kterých naleznete ekvivalent v Žabkách. Hádám, že do R-kiosu zavítáte asi málokdy, jejich největší síla je v rychlosti nákupu a speciálních službách, neboť umí doplnit kredit na lítačce do MHD a podobné vychytávky jako terminály Sazky (včetně různých loterií, poštovních známek atp.). Bonus, o kterém erasmáci moc neví, že v nich lze zakoupit na studentskou slevu nejlevnější kávu do velkého kelímku (1,5 €).

Když máte okamžitý hlad a zrovna koukáte, co byste kde zakousli, tak díky absenci pekáren a otravnosti chození do supermarketu je variantou skočit do nějakého řetězce fast foodu. Skutečně je základní cheesburger v McDonald nejlevnějším jídlem, kterým se dá rychle sehnat, protože stojí 1 €, což je stejná cena jako u nás za obloženou housku. Tento trend odpozoroval i BurgerKing, který už má také Chicken/Cheese/Hamburger za jedno éčko.


Stranou tak stojí Hesburger, neboť jako domácí značka rychlého občerstvení si drží prestiž a jejich sýrová bulka je za 2,60 €. Já tam osobně chodím, když chci z nějakého důvodu sedět déle a utratit více, protože to zkrátka není jako všude jinde i když vlastně je. Všechny tyto řetězce mají v noci jinou (dražší) nabídku než ve dne! Nechtěl jsem se do toho motat, ale jestli hledáte normální teplé jídlo, koukněte se, zda je okolo nějaká univerzitní restaurace, protože ty bývají zdaleka nejlevnější a můžete do nich i když nejste studenti.


Jak je to s týdenním nákupem? Obvykle se někde za městem nachází nákupní zóna. Překvapivě často to není gigantické nákupní středisko českého typu (tedy vlastně zastřešené město s butiky), nicméně taky tam pořídíte všechno. Mnou oblíbená kombinace jsou řetězce Prisma a Lidl, protože oba patří mezi ty nejlevnější s dostatečně širokým sortimentem. Překvapivě není Lidl tím automaticky nejlevnějším, ale v některých produktech se přetahují právě s Prismou, a tak vám doporučuji zavítat do obou. Záleží pak na vás, mě přijde nudné kupovat si za stejné peníze stejné výrobky, které znám z domů (rozdíl v kvalitě jsem nezaznamenal).

Dále můžete narazit na K-Citymarket, který je obyčejně nejdražší z jmenovaných nebo obstojné Minimani, které mi pro změnu připomíná Globus tím, že má oranžový styl prodejen. Zásadně se pak nechodí do dnes nejlevnější řetězce Kärkkäinen, protože jeho majitel otevřeně popírá holokaust.


Velké obchody jsou v současném Finsku otevřené téměř pořád, což dříve nebývalo a je o tom spousta zavádějících informací po českém internetu. Jediné faktické omezení je ukončení prodeje alkoholu v 21 hodin díky prohibici. Jakmile odbije 9. večerní, už to oficiálně pokladní přes kasu nedostane, i když se někdy stopka bere až od momentu, když uzavřou příslušnou nápojovou sekci: co máte v košíku si tedy můžete koupit. Obchod pak dále jede i do 23 hodin. Jako i u nás platí, že o pátečním odpoledni s večerem a sobotě vypukne nákupní horečka a je lepší se v tento čas obchodům vyhnout.


Fini jsou schopní kupovat v supermarketu i rybářské potřeby (protože je tam mají), nicméně existují i specializovanější obchody, ale není jich mnoho. Klasický je XXL-Sport, kde si kromě běžného vybavení můžete koupit i loveckou zbraň (a že jich tam mají). Našemu ElectroWorldu odpovídá místní Gigantti, avšak další velký obchod s elektrem tady asi není. 


Hobbymarkety a kutilské potřeby zastupuje mnou oblíbená Biltema, železářství je K-Rauta a náhradní díly pro auta, cyklo, lodě a obecně všechno možné je i v síti Motonet.

Všimli jste si faktu, že co Čech to majitel e-shopu? Finskou jedničkou je Verkkokauppa.com a to je tak asi všechno co z domácích hráčů znám. Domorodci jinak nakupují na německém Amazonu a pak klasicky v Číně.

Co oblečení? V rámci těch větších obchodních center lze najít klasické butiky o kterých nic nevím, stačilo mi, že jsem se v nich snažil si koupit bundu. Tamtéž i samostatně v centru se nachází všechny klasické značky H&M, C&A, New Yorker a podobné. Nevím jestli potěší nebo naštve skutečnost, že tyto obchody mají cenovky jak v eurech, tak českých korunách, protože jde o globální zboží. Nezapomeňte, že místní s 3x větší kupní silou vnímají cenu proti nám jako třetinovou. Co chodí domorodkyně prohrabávat jsou rozšířené second handy "kirppis", kde jsou hadříky, ale i domácí vybavení za jednotky euro. Mají na to docela dobrou strategii, kdy si vy jako prodejce pronajmete místo na měsíc, umístěte do něj své věci a podle toho, jak jsou atraktivní nebo drahé si je lidé koupí a tím se zaplatí nájem, zbavíte se věcí a ještě vyděláte. Přijde mi to geniální a myslím, že by se to chytlo i u nás.

Ještě chodím kupovat benzín do auta: Domácím premiantem je síť Neste a podle toho vypadají ceny, mnohem lepší je zavítat ke stanici ABC. Překvapivě jsou nejlevnější stanice Shell (mimo těch v centrech měst), protože Fini začali Shell bojkotovat za ekologickou katastrofu v deltě Nigeru, ale už (2018) to ustává. Pokud máte jako já starší benzíňák, potěší vás skutečnost, že na severu je hojně rozšířený provoz vozidel na E85, jeho cena je obvykle 60 % z ceny Naturalu 95 a v motoru to hoří taky. Etanol nemají všude, je třeba trochu se koukat, ale stále je docela dobře dostupný, zatímco v Česku zmizel z prodeje. Standardem jsou 24/7 samoobslužné benzínové pumpy, kde se platí kartou (občas přijímají i bankovky), hustota čerpacích stanic mi přijde slušná.

Tolik k mé sumarizaci finských nákupních zvyklostí. Snad to pomůže pro přehled nebo snad něco hledáte. Až si vzpomenu na další, tak článek rozšířím...


2018-11-01

Finsko, ve stručnosti podzim

Běžný život pokračuje, tak abych nezapomněl, co se děje a ostatním dal vědět, že jsem stále naživu.


Výhodně jsem na inzerci zakoupil robotický vysavač a mám z něj radost, což je známka stárnutí. Je to fajna kravina, která se dříve či později zamotá do kabelů, takže po návratu domů jde o překvapení, která nástraha jej dostala tentokrát.


Přestěhovala se nám kancelář do nově zrekonstruovaných prostor. Úspěšně se mi podařilo téměř nebýt v náhradním skleníku, kde na nás zbytek firmy zapomínal včetně zásobování, takže jsme tam neměli ani čaj. A protože naším stěhováním byla ukončena 3/4 roku trvající rekonstrukce, tak nemohla chybět "kolaudační" párty. Když jsme šli s 6 kolegy pro zásoby, tak jsem se tázal sám sebe, jak to mají naplánované, že pivo musí dojít ještě před začátkem, což se taky stalo. Nakonec byla vyslána posila do obchodu ještě dvakrát, naposledy 5 minut před ukončením prodeje alkoholu ve 21 hodin. Finové jsou divný národ, celý týden se v open-space ani v kuchyňce nikdo nebaví, všichni jsou zticha a aby měli nějaké socializační tendence, tak musí být opilí na šrot, což považuji za extrémně nesympatické, neboť pak na další den dělají, že se nic nestalo a zase se s nikým nebaví.


Někdy v květnu tohoto roku jsem prohlásil, že se do Vaasy už nejedu. Takže jsme jeli s Iiris do Vaasy se potkat s našimi kamarády, kteří odtamtud ještě neutekli. Zvolil jsem cestu autem, protože zpátky jsme měli vést nějaké žďorby. Jak zoufalé město to je se ukázalo po "honičce" na 20 km dálnici před městem, kdy jsem se rozhodl odplatit otravovi se špatně seštelovanými světly tím, že jsem vyrovnal rychlost na maximální dovolenou v momentě, kdy mě začal v rychlém pruhu předjíždět. Abyste rozuměli, ve Finsku je jezdí podle předpisů, oni rychlostní limit neberou jako doporučený. Takže jsem zahlásil šach a celou dobu ho držel vedle sebe, což mi přišlo zábavné. Ve chvíli, kdy jsem odbočoval na sjezd prohlásila Iiris, že toho řidiče zná, že chodí zpívat karaoke. Taková je to dědina.


V sobotu jsem si stanovil jako hlavní cíl vyzkoušet Rekola známá z Ostravy i jiných měst, ale také nově ve Vaase, protože město a studentská unie oslovila tento (český) start-up. V rámci Finska jde o ideální volbu místa, neboť bez kola se Vaase nehnete (všude je to trochu dál) a zároveň je MHD mizerná (a drahá). A tak mám ve svém profilu další město, systém funguje stejně jako u nás.


Cesta zpátky pak probíhala standardně, a protože rád jezdím jinými cestami než obvykle, chtěl jsem navštívit město Virrat. Při té příležitosti jsem si nakreslil ohodnocený graf silnic mezi Jyväskylou a Vaasou, aby zjistil, že neexistuje výrazně výhodnější trasa, jsou tady v podstatě 3 plně vzdálenostně i časově ekvivalentní cesty. Obecně je řízení ve Finsku poněkud monotónní a náročné zejména když nemáte tempomat, nicméně občas to vypadá i romanticky, tak jsem pořídil krásné podzimní video. 


Na poslední zářiový víkend si město Jyväskylä připravila program v podobě "festivalu" světel, který se projevoval tak, že některé lokality byly netradičně nasvíceny a na vodu vypuštěny lodičky se svíčkou po vzoru Večera sokolských světel. Programově se navíc akce bila s Nocí vědců, všude po městě bylo plno lidí, MHD jezdila zdarma. "Bylo to sice hezké, ale že bych to musel vidět dvakrát?"



O tomtéž víkendu jsem navíc našel na Facebooku info, že z důvodu modelářské burzy je vstup do zdejšího leteckého muzea zdarma a tím byl určen sobotní program. V muzeu už jsem byl před dvěma roky, a tak jsem se dozvěděl, že se nic nezměnilo. Tentokrát jsem však ušetřil 5 € na vstupném, které jsem vzápětí vydal za palačinku, kterou prodávali zdejší skauti a ke kterým se připojila česká skautka se kterou se znám od vidění.


Několikrát jsem zmínil, že začíná být zima a mě dostihla skutečnost, že nemám žádnou pozdně podzimní bundu, protože se mi velbloudo-koženková na jaře rozpadla. Nezbývalo než vyrazit na nákupy, které byly neuvěřitelně otravné, protože jsem měl představu, co bych asi tak chtěl, což je vždy problém. Nyní již znám všechny obchody v okolí, přesto však lov dopadl dobře. V jednom luxusním butiku nabízeli bundy s cenovkou kolem 200 € a žádná nebyla hezká, naštěstí jsem při odchodu narazil do stojanu, kde měli zboží zlevněné o 75 % po focení katalogu. Takže po předchozím dvoudenním neúspěšném lovu na bundu mých představ se zrovna tam nacházel ideální model. Co tím chci říct, že už nechci obchody zase hodně dlouho vidět...


Už dlouho jsem nezmínil žádný alkohol. První říjnový čtvrtek vypukla Finy dlouho očekávaná studentská akce, na kterou se i sjížděli z okolních měst. Cílem bylo projít od 10 do 30 hospod a v každé si dát nějaký nápoj nebo jídlo. Za nasbírání dostatečného počtu známek byl pak uchazeč ohodnocen "akademickým" titulem, když byl ještě schopný dojít na místo, kde se to vyhodnocovalo. Já jsem se účastnil prvním rokem, a tak mi náležel pouze titul nejnižší, který nebylo těžké naplnit. Asi největším přínosem takové akce je zjištění, že se tu na každém rohu taktéž nachází nějaká hospoda či bar, které jsem byl schopný za celou dobu přehlédnout. V závěrečném místě programu jsem se pak už podruhé ocitl pod pódiem, když hraje Pete Parkkonen.


Začal se blížit termín mého krátkého návratu do ČR, a tak jsem chtěl navštívit místo, kam jsem se už dlouho chystal a tím je muzeum a hřbitov železniční techniky v Haapamäki. Místo, které v českém ekvivalentu kombinuje Lužnou u Rakovníka a Českou Třebovou. Velice elegantně se mi podařilo dorazit jeden týden po ukončení letošní sezóny, a tak se na místo musím vrátit v květnu dalšího roku. Naštěstí se dá si projít podél trati odstavené vozy i když nevím co je větším hřbitovem, protože z druhé strany plotu jsem viděl parní mašiny skutečně srostlé s okolní přírodou.



Říjen jsem ukončil dvoutýdenní návštěvou domova s mezizastávkou v Krakově při výletu s Kroužkem přátel MHD z Ostravy, protože připravený program byl, jak bývá zvykem, vyšperkovanými dopravními zajímavostmi i příjemnou společností. Navíc jsem zjistil, že spojení Helsinki-Krakow-Ostrava je při dobrém načasování rychlejší a snad i pohodlnější než Helsinki-Praha-Ostrava, jen tentokrát bylo potřeba nejít spát a jít na autobus, protože dostat se na ranní lety z letiště Vantaa je ze vzdálenějšího Finska nemožné.

2018-10-24

Jenkins stops pipeline from Powershell

When you realize inside some job that you want to terminate running job in Jenkins you need to find way, hot to pass message to proper level where is Jenkins actually able to terminate the job. I am using this way with calling authorized URL which is terminating the job.

Jenkinsfile pipline is calling powershell and passing there API token from credentials (manually inserted to Jenkins => Credentials)
script
{
    if(env.GIT_PREVIOUS_SUCCESSFUL_COMMIT !=  null)
    {
        withCredentials([string(credentialsId: 'JenkinsAPIcredentials', variable: 'apistring')])
        {
            echo 'checking number of changes and stopping job if nothing new happened'
            powershell 'powershell -File $env:WORKSPACE\\stop-script.ps1 -phrase "stop-job" -buildNumber $env:BUILD_NUMBER -gitprevious $env:GIT_PREVIOUS_SUCCESSFUL_COMMIT -gitcurrent $env:GIT_COMMIT -jenkinsUrl $env:JENKINS_URL -buildIDurl $env:BUILD_URL -apistring $env:apistring'
        }
    }
}
What is happening inside powershell script? There is needed to generate authorized POST call to Jenkins server, luckily is process few lines of code. Part of code is missing definition of parameters in Powershell.
if($phrase -eq "stop-job")
{       
    $commitsnumprevious = (git rev-list --count $gitprevious)
    $commitsnumactual = (git rev-list --count $gitcurrent)
    $difference =  $commitsnumactual-$commitsnumprevious

    if($difference -le 0)
    {
        $url = $buildIDurl+'stop'
        $Bytes = [System.Text.Encoding]::UTF8.GetBytes($apistring)
        $Base64bytes = [System.Convert]::ToBase64String($Bytes)
        $Headers = @{ "Authorization" = "Basic $Base64bytes"}
        $CrumbIssuer = "$jenkinsUrl/crumbIssuer/api/xml?xpath=concat(//crumbRequestField,`":`",//crumb)"
        $Crumb = Invoke-WebRequest -UseBasicParsing $CrumbIssuer -Headers $Headers
        $Regex = '^Jenkins-Crumb:([A-Z0-9]*)'
        $Matches = @([regex]::matches($Crumb, $Regex, 'IgnoreCase'))
        $RegCrumb = $Matches.Groups[1].Value
        $Headers.Add("Jenkins-Crumb", "$RegCrumb")

        try
        {
            $response = Invoke-WebRequest -Uri $url -Headers $Headers -Method POST
        }
        catch
        {           
            Write-Error "Stopping of job failed! " $_.Exception.Response.StatusCode.Value__
        }       
    }
}
I hope this few lines of code can make your day easier.
 

2018-10-16

Jenkins checkout git by commit id parameter

Discussion forums on Internet are providing answers for your question "how to check out specific git hash in Jenkins" quite easily for a manual procedure, but if you want to do it programmatically inside pipeline defined in Jenkins file or even by parameter problems raise.


It makes sense to check out specific git hash because it's unique inside repository and if you add git sha in job configuration GUI (Branch Specifier (blank for 'any')) then you really get the specific version in your workspace, so where is the problem?


Inside pipeline, block checkout you need to echo this commit from the variable by only one syntax even there are at least 3 other different ways usually works for printing the variable.

checkout([$class: 'GitSCM', branches: [[name: "ECHO GIT SHA HERE"]], userRemoteConfigs: [[credentialsId: 'string', url: 'string']]])

So the only one correct way is to use:
  • branches: [[name: "${params.BRANCH_NAME}"]],

because this are not working (but they are still printing value):
  • branches: [[name: env.BRANCH_NAME]], 
  • branches: [[name: ${env.BRANCH_NAME}]], 
  • branches: [[name: "${BRANCH_NAME}"]],


So to solve this I burned many hours. The syntax of Groovy is not enough mature yet, anyway I hope this can help you and if you need to do more magic with parameters as git values, I can recommend this plugin.

2018-09-25

Vaasa, Finsko - kam na výlety

Dovolím si vytvořit souhrnný článek kam se vydat na výlet v okolí Vaasy, respektive kam jsem se vydal na výlet já, protože dohledat některá místa mi dalo dost práce a tak se rád podělím výměnou za nějaký další tip, pokud máte.


Ve Vaase toho není moc co dělat, zejména z českého pohledu, a značně omezujícím faktorem jsou dopravní prostředky, které máte k dispozici. Přesto je tu několik pěkných míst, která stojí za to prozkoumat nebo jejich návštěvou alespoň zaplnit některý z volných víkendů.

Pešky

Po vystoupení z vlaku nebo autobusu v "cestovatelském centru" neboli sdružené zastávce vede přímá cesta na hlavní náměstí, odtud bych se dále vydal v kolem kostela a radnice na pobřeží Hovioikeudenpuisto, kde je zámek, galerie Kuntsi (občas zdarma) a mlýn předělaný na univerzitu Åbo Akademi, kde se dá najíst za studentské ceny. Podle mého názoru je tato oblast jednou z nejhezčích ve Vaase a hodí se tam posedět nebo udělat piknik. Má slova potvrzují i studentské akce, které se tam obvykle konají. Pokud se vám na tamějších kolejích do přístavu podaří uvidět vlak, stanete se svědky zázraku.



Kam pak dále? Vydal bych se dále kolem pobřeží a elektrárny Vaasan sähkö s unikátním sloupem směrem do kampusu Vaasan yliopisto, který to vyhrál soutěž o nejhezčí finskou univerzitu. V budově knihovny Tritonia se dá pak volně posedět, dát si kávu v kavárně Oskar a připojit na Eduroam. Oblast mezi knihovnou a mořem je za pěkného počasí opět velmi krásná s obzvláště působivými západy slunce, pár kroků se dá také věnovat k pláži na Palosaaren salmi. Za rohem je pak Vaasan Merimuseo, námořní minimuzeum, kde jsem nikdy nebyl uvnitř.




Na kole

Jsem rád, že v září roku 2018 mohu říct, že si máte půjčit Rekolo a zajet kamkoliv stejně jako v Ostravě, neboť s tímto českým startupem město a studentská unie navázala spolupráci. Mimo utilitární přesun po městě se hodí navštívit Vanha Vaasa, původní centrum města než vyhořelo, kde je dominantou skelet kostela.


Z větších výletů se pak můžete vydat na pláž do Strömsö, kde je dům ve kterém se natáčí švédská kutilská show. Jedna cesta je 10 km, takže nic náročného.


Vydal jsem se na kole také do Meteoria Söderfjärden, místo dopadu meteoritu, kde je minimuzeum a venkovní prezentace. Kdyby se vám nechtělo až tam, koukněte na to alespoň ze satelitních map. Cestou zpátky nebo jako hlavní cíl vyšplhejte na Öjberget s rozhlednou na jediném kopci široko daleko. Po cestě je ještě uvidíte starý větrný mlýn, ať je i něco pro Instagram.

Autem

Zde je jednoznačným favoritem rozhledna Saltkaret ve švédské oblasti Björköby. Je odtud vidět Archipelago, soustava ostrovů která je poměrně rychle zaplavována oceánem, čemuž se věnuje výstavka v rozhledně. Cestou přejedete přes Raippaluodon silta, nejdelší most ve Finsku na jehož začátku je piknikové posezení a na tom druhém restaurace.



Tip, kde grilovat či snad přespat by mohl být turistický přístřešek (laavu), který nemá jméno, ale najdete ho na souřadnicích 63.1576481N, 21.3075178E je u impozantního vlnolamu v místech bývalé vojenské základny.

Po cestě do Jyväskyly jsem ještě viděl rozhlednu od lyžařského skokanského můstku Vörå rullskidbana, takže to tam můžete prozkoumat a dát mi vědět, případně poslat fotku.

Na delší výlet by pak mohla být úzkorozchodná železnice na Museorautatie Kovjoen asemalla.

Lodí

Jako se říká, že největší zábava v Helsinkách je plavba do Stockholmu, tak i ve Vaase se dá zabavit tím, že odtamaď odjedete trajektem Wasaline do Umeå ve Švédsku. Obvykle jsou trajekty nesmyslně drahé, nicméně ve středy je akce za 5€. V cíli taky nic není (kromě elektrobusů z Ostravy), ale i cesta je cíl někteří říkají, zejména s kamarády a lihovinami v příručáku.



Autobusem

Vydat se dá se společností Onnibus do jakéhokoliv jiného většího města. Doporučuji Tampere, Turku nebo Oulu i když to chvilku trvá vzhledem k poloze Vaasy stranou všeho dění. Do Jyväskyly jezdil dříve přímý spoj, ale od roku 2017 je to s přestupem (přípojem). Jednou v životě stojí za to taky Vaasa-Helsinki, protože 7 hodin v sardinkobuse se musí zažít...


Letadlem

Vaasa má letiště odkud toho překvapivě létá docela dost, zejména ve srovnání s jinými vnitrozemskými letišti ve Finsku. Koukněte... Ale na polská nízkonákladová letiště a spojení to prostě nedosáhne...

Tolik můj stručný přehled, co se dá ve Vaase dělat, neboť do toho města obvykle jezdí výměnní studenti z Česka i Slovenska, stejně jako kdysi já a zajímá je, co by se dalo dělat. Více o Finsku v mém seriálu.

2018-09-17

Finsko, ve stručnosti konec léta

Projekt, na kterém jsem spolupracoval s firmou v rámci školy nebyl plně dokončen, respektive je zde stále prostor pro zlepšování, a tak jsem přijal nabídku na něm dále pracovat po promoci a prázdninách doma...


Česko jsem opustil v posledním srpnovém týdnu, abych první dny strávil v Tampere u Iiris a její mamky. Mimo kontroly probíhající stavby tramvajové trati se mi taky podařilo organizovat nákup a přesun nové pračky a její zapojování. Koupit redukci na vodovodní přípojku je ve finštině (ale i angličtině) docela výzva, nicméně povedlo se a nikoho jsme nevytopili...


Druhá část dobrodružství v Tampere byla spojená s nutností se sbalit, naložit a dopravit do Jyväskyly, kde jsme si měli v posledních předvíkendových hodinách provozu kanceláře vyzvednout klíče od nového ubytování. Byt byl tradičně bez jakéhokoliv nábytku, protože jsem již opustil erasmáckou ubytovnu. Před odjezdem od Iiris bylo potřeba chvíle "rabování" a přemísťování lupu v podobě gauče či jídelního stolu do vypůjčeného vozíku, který byl sice obrovský, ale jeho víko mělo stupňovitě se zužující tvar, které učinilo jeho přiklápění značně dobrodružné až rozčilující.


Cesta proběhla bez problémů, až na závěrečné parkování, neboť vchod do domu byl plný přesunujících se nájemníků, kteří zaparkovali (na Finy netradičně), kdekoliv se dalo, a tak na mě zbylo sice bezpečné, ale trochu vzdálenější místo, na kterém jsem o pár hodin později dostal 60 € pokutu za "parkování" v zákazu stání. Momentálně tuto aféru řeším s místním oddělením Klubu aktivních seniorů, které tyto otravné agenty posílá do ulic. Nicméně jak je na severu zvykem i u okýnka na radnici si můžete stěžovat anglicky, formulář je v angličtině a výsledek je možné sledovat online. Schválně pro porovnání pošlu Iiris řešit protest na Městskou policii v Ostravě...


Další drama nastalo, když jsem si jel na původní místo ubytování vyzvednout své vozidlo, které tam na mě 3 měsíce čekalo a kterému se za tu dobu z neznámých důvodů vybila baterie. Telefonátem na asistenční službu jsem dostal radu, jak správně nastartovat po kabelech, protože mi to předtím nešlo (je potřeba to nechat nějakou chvíli spojené). Po chvilce to chytlo, já přejel ke sloupečku pro zimní vyhřívání a odtud připojil na nabíječku. Vozidlo je tedy zprovozněno a já doufám, že další hovor na asistenčku od ÚAMKu nebude už zase rok potřeba.


Ještě před návratem toho prvního auta i vozíku, se nám podařilo ulovit pracovní stůl na facebookovou inzerci, protože se do auta předtím nevešel. Proč to zmiňuji je drobnost, že český internet je plný služeb typu Bazoš či SBazar, a tak je doma FB Marketplace oblastí pro mladé, na rozdíl od Finů, kteří si jej již značně osvojili, jelikož nemají vhodnou náhradu.

Cestu Jyväskylä-Tampere umím už zpaměti i s místy radarů, na cestu zpátky jsem se rozhodl zkontrolovat stav WRC trati Ouninpohja, která leží velmi po cestě. První fakt: tato cesta byla před letní Rallye Finland docela rozbitá, nicméně už je zase opravená. Místní kamarád posměšně říkal, že v centrálním Finsku se silnice opravují jenom kvůli rally. Druhý fakt: jet "nejnáročnější trať rallye na světě" s prázdným vozíkem je docela blbý nápad, a tak jsem to vzal ještě více kondičně než obvykle. Zpátky jsme pak z ekonomických důvodů použili autobusu, ze kterého to konečně není domů taková strašná štreka.


Po náročném víkendu začal náročný týden, neboť se zde rozběhl akademický rok i se všemi akcemi s tím související. Dále jsem si nechal opravil své jízdní kolo, kterému přeskakovala přehazovačka takovým způsobem, že jsem z toho šílel. Nicméně cena elementárního zásahu byla vysoká, což mě "baví" sledovat v kontrastu s tím, jaké hrozné křápy si za ne až tak levný peníz kupují místní výměnní studenti, kterým podobné lapálie hrozí mnohem dřív než mi po ujetí 4 000 km.


Jelikož z principu své národnosti nemohu vynechat akci, která je pro mě zadarmo, přihlásil jsem se na zdejší Finlandia Marathón, jehož nemalé startovné mi uhradila firma. Trať na 10 km se běžela v deštivém a sychravém pátečním večeru. Stejném jako loni, když tu byli, teď už manželé, Konvičkovi. Výsledek 54:40 splnil má předsevzetí mít čas pod hodinu, neboť jsem neměl ponětí o výsledku, protože 10 km normálně neběhám. Celý víkend jsem pak cítil protesty proti pohybu od svalů na nohou. Za hodinový sportovní výkon nás pak firma odměnila asi 2 hodinovým sezením v sauně přilehlého drahého (normální finská cena) hotelu s plným minibarem. Sportu zdar!



No a o víkendu, když přestalo pršet jsme šli s Iiris zkontrolovat Tomovo oblíbené místo k přespání ve volné přírodě. Úchvatné je především tím, že se na něj jede malým trajektem, který je poháněn lidskou silou, nicméně místo samotné bylo v nádherném podzimním dni přecpáno lidmi. Po drobné turistice naučnou stezkou jsme se ještě vydali zkontrolovat místní letiště, které odpovídá provozem Mošnovu a na kterém jsem z pochopitelných důvodu nikdy nepřistával.



OK, to jen tak, co se tady děje v mezičase.

2018-09-10

Jenkins pipeline if-else for null variable

I was struggling few days with solving scripting problem in Jenkins Pipeline job definition. Since my Powershell scripts are using parameters from Jenkins and accepting of zero lenght / null values is problem in command line. So how to secure the script?

It was about variable $env:GIT_PREVIOUS_SUCCESSFUL_COMMIT whis is empty unless first run was actually successful, but you need to think about it in script definition. It's about one ternary operation in any normal scripting language, but not in Groovy which is used in Jenkins pipeline.

So how to do? Option one is stage based:
stage('First-run')
{
when { environment name: 'GIT_PREVIOUS_SUCCESSFUL_COMMIT', value: ''
}
steps
{
echo 'There is no successful previous build, need to run completely.'
}
}

stage('Regular-run')
{
when { not { environment name: 'GIT_PREVIOUS_SUCCESSFUL_COMMIT', value: '' }}
steps
{
echo "Regular run with ${GIT_PREVIOUS_SUCCESSFUL_COMMIT}"
powershell 'powershell -File $env:WORKSPACE\\script.ps1 -phrase "start" -buildNumber $env:BUILD_NUMBER -gitprevious $env:GIT_PREVIOUS_SUCCESSFUL_COMMIT -gitcurrent $env:GIT_COMMIT -jenkinsUrl $env:JENKINS_URL'
}
}
There you see that variable is checked for step block and block is executed only when variable fits. This solution sometimes not fulfill all requirements of condition, so there is also another solution for inside if-else expression.

stage('Everytime-run')
{
steps
{
script
{
if(env.GIT_PREVIOUS_SUCCESSFUL_COMMIT !=  null)
{
echo "PREVIOUS COMMIT IS NOT NULL - ${GIT_PREVIOUS_SUCCESSFUL_COMMIT}"
powershell 'powershell -File $env:WORKSPACE\\script.ps1 -phrase "start" -buildNumber $env:BUILD_NUMBER -gitprevious $env:GIT_PREVIOUS_SUCCESSFUL_COMMIT -gitcurrent $env:GIT_COMMIT -jenkinsUrl $env:JENKINS_URL'
}
else
{
echo 'PREVIOUS COMMIT IS NULL'
}
}
}

}
Exploration of these constructions took me lot of time, so I hope you can solve it without issues.

2018-09-05

Výměna InKarty ČD na ODISce

Rád s sebou nosím minimum karet a dokladů, proto mám nahranou zákaznickou Kartu Českých drah na kartě Dopravního podniku Ostrava, protože pak ve vlaku ukazuji jenom kartičku a nemusím mít jízdenky vytištěné, což mi při mé minimální frekvenci ježdění vlakem plně vyhovuje. 



Historicky jsem měl první ODISku a na ní přidal kartu ČD, která pak funguje ve všech vlacích ČD kdekoliv v ČR i když se na vás občas divně dívají a ptají, jestli je to ta správná karta. Nemůže pak na ní být elektronická peněženka ČD, ale tu k ničemu nepotřebujete, pokud si kupujete všechny jízdenky kartou online.

ODISku jsem si objednával jako jeden z prvních (nezaměstnanců DPO) a tak jsem měl dokonce nějakou atypickou bez loga z tenčího plastu s expirací na 6 let, které právě letos uplynuly a daly vzniknout tomuto článku.

Objednal jsem si novou ODISku a když byla připravena k vyzvednutí (po 7 dnech), zašel jsem tam s přáním o výměnu. Paní mi odebrala starou kartu, přesunula platný kupón a peníze z elektronické peněženky. Dále chtěla vidět platný ISIC (nebo potvrzení o studiu), aby mi mohla přesunout studentský profil (to by podle mě nemělo být vůbec třeba).

A pak začala legrace, neboť jsem se ji zeptal, jestli mi vrátí starou kartu, že je na ní InKarta. To byla otázka, kterou jsem ji rozhodil a čímž zahájila 10 minutový hovor na Speciální kartové centrum DPO odkud dostala odpověď, že nevrátí a že si to mám pořešit s ČD na nádraží.

Mezitím se mi samo v systému ČD zablokovala stará inKarta s informací "Karta zablokována k 16. 8. 2018 In-Kartu lze odblokovat pouze u pokladní přepážky ČD." (respektive nevím, jestli to nezpůsobil některý z těch telefonátů, protože mi to přijde divné, aby to bylo propojeno). 


Vyrazil jsem tedy do ČD centra, kde jsem vyděsil svým požadavkem další pokladní, která začala rovnež zběsile telefonovat a nic nevyřešila. Po 20 minutovém zoufalém dlubání do počítače za asistence druhé pokladní mi vystavila novou žádost o vznik této karty. A stejně jako v minule mám v systému zkomolené jméno i když formulář byl v pořádku. Vypadalo to, že číslo staré karty přinesené na lístečku mě uchránilo od ještě delšího čekání.

Co z toho vyplývá? Hlavně neztraťte ODISku s Kartou ČD v jednom, protože obnovení je na hodinu u dvou přepážek... Doufám, že na patřičných místech optimalizují tento proces, protože expirujících ODISek bude v čase přibývat. A teď si představte, že měsíčník DPO už jde nahrát i na platební kartu, to už bude pro všechny paní úřednice konečná, vystupte prosím...