====== 6.1 File-Share ====== Il metodo più semplice per la distribuzione: un'unità di rete. ---- ===== Perché File-Share? ===== **Vantaggi:** * ✓ Nessun server aggiuntivo necessario * ✓ Configurazione rapida * ✓ Permessi tramite ACL Windows * ✓ Tutti sanno usare le cartelle **Svantaggi:** * ✗ Nessun versionamento automatico * ✗ Nessuna gestione dipendenze * ✗ Necessaria copia manuale ---- ===== Struttura Directory ===== Una struttura consigliata per la condivisione: \\server\builds\openssl\ ├── 3.6.0\ │ ├── win-x64\ │ │ ├── bin\ │ │ │ ├── libcrypto-3-x64.dll │ │ │ ├── libssl-3-x64.dll │ │ │ └── openssl.exe │ │ ├── ssl\ │ │ │ └── openssl.cnf │ │ └── README.txt │ ├── win-x64-fips\ │ │ └── ... (con Provider FIPS) │ ├── linux-x64\ │ │ └── ... (Shared Objects) │ └── wasm\ │ └── ... (JS + WASM) ├── 3.5.0\ │ └── ... (versione precedente) └── latest -> 3.6.0\ ---- ===== Configurare la Condivisione ===== ==== 1. Creare la Cartella ==== # Sul server mkdir D:\Builds\OpenSSL mkdir D:\Builds\OpenSSL\3.6.0 mkdir D:\Builds\OpenSSL\3.6.0\win-x64 ==== 2. Copiare i File ==== # Copiare risultato build Copy-Item -Recurse "D:\Projects\openssl-3.6.0\bin\*" "D:\Builds\OpenSSL\3.6.0\win-x64\" ==== 3. Creare la Condivisione ==== # Come Amministratore New-SmbShare -Name "OpenSSL" -Path "D:\Builds\OpenSSL" -ReadAccess "Domain Users" Oppure tramite GUI: - Click destro sulla cartella - Proprietà → Condivisione - Condivisione avanzata → Autorizzazioni ---- ===== Utilizzo ===== ==== Dal PC dello Sviluppatore ==== # Accedere alla condivisione dir \\server\openssl\3.6.0\win-x64\bin\ # Copiare nel progetto copy "\\server\openssl\3.6.0\win-x64\bin\*.dll" C:\MioProjetto\ ==== Mappare come Unità ==== # Permanentemente come O: (per OpenSSL) net use O: \\server\openssl /persistent:yes # Poi semplicemente: copy O:\3.6.0\win-x64\bin\*.dll C:\MioProjetto\ ---- ===== Autorizzazioni ===== | Gruppo | Autorizzazione | |--------|----------------| | Build-Server | Controllo completo (scrive nuovi build) | | Sviluppatori | Lettura (copiare DLL) | | Agenti CI/CD | Lettura | ==== PowerShell ==== # Impostare autorizzazioni (NTFS) $acl = Get-Acl "D:\Builds\OpenSSL" # Sviluppatori: Solo lettura $rule = New-Object System.Security.AccessControl.FileSystemAccessRule( "DOMAIN\Developers", "ReadAndExecute", "ContainerInherit,ObjectInherit", "None", "Allow") $acl.AddAccessRule($rule) # Account Build: Controllo completo $rule = New-Object System.Security.AccessControl.FileSystemAccessRule( "DOMAIN\BuildService", "FullControl", "ContainerInherit,ObjectInherit", "None", "Allow") $acl.AddAccessRule($rule) Set-Acl "D:\Builds\OpenSSL" $acl ---- ===== Symlink "latest" ===== Per accesso semplice alla versione corrente: # Creare junction (come symlink) cmd /c mklink /J "D:\Builds\OpenSSL\latest" "D:\Builds\OpenSSL\3.6.0" # Poi funziona: # \\server\openssl\latest\win-x64\... Con una nuova versione aggiornare il symlink! ---- ===== Automazione ===== Uno script PowerShell per nuovi rilasci: # publish-openssl.ps1 param( [string]$Version = "3.6.0", [string]$SourceDir = "D:\Projects\openssl-3.6.0\bin", [string]$SharePath = "\\server\openssl" ) $TargetDir = "$SharePath\$Version\win-x64" # Creare cartella se non esiste if (!(Test-Path $TargetDir)) { New-Item -ItemType Directory -Path $TargetDir -Force } # Copiare i file Copy-Item -Recurse -Force "$SourceDir\*" $TargetDir # Aggiungere README @" OpenSSL $Version ================ Data build: $(Get-Date -Format 'yyyy-MM-dd HH:mm') Piattaforma: Windows x64 (VC-WIN64A) Contiene: - libcrypto-3-x64.dll - libssl-3-x64.dll - openssl.exe Post-Quantum: ML-DSA, ML-KEM "@ | Out-File "$TargetDir\README.txt" Write-Host "Pubblicato: $TargetDir" ---- ===== Continua con ===== * [[.:nuget-paket|Creare pacchetto NuGet]] * [[.:versionierung|Versionamento]] * [[.:automatisierung:start|7. CI/CD]] ---- //Wolfgang van der Stille @ EMSR DATA d.o.o. - Post-Quantum Cryptography Professional//