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
Miglioramenti nell'accessibilità con Angular CDK
Utilizzare il metodo CountBy di LINQ per semplificare raggruppamenti e i conteggi
Eseguire query per recuperare il padre di un record che sfrutta il tipo HierarchyID in Entity Framework
Eseguire query manipolando liste di tipi semplici con Entity Framework Core
Utilizzare un service principal per accedere a Azure Container Registry
Creare una custom property in GitHub
Path addizionali per gli asset in ASP.NET Core MVC
Usare una container image come runner di GitHub Actions
Sfruttare gli embedding e la ricerca vettoriale con Azure SQL Database
Cambiare la chiave di partizionamento di Azure Cosmos DB
Eseguire le GitHub Actions offline
I più letti di oggi
- Screencast 'Primi passi con Windows Workflow Foundation'
- .NET Conference Italia 2021 - Online
- Venite a trovarci a SMAU, dal 2 al 6 ottobre!
- Validazione dell'input in ASP.NET MVC 2
- Ignorare gli errori negli script
- Persistere la ChatHistory di Semantic Kernel in ASP.NET Core Web API per GPT
- Inviare un'e-mail con ASP.NET