====== 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//