66 lines
2.0 KiB
PowerShell
66 lines
2.0 KiB
PowerShell
<#
|
||
Simple local CI helper (PowerShell):
|
||
- 打包 zip
|
||
- 可选上传到上传接口
|
||
- 可选触发部署 API
|
||
- 可选调用云函数做一次 smoke test
|
||
|
||
Usage:
|
||
# 只打包
|
||
.\ci-deploy.ps1 -Pack
|
||
|
||
# 打包并上传(提供 uploadUrl/uploadToken)
|
||
.\ci-deploy.ps1 -Pack -UploadUrl 'https://your-upload' -UploadToken 'token'
|
||
|
||
# 上传后触发部署 API
|
||
.\ci-deploy.ps1 -Pack -UploadUrl 'https://your-upload' -UploadToken 'token' -DeployApi 'https://your-deploy-api' -DeployToken 'token'
|
||
|
||
#>
|
||
param(
|
||
[switch]$Pack,
|
||
[string]$UploadUrl,
|
||
[string]$UploadToken,
|
||
[string]$DeployApi,
|
||
[string]$DeployToken,
|
||
[string]$FuncInvokeUrl,
|
||
[string]$PushToken,
|
||
[string]$TestCid
|
||
)
|
||
|
||
Push-Location (Split-Path -Parent $MyInvocation.MyCommand.Definition)
|
||
if ($Pack) {
|
||
Write-Host "Packing cloud function..."
|
||
npm install archiver node-fetch form-data | Out-Null
|
||
node .\deploy-cloudfunc.js
|
||
}
|
||
|
||
if ($UploadUrl) {
|
||
Write-Host "Uploading to $UploadUrl"
|
||
$zip = Join-Path ..\dist testUnipush2.zip
|
||
if (!(Test-Path $zip)) { Write-Error "zip not found: $zip"; exit 2 }
|
||
$headers = @{}
|
||
if ($UploadToken) { $headers.Add('Authorization', "Bearer $UploadToken") }
|
||
$form = @{ file = Get-Item $zip }
|
||
# Use curl.exe for simple multipart upload
|
||
$curlArgs = @('-sS','-X','POST',$UploadUrl)
|
||
if ($UploadToken) { $curlArgs += @('-H',"Authorization: Bearer $UploadToken") }
|
||
$curlArgs += @('-F',"file=@$zip")
|
||
& curl.exe @curlArgs
|
||
}
|
||
|
||
if ($DeployApi) {
|
||
Write-Host "Triggering deploy API: $DeployApi"
|
||
$body = @{ uploadUrl = $UploadUrl } | ConvertTo-Json
|
||
$headers = @()
|
||
if ($DeployToken) { $headers += @('-H',"Authorization: Bearer $DeployToken") }
|
||
& curl.exe -sS -X POST $DeployApi -H 'Content-Type: application/json' $headers -d $body
|
||
}
|
||
|
||
if ($FuncInvokeUrl) {
|
||
Write-Host "Invoking function: $FuncInvokeUrl"
|
||
$payload = @{ token = $PushToken; push_clientid = $TestCid; title='CI Test'; content='hello from CI'; payload = @{} } | ConvertTo-Json
|
||
& curl.exe -sS -X POST $FuncInvokeUrl -H 'Content-Type: application/json' -d $payload
|
||
}
|
||
|
||
Pop-Location
|