====== 6.1 File-Share ======
Die einfachste Methode zur Verteilung: Ein Netzlaufwerk.
----
===== Warum File-Share? =====
**Vorteile:**
* ✓ Kein zusätzlicher Server nötig
* ✓ Schnell eingerichtet
* ✓ Berechtigungen über Windows-ACLs
* ✓ Jeder kennt sich mit Ordnern aus
**Nachteile:**
* ✗ Keine automatische Versionierung
* ✗ Kein Dependency-Management
* ✗ Manuelles Kopieren nötig
----
===== Verzeichnisstruktur =====
Eine empfohlene Struktur für den Share:
\\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\
│ │ └── ... (mit FIPS Provider)
│ ├── linux-x64\
│ │ └── ... (Shared Objects)
│ └── wasm\
│ └── ... (JS + WASM)
├── 3.5.0\
│ └── ... (ältere Version)
└── latest -> 3.6.0\
----
===== Share einrichten =====
==== 1. Ordner erstellen ====
# Auf dem Server
mkdir D:\Builds\OpenSSL
mkdir D:\Builds\OpenSSL\3.6.0
mkdir D:\Builds\OpenSSL\3.6.0\win-x64
==== 2. Dateien kopieren ====
# Build-Ergebnis kopieren
Copy-Item -Recurse "D:\Projects\openssl-3.6.0\bin\*" "D:\Builds\OpenSSL\3.6.0\win-x64\"
==== 3. Share erstellen ====
# Als Administrator
New-SmbShare -Name "OpenSSL" -Path "D:\Builds\OpenSSL" -ReadAccess "Domain Users"
Oder über GUI:
- Rechtsklick auf Ordner
- Eigenschaften → Freigabe
- Erweiterte Freigabe → Berechtigungen
----
===== Verwendung =====
==== Von Entwickler-PC ====
# Auf Share zugreifen
dir \\server\openssl\3.6.0\win-x64\bin\
# In Projekt kopieren
copy "\\server\openssl\3.6.0\win-x64\bin\*.dll" C:\MeinProjekt\
==== Als Laufwerk einbinden ====
# Dauerhaft als O: (für OpenSSL)
net use O: \\server\openssl /persistent:yes
# Dann einfach:
copy O:\3.6.0\win-x64\bin\*.dll C:\MeinProjekt\
----
===== Berechtigungen =====
| Gruppe | Berechtigung |
|--------|--------------|
| Build-Server | Vollzugriff (schreiben neue Builds) |
| Entwickler | Lesen (DLLs kopieren) |
| CI/CD Agents | Lesen |
==== PowerShell ====
# Berechtigungen setzen (NTFS)
$acl = Get-Acl "D:\Builds\OpenSSL"
# Entwickler: Nur Lesen
$rule = New-Object System.Security.AccessControl.FileSystemAccessRule(
"DOMAIN\Developers", "ReadAndExecute", "ContainerInherit,ObjectInherit", "None", "Allow")
$acl.AddAccessRule($rule)
# Build-Account: Vollzugriff
$rule = New-Object System.Security.AccessControl.FileSystemAccessRule(
"DOMAIN\BuildService", "FullControl", "ContainerInherit,ObjectInherit", "None", "Allow")
$acl.AddAccessRule($rule)
Set-Acl "D:\Builds\OpenSSL" $acl
----
===== "latest" Symlink =====
Für einfachen Zugriff auf die aktuelle Version:
# Junction erstellen (wie Symlink)
cmd /c mklink /J "D:\Builds\OpenSSL\latest" "D:\Builds\OpenSSL\3.6.0"
# Dann funktioniert:
# \\server\openssl\latest\win-x64\...
Bei neuer Version den Symlink aktualisieren!
----
===== Automatisierung =====
Ein PowerShell-Skript für neue Releases:
# 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"
# Ordner erstellen falls nicht vorhanden
if (!(Test-Path $TargetDir)) {
New-Item -ItemType Directory -Path $TargetDir -Force
}
# Dateien kopieren
Copy-Item -Recurse -Force "$SourceDir\*" $TargetDir
# README hinzufügen
@"
OpenSSL $Version
================
Build-Datum: $(Get-Date -Format 'yyyy-MM-dd HH:mm')
Plattform: Windows x64 (VC-WIN64A)
Enthält:
- libcrypto-3-x64.dll
- libssl-3-x64.dll
- openssl.exe
Post-Quantum: ML-DSA, ML-KEM
"@ | Out-File "$TargetDir\README.txt"
Write-Host "Veröffentlicht: $TargetDir"
----
===== Weiter zu =====
* [[.:nuget-paket|NuGet-Paket erstellen]]
* [[.:versionierung|Versionierung]]
* [[.:automatisierung:start|7. CI/CD]]
----
//Wolfgang van der Stille @ EMSR DATA d.o.o. - Post-Quantum Cryptography Professional//