Nell'ottica di ottimizzare sempre di più i processi, diventa naturale dover eseguire chiamate REST alle API di GitHub per automatizzare determinate operazioni. Tuttavia, non è sempre possibile utilizzare il token di GitHub (il GITHUB_TOKEN), perché questo ha effetto solo nel repository dove risiede il workflow. Infatti, può essere che dobbiamo andare a modificare dei flussi a livello di organizzazione, che vanno tra più repository e così via. In questo caso, sarebbe necessario utilizzare un PAT (Personal Access Token), ma questo ha, per l'appunto, l'identificativo dell'utente che l'ha generato. Sebbene in alcuni casi potrebbe non rappresentare un problema, se il token dovesse essere esposto, chi lo sfrutta potrà accedere a cose alla quale altrimenti non avrebbe avuto accesso e diventerebbe difficile fare la revoke del token in modo efficace.
Per questo motivo, possiamo utilizzare la libreria gh-token, che, genera appunto un token a partire da una GitHub App. Questa, infatti, funge da utenza di servizio. Il token generato da essa avrà una vita limitata allo scope del workflow, pertanto non potrà essere esfiltrato. Vediamo come installarlo:
steps: - bash: gh extension install Link-/gh-token name: Install gh-token extension - bash: | APP_TOKEN=$(gh token generate --base64_key <cert> --app_id <app-id> --install_jwt_cli --hostname 'api.github.com' | jq -r ".token") echo "APP_TOKEN=${APP_TOKEN}" >> $GITHUB_OUTPUT id: token name: Get token
Di fatto, il processo consiste nel richiedere alla CLI di GitHub l'installazione dell'estensione ad-hoc di gh-token, per poi generare il token data la GitHub App, creata in precedenza. Una volta ottenuto il token, lo esportiamo nella GITHUB_OUTPUT, così che possa essere utilizzata negli step successivi del workflow.
- name: Call authenticated API endpoint uses: actions/github-script@v6 with: github-token: ${{ steps.token.outputs.APP_TOKEN }} script: | echo "Doing something with my token"
Commenti
Per inserire un commento, devi avere un account.
Fai il login e torna a questa pagina, oppure registrati alla nostra community.
Approfondimenti
Gestire gli accessi con Token su Azure Container Registry
Triggerare una pipeline su un altro repository di Azure DevOps
Eseguire i worklow di GitHub su runner potenziati
Conoscere il rendering Server o WebAssembly a runtime in Blazor
Gestire il colore CSS con HWB
Supportare il sorting di dati tabellari in Blazor con QuickGrid
Rinnovare il token di una GitHub App durante l'esecuzione di un workflow
Potenziare la ricerca su Cosmos DB con Full Text Search
Testare l'invio dei messaggi con Event Hubs Data Explorer
Gestione dell'annidamento delle regole dei layer in CSS
Applicare un filtro per recuperare alcune issue di GitHub
Evitare (o ridurre) il repo-jacking sulle GitHub Actions