domenica 15 settembre 2019

VSTS Agent su Raspberry PI

Da qualche tempo sto sviluppando e costruendo alcuni dispositivi per la domotica casalinga, nulla di particolarmente complicato o rivoluzionario, ma che mi semplificano la vita e che soprattutto tengono alto il WAF.
Brevemente, esiste un bot di telegram che fa un po' da integratore per i vari dispositivi che ho in casa ed era un po' che iniziava a scocciarmi il dover deployare tutto a mano, così una sera ho aggiunto la parte che mancava per poter finalmente vantarmi di fare Continuous Deployment con la domotica di casa :-).

Quindi parto, prendo il mio bel raspberry PI 3, scarico l'ultima iso disponibile, senza tanto guardare versioni o altro. Installo senza particolari problemi e inizio a scaricare l'agent di devops di microsoft confidente che tutto vada per il verso corretto.
Leggendo in giro sembra tutto abbastanza semplice ed infatti microsoft ha pensato anche a quelli che hanno raspberry con una bella compilazione già pronta dell'agent. 

Scarico e faccio partire il suo bel config.sh direttamente dalla cartella di installazione e boom, 
primo errore che recita un non ben definito errore "Not configured".
"Ok" dico, c'è google, ma nulla, alcuni consigliano di avviare installdependencies.sh che dovrebbe installare tutte le dipendenze.
"Fantastico", penso, avvio con grande fiducia, tutto bene per un po fino ad alcuni errori di dipendenze.

Ad esempio libicu57. Effettivamente per la versione di Debian che ho scaricato (la 10 denominata Buster) non esiste quella libreria. 
Penso "{sostituire con bestemmie varie}" e poi googlo un po' arrivando a un sito che consiglia di installarla manualmente prendendola dalle distribuzioni precedenti (in questo caso stretch).

"Fantastico" ripenso, installo, rifaccio andare e lo script termina senza errori
"Ci siamo" penso, avvio il config.sh presente nello zip che ho scaricato, ma aimè un bruttissimo "version `CURL_OPENSSL_3' not found (required by ./bin/System.Net.Http.Native.so)" mi blocca la strada.

"Ci risiamo {sostituire con bestemmie varie}" anche googlando un po' non trovo nulla, fino a che, a tarda notte, arrivo qua: https://blog.mjjames.co.uk/2019/07/running-tfs-build-agent-on-your.htmlhttps://blog.mjjames.co.uk/2019/07/running-tfs-build-agent-on-your.html e mi si aprono le porte del paradiso, trovando una soluzione facile quanto impossibile da trovare (al meno per me) che mi rimanda a un post più o meno anonimo di github https://github.com/Microsoft/azure-pipelines-agent/issues/1839.

La superficialità iniziale ora si paga e per la versione di debian 10 che ho usato c'è da fare un porkaround togliendo la libcurl4 e mettendo la libcurl3

A prima vista sembrava una di quelle soluzioni "sul pc è andato ma non so bene perchè", ma invece si rivela la carta vincente, faccio questo togli e rimetti e boom ora parte tutto magicamente

ed ora posso anch'io dire che faccio Continuous Deployment come quelli bravi