Site icon Gioxx.org

NoAds X Files e GitHub Actions: un’occhiata a experimental.txt

ABP X Files e GitHub Actions: un'occhiata a experimental.txt

Da quando ho spostato tutto il necessario per modellare X Files e i suoi compari (principalmente HWS) su GitHub, ho approfittato della cosa per operare una serie di cambiamenti anche al sito web ufficiale e ai profili dei miei Firefox (su Windows, macOS, Android e un numero non meglio definito di macchine virtuali), abbandonare definitivamente AdBlock Plus (preferendole uBlock Origin) e portare il rilascio delle liste su Raspberry Pi appoggiandomi a degli script bash che fanno il lavoro sporco oltre la “semplice” (si fa per dire) creazione dei filtri (te ne ho parlato in ABP X Files: nuovo processo di creazione della lista stabile e di HWS).

Stamattina (a oggi che sto scrivendo l’articolo, è l’epifania 2021) ho voluto provare a studiare le basi di GitHub Actions per automatizzare la creazione della lista sperimentale che uso sui miei profili Firefox per assicurarmi di non portare dentro filtri che potrebbero danneggiare la tua esperienza di navigazione quotidiana. Lascia che ti spieghi di cosa si tratta e cosa ho messo in piedi “in regia“.

eXperimental Files

È il nome della lista sperimentale, tutt’altro che stabile, è quella con cui posso fare danni senza dovermi preoccupare dell’impatto dato a migliaia di utilizzatori di X Files ufficiale. Ho voluto dare origine a questo nuovo file di filtri nel momento in cui – passando a uBlock Origin – toccava doversi portare dietro a mano i filtri scritti e salvati in un profilo macOS o Windows, in base all’ultimo PC da me utilizzato. È giovane e spuntata su GitHub da poco (prima usavo un mio spazio FTP), si appoggia a un diverso script di bash che la genera nella stessa identica maniera con cui do origine a X Files ufficiale ma chiaramente non annuncio alcunché su Twitter né tanto meno ne carico una copia nello spazio “di backup” che alcuni miei conoscenti utilizzano per problemi di raggiungibilità GitHub nei luoghi di lavoro (regole proxy altamente restrittive).

I passaggi fondamentali restano quindi gli stessi, così come il Raspberry con già tutto configurato a bordo:

git -C "/home/pi/Github/xfiles" pull
cp /home/pi/Github/xfiles/contrib/xfiles_* ./
for s in xfiles_*; do (head -n 1 "${s}" && tail -n +2 "${s}" | sort) > "sorted_${s}"; done
for f in sorted_*; do (cat "${f}") >> experimental.txt; done
rm xfiles_* sorted_*

Dopo c’è giusto il commit & push su GitHub.

Comodo? Beh, diciamo di sì, si tratta di un comando da lanciare sul terminale. Immediato? Tutt’altro. Non si tratta di HWS che ho potuto mettere sotto Crontab e automatizzare, questa tocca “compilarla a mano“: aggiorno i filtri, push su GitHub (grazie all’immediatezza di Atom), entro in SSH sul Raspberry e lancio il comando che crea la nuova versione e la rende disponibile al pubblico (me in realtà, ma nessuno ti impedirà di usarla a tuo rischio e pericolo).

Ho pensato di automatizzare almeno quest’ultima parte, l’ho fatto con GitHub Actions.

Questione di workflow: GitHub Actions

Mai usato prima. Ho iniziato a studiarmelo un po’ stamattina. C’è la documentazione ufficiale, c’è tanto materiale sparso nella community, su YouTube e su una mezza miriade di altri siti web (StackOverflow in primis). Sono partito con il classico Hello World e poi ho iniziato a sperimentare, ho creato un repository apposito dove poter far danni senza rompere le scatole a nessuno, l’ho usato fino a quando non sono arrivato al risultato sperato, l’attuale, quello che ho portato in produzione.

GitHub Actions ti consente di creare workflow. Una serie di operazioni che puoi far eseguire automaticamente al servizio per ottenere un risultato che si adatti quanto più possibile alle tue esigenze. Puoi usare le più disparate tecnologie ma alla base ci sarà sempre un file YAML, “Yet Another Markup Language” (it.wikipedia.org/wiki/YAML), un linguaggio di programmazione relativamente giovane che non avevo mai utilizzato prima. Ti porto alla ciccia per spiegarti in maniera tutto sommato semplice ciò che accade:

name: ABP eXperimental Files
on:
  push:
    paths:
    - 'contrib/xfiles_*'
#  push:
#    branches: [ master ]
#  pull_request:
#    branches: [ master ]

  workflow_dispatch:

jobs:
  build:
    runs-on: ubuntu-latest

    steps:
      - uses: actions/checkout@v2

      - name: Start engine
        run: sh ./sh/datetime.sh

      - name: Prepare list header
        run: |
          echo "[Adblock Plus 2.8]" > experimental.txt
          echo "! Version:" $update >> experimental.txt
          echo "! Title: ABP eXperimental Files: the unstable list" >> experimental.txt
          echo "! Fork sperimentale di X Files, si consiglia di usare la lista Stable!" >> experimental.txt
          echo "! Last modified:" $lastmodified >> experimental.txt
          echo "! Expires: 2 days" >> experimental.txt
          echo "! Homepage: https://xfiles.noads.it" >> experimental.txt
          echo "! Home: https://xfiles.noads.it" >> experimental.txt
          echo "! Blog: https://gioxx.org/tag/abpxfiles" >> experimental.txt
          echo "! Hosting: GitHub.com" >> experimental.txt
          echo "!" >> experimental.txt

      - name: The rocket is ready to be launched
        run: sh ./sh/make_experimental.sh

      - name: Commit
        run: |
          git config --local user.email "41898282+github-actions[bot]@users.noreply.github.com"
          git config --local user.name "github-actions[bot]"
          git add experimental.txt
          git commit -m "Experimental $update del $lastmodified" -a
      - name: Push changes
        uses: ad-m/github-push-action@v0.6.0
        with:
          github_token: ${{ secrets.GHUB_TOKEN }}
          branch: ${{ github.ref }}

Il file si chiama make_experimental.yml e si trova già nel repository ufficiale di X Files. Ti spiego per sommi capi cosa fa:

Dopo svariati tentativi falliti a causa della mia scarsa capacità di muovermi su questo nuovo terreno, sono riuscito a fare centro e portare il repository di test a funzionare come volevo io. Ho replicato il tutto in produzione e sono molto contento che la modifica funzioni così come speravo, creando già tre versioni della lista sperimentale basate su alcuni nuovi filtri che ho caricato nella giornata odierna:

In conclusione

Piccole attività collaterali dalle quali cerco sempre di imparare qualcosa che potrebbe un domani tornarmi utile. Chiaramente avrei potuto continuare a creare la lista sperimentale con un solo comando e una finestra di Terminale aperta, eppure GitHub Actions mi ha dato la possibilità di rendere più snello il processo e farmi scoprire alcune funzioni che fino a oggi ho ignorato, là fuori è pieno di materiale dal quale trarre costantemente ispirazione, ogni tanto bisogna approfittarne.

Anche per stavolta è tutto. In caso di dubbi o domande particolari ti invito a utilizzare la solita area commenti sotto all’articolo che stai leggendo. Se poi ti senti particolarmente magnanimo e vuoi in qualche maniera ringraziarmi per il lavoro che svolgo ormai dal 2007 con le liste X Files, potresti approfittare di questo momento per offrirmi un caffè, una birra o ciò che più preferisci. Puoi sfruttare PayPal, Satispay (non sei ancora iscritto? Fallo subito per ottenere 5 euro in omaggio), Buy Me A Coffee o diventare sostenitore su Patreon. Se non vuoi spendere soldi puoi sempre fare acquisti su Amazon passando dal mio codice referral, il tuo prezzo non cambia ma io recupero una piccola commissione pagata direttamente da Amazon.

Buona navigazione! :-)

#StaySafe

Correzioni, suggerimenti? Lascia un commento nell'apposita area qui di seguito o contattami privatamente.
Ti è piaciuto l'articolo? Offrimi un caffè! ☕ :-)

L'articolo potrebbe non essere aggiornato

Questo post è stato scritto più di 5 mesi fa, potrebbe non essere aggiornato. Per qualsiasi dubbio ti invito a lasciare un commento per chiedere ulteriori informazioni! :-)

Condividi l'articolo con i tuoi contatti:
Exit mobile version