feat(release): prepare 1.1.0 candidate
This commit is contained in:
parent
5a34f66981
commit
5205dcdfa9
736 changed files with 115667 additions and 12203 deletions
|
|
@ -91,18 +91,57 @@ Write-Host "`n[3/4] Packaging NAS deployment files..." -ForegroundColor Yellow
|
|||
# Copy docker-compose.nas.yml as docker-compose.yml in package
|
||||
Copy-Item (Join-Path $PSScriptRoot "..\docker-compose.nas.yml") (Join-Path $nasPkgDir "docker-compose.yml") -Force
|
||||
|
||||
# Copy or generate .env in package
|
||||
if (Test-Path $rootEnvFile) {
|
||||
Copy-Item $rootEnvFile (Join-Path $nasPkgDir ".env") -Force
|
||||
} else {
|
||||
$envContent = @"
|
||||
# Generate an allowlisted deployment environment. Never copy the repository
|
||||
# .env because it can also contain Git, SSH, and NAS credentials.
|
||||
$requiredDeploymentSecrets = @(
|
||||
"JWT_SECRET",
|
||||
"JWT_ISSUER",
|
||||
"JWT_AUDIENCE",
|
||||
"ADMIN_BOOTSTRAP_TOKEN",
|
||||
"D3RO_API_TOKEN",
|
||||
"ADMIN_SESSION_SECRET",
|
||||
"API_SERVER_URL",
|
||||
"CORS_ALLOWED_ORIGINS",
|
||||
"ALLOWED_HOSTS"
|
||||
)
|
||||
$deploymentSecrets = @{}
|
||||
foreach ($name in $requiredDeploymentSecrets) {
|
||||
$value = if ($envDict.ContainsKey($name)) { $envDict[$name] } else { [Environment]::GetEnvironmentVariable($name) }
|
||||
if ([string]::IsNullOrWhiteSpace($value)) {
|
||||
throw "$name is required for a NAS deployment package."
|
||||
}
|
||||
if ($value.Contains("`r") -or $value.Contains("`n")) {
|
||||
throw "$name must be a single-line value."
|
||||
}
|
||||
$deploymentSecrets[$name] = $value
|
||||
}
|
||||
if ([Text.Encoding]::UTF8.GetByteCount($deploymentSecrets["D3RO_API_TOKEN"]) -lt 32) {
|
||||
throw "D3RO_API_TOKEN must contain at least 32 UTF-8 bytes."
|
||||
}
|
||||
$envContent = @"
|
||||
PORT=$Port
|
||||
DATA_PATH=./data
|
||||
JWT_SECRET=D3ROVoice_Super_Secure_Secret_Key_2026_Key!
|
||||
JWT_SECRET=$($deploymentSecrets["JWT_SECRET"])
|
||||
JWT_ISSUER=$($deploymentSecrets["JWT_ISSUER"])
|
||||
JWT_AUDIENCE=$($deploymentSecrets["JWT_AUDIENCE"])
|
||||
ADMIN_BOOTSTRAP_TOKEN=$($deploymentSecrets["ADMIN_BOOTSTRAP_TOKEN"])
|
||||
D3RO_API_TOKEN=$($deploymentSecrets["D3RO_API_TOKEN"])
|
||||
ADMIN_SESSION_SECRET=$($deploymentSecrets["ADMIN_SESSION_SECRET"])
|
||||
API_SERVER_URL=$($deploymentSecrets["API_SERVER_URL"])
|
||||
CORS_ALLOWED_ORIGINS=$($deploymentSecrets["CORS_ALLOWED_ORIGINS"])
|
||||
ALLOWED_HOSTS=$($deploymentSecrets["ALLOWED_HOSTS"])
|
||||
TZ=Asia/Seoul
|
||||
"@
|
||||
Set-Content -Path (Join-Path $nasPkgDir ".env") -Value $envContent -Encoding UTF8
|
||||
}
|
||||
$deploymentEnvPath = Join-Path $nasPkgDir ".env"
|
||||
Set-Content -Path $deploymentEnvPath -Value $envContent -Encoding UTF8
|
||||
$deploymentEnvAcl = Get-Acl -LiteralPath $deploymentEnvPath
|
||||
$deploymentEnvAcl.SetAccessRuleProtection($true, $false)
|
||||
$deploymentEnvAcl.AddAccessRule([System.Security.AccessControl.FileSystemAccessRule]::new(
|
||||
[System.Security.Principal.WindowsIdentity]::GetCurrent().Name,
|
||||
[System.Security.AccessControl.FileSystemRights]::FullControl,
|
||||
[System.Security.AccessControl.AccessControlType]::Allow
|
||||
))
|
||||
Set-Acl -LiteralPath $deploymentEnvPath -AclObject $deploymentEnvAcl
|
||||
|
||||
# Copy control script
|
||||
Copy-Item (Join-Path $PSScriptRoot "nas-control.sh") (Join-Path $nasPkgDir "nas-control.sh") -Force -ErrorAction SilentlyContinue
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue