In GitHub non abbiamo una struttura ben definita per raggruppare una serie di repository in progetti, così come avviene in GitHub. Avere una struttura simile per tutti è spesso importante, perchè così possiamo riutilizzare le stesse informazioni, codice, setting e così via. Sebbene esista il concetto di template, questo non è riutilizzabile per quanto riguarda la gestione delle secret. Infatti, queste non sono accessibili facilmente proprio per questioni di sicurezza.
Tuttavia, è piuttosto facile creare uno script che possa recuperare tutte le secret create all'interno di un repo, per poi andarle a creare all'interno di un altro.
repository_owner="<OWNER>" repository_name="<REPO_NAME>" personal_access_token="<PERSONAL_ACCESS_TOKEN>" # Get secrets using GitHub REST API secrets=$(curl -s -H "Authorization: token $personal_access_token" "https://api.github.com/repos/$repository_owner/$repository_name/actions/secrets") # Extract secret names secret_names=$(echo "$secrets" | jq -r '.secrets[].name') # Retrieve secret values for secret_name in $secret_names; do secret_value=$(echo "${{ secrets.$secret_name }}") echo "$secret_name=$secret_value" done
Questo script deve necessariamente essere eseguito all'interno di un workflow di GitHub, perchè altrimenti non potremmo avere accesso al contesto secrets e recuperare il valore effettivo delle secret. Inoltre, è necessario avere un personal access token con i permessi per accedere alle secret del repository e al repository nuovo dove vogliamo aggiungere questi segreti.
Nel caso di esempio stampiamo il valore sulla console, ma per via del data masking vedremo a schermo solo una serie di *** che ci proteggono da una esposizione involontaria dei valori. Per questo motivo possiamo eventualmente salvare la secret su un file, se vogliamo necessariamente leggerla in chiaro, oppure fare una chiamata per la creazione del secret nel nuovo repository. Rimanendo all'interno dello stesso contesto, il valore viene passato senza problemi.
gh secret set $secret_name --body "$secret_value"
Commenti
Per inserire un commento, devi avere un account.
Fai il login e torna a questa pagina, oppure registrati alla nostra community.
Approfondimenti
Effettuare il refresh dei dati di una QuickGrid di Blazor
Generare un hash con SHA-3 in .NET
Cancellare una run di un workflow di GitHub
Utilizzare il nuovo modello GPT-4o con Azure OpenAI
Migliorare la sicurezza dei prompt con Azure AI Studio
Utilizzare gRPC su App Service di Azure
Esportare ed analizzare le issue di GitHub con la CLI e GraphQL
Utilizzare Copilot con Azure Cosmos DB
Configurare il nome della run di un workflow di GitHub in base al contesto di esecuzione
Evitare (o ridurre) il repo-jacking sulle GitHub Actions
Migliorare la scalabilità delle Azure Function con il Flex Consumption
Disabilitare automaticamente un workflow di GitHub
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