Abbiamo già visto con uno script precedente (https://www.dopsitalia.com/script/86/Migrare-Repository-Contiene-Large-File-Storage-Objects-GitHub.aspx) come sia possibile effettuare la migrazione di un repository che contiene large file objects (LFS). Oggi vediamo, invece, come possiamo fare il clone di questi oggetti durante l'esecuzione di un workflow di GitHub.
Sebbene la pratica sia la stessa vista nell'altro script, bisogna prestare attenzione alla quantità di dati che vengono inviati da GitHub al runner (o agent) che eseguirà il workflow. Infatti, LFS lo paghiamo non solo per spazio occupato, ma anche per il traffico che genera in entrata/uscita dal repository.
Per ovviare a questo problema, possiamo sfruttare la cache di GitHub:
steps:
- name: Checkout
uses: actions/checkout@v3
- name: Create LFS file list
shell: bash
run: git lfs ls-files -l | cut -d' ' -f1 | sort > .lfs-assets-id
- name: Restore LFS cache
uses: actions/cache@v2
id: lfs-cache
with:
path: .git/lfs
key: ${{ runner.os }}-lfs-${{ hashFiles('.lfs-assets-id') }}-v1
- name: Git LFS Pull
shell: bash
run: git lfs pullCi sono quattro diversi passaggi in questo workflow. Nel primo, andiamo solo ad effettuare il checkout del repository. Nel secondo, andiamo a creare un file contenente l'elenco degli oggetti LFS presenti nel repository. Nel terzo, andiamo a recuperare la cache di GitHub, se presente (in quanto deve fare match con l'elenco degli oggetti generati precedentemente), e nel quarto, andiamo a recuperare gli oggetti LFS con l'operazione di pull.
Se la cache non è presente, come per la prima esecuzione del workflow, GitHub la creerà automaticamente al termine dello stesso. In questo modo, possiamo evitare di effettuare il pull di tutti gli oggetti LFS tutte le successive volte che verrà eseguito il workflow, risparmiando banda di LFS.
Commenti
Per inserire un commento, devi avere un account.
Fai il login e torna a questa pagina, oppure registrati alla nostra community.
Approfondimenti
Usare i generics di C# con la clausola nameof in modo semplificato
Ciclo di vita risorse con .NET Aspire
Esplorare database e container con Azure Cosmos DB Shell
GitHub Quick Review per la valutazione dello stato di compliance dell'organizzazione aziendale
Monitorare le tabelle di Azure SQL Database con Change Event Streaming
Self-healing degli unit test con Copilot in GitHub
Stop alle password con Azure Managed Identity
Evitare la compressione degli artefatti in un workflow di GitHub
Integrare email esterne con Azure Functions e Managed Connectors
Gestione dei prompt file a livello di organizzazione aziendale in GitHub
Escludere alcuni file da GitHub Copilot
Disponibile .NET 11 RC1 con aggiornamenti per runtime, SDK, MSBuild, NuGet e i principali framework della piattaforma. Un rilascio interessante per chi lavora su applicazioni cloud, web e desktop con stack Microsoft. #dotnet #csharp #aspnetcore #devops https://aspit.co/cjz
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


