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 tokenDi 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
Gestione del system path nei workflow di GitHub
Centralizzare e governare MCP server e Skill con Azure API Center
Supporto semplificato per le left join in Entity Framework 10
Enterprise Live Migrations - Migrare da Azure DevOps a GitHub
Esporre workflow come server MCP con Azure Logic Apps
Importare repository da Bitbucket a GitHub Enterprise Cloud
Effettuare un clone parziale di un repository di GitHub
Creare una toolbox condivisa per gli agenti in Microsoft Foundry
Azure SQL Database per dev: tutte le novità da non perdere
Utilizzare le direttive più importanti in una file based app .NET
I più letti di oggi
- Effettuare il multi-checkout in linea nelle pipeline di Azure DevOps
- Accedere a risorse e immagini in Windows Store app di Windows 8
- Alleggerire le applicazioni WPF sfruttando gli oggetti Freezable
- Permettere il Drag-and-drop solo su zone predefinite con Silverlight 2.0
- Consumare dati binari in realtime lato client con ASP.NET Core SignalR
- Effetto turnstile su tutte le pagine con il Windows Phone Toolkit
- Personalizare l'icona e le funzionalità di un sito web per iOS e IE
- Caricamenti veloci da CDN e fallback locale con ASP.NET Core
- Utilizzare dati in formato XML in XAML
- Accedere a dati esposti con WebService con Silverlight 1.0


