# Deploy video-workflow to https://app.fmode.cn/dev/video-workflow/ $ErrorActionPreference = "Stop" $PROJECT_NAME = "video-workflow" $BASE_PATH = "/dev/$PROJECT_NAME/" $OBS_PATH = "obs://nova-cloud/dev/$PROJECT_NAME" $CDN_URL = "https://app.fmode.cn$BASE_PATH" # Configure tool paths. $OBSUTIL = "E:\obsutil_windows_amd64_5.7.9\obsutil.exe" $HCLOUD = "E:\huaweicloud-cli-windows-amd64\hcloud.exe" # Credentials copied from the existing apig-pay deployment script. $OBS_ACCESS_KEY = "XSUWJSVMZNHLWFAINRZ1" $OBS_SECRET_KEY = "P4TyfwfDovVNqz08tI1IXoLWXyEOSTKJRVlsGcV6" $OBS_ENDPOINT = "obs.cn-south-1.myhuaweicloud.com" $CDN_ACCESS_KEY = "2BFF7JWXAIJ0UGNJ0OSB" $CDN_SECRET_KEY = "NaPCiJCGmD3nklCzX65s8mSK1Py13ueyhgepa0s1" $CDN_REGION = "cn-north-1" if (-not (Test-Path -LiteralPath $OBSUTIL)) { throw "obsutil not found: $OBSUTIL" } if (-not (Test-Path -LiteralPath $HCLOUD)) { throw "hcloud not found: $HCLOUD" } function Invoke-CheckedCommand { param( [Parameter(Mandatory = $true)] [string] $FilePath, [Parameter(ValueFromRemainingArguments = $true)] [string[]] $Arguments ) & $FilePath @Arguments if ($LASTEXITCODE -ne 0) { throw "Command failed with exit code ${LASTEXITCODE}: $FilePath $($Arguments -join ' ')" } } Invoke-CheckedCommand "npx" "ng" "build" "--base-href=$BASE_PATH" "--output-path=dist/$PROJECT_NAME" Invoke-CheckedCommand $OBSUTIL "rm" $OBS_PATH "-r" "-f" "-i=$OBS_ACCESS_KEY" "-k=$OBS_SECRET_KEY" "-e=$OBS_ENDPOINT" Invoke-CheckedCommand $OBSUTIL "sync" "./dist/$PROJECT_NAME/browser" $OBS_PATH "-i=$OBS_ACCESS_KEY" "-k=$OBS_SECRET_KEY" "-e=$OBS_ENDPOINT" "-acl=public-read" Invoke-CheckedCommand $OBSUTIL "chattri" $OBS_PATH "-r" "-f" "-i=$OBS_ACCESS_KEY" "-k=$OBS_SECRET_KEY" "-e=$OBS_ENDPOINT" "-acl=public-read" Invoke-CheckedCommand $HCLOUD "CDN" "CreateRefreshTasks/v2" ` "--cli-region=$CDN_REGION" ` "--refresh_task.urls.1=$CDN_URL" ` "--refresh_task.type=directory" ` "--cli-access-key=$CDN_ACCESS_KEY" ` "--cli-secret-key=$CDN_SECRET_KEY" Write-Host "Deployed: $CDN_URL"