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 pull
Ci 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
Gestione dell'annidamento delle regole dei layer in CSS
Ottenere un token di accesso per una GitHub App
Configurare il nome della run di un workflow di GitHub in base al contesto di esecuzione
Generare la software bill of material (SBOM) in GitHub
Visualizzare le change sul plan di Terraform tramite le GitHub Actions
Migliorare la sicurezza dei prompt con Azure AI Studio
Eliminare una project wiki di Azure DevOps
Gestire la cancellazione di una richiesta in streaming da Blazor
Utilizzare il trigger SQL con le Azure Function
Eseguire query manipolando le liste contenute in un oggetto mappato verso una colonna JSON
Creare un webhook in Azure DevOps
Autenticarsi in modo sicuro su Azure tramite GitHub Actions
I più letti di oggi
- Utilizzare DeepSeek R1 con Azure AI
- Utilizzare l'espressione if inline in una pipeline di Azure DevOps
- ecco tutte le novità pubblicate sui nostri siti questa settimana: https://aspit.co/wkly buon week-end!
- Scrivere selettori CSS più semplici ed efficienti con :is()
- Single Page Application e ASP.NET 4.5: il futuro dello sviluppo delle applicazioni web