我正在尝试使用Perfecto执行CI / CD,因此,在我的Bamboo构建完成后,我试图将文件上传到Perfecto。
当我们有Linux服务器时,我正在尝试使用以下cURL命令。
curl -X POST --upload-file test.apk 'https://****.perfectomobile.com/services/repositories/media/PRIVATE:test.apk?operation=upload&user=<email>&password=<password>&overwrite=true'
现在我们的服务器已更改为Windows,因此我需要一个Powershell脚本,可以将其用作Bamboo中的内联脚本。
您能告诉我什么是Windows Powershell中的等效脚本。
非常感谢。
答案 0 :(得分:1)
# Gather your information.
$email = "myEmail@website.com";
$password = "powershellR0cks!";
$subDomain = "****";
$url = "https://$subDomain.perfectomobile.com/services/repositories/media/PRIVATE:test.apk?operation=upload&user=$email&password=$password&overwrite=true";
$filePath = ".\test.apk";
# Make the request.
$response = Invoke-WebRequest -Uri $URL -Method Post -InFile $filePath -ContentType "application/octet-stream";
# Check for success.
if (-not ($response.StatusCode -eq 200)) {
throw "There was an error uploading the APK manifest.";
}
您可能要检查-ContentType
的值,但是我认为这是正确的。如果您不想的话,则不必包括方案(HTTPS),并且PowerShell中的分号是可选的,但是如果需要,您可以包括它们。
$response
变量是一个HtmlWebResponseObject
,具有响应的内容,状态码和许多其他有用的信息。您可以通过运行$response | Get-Member
来检查对象上可用的属性和方法。
最后,Invoke-WebRequest
cmdlet还具有其他可能对您有用的参数,例如-Credential
,-Headers
等。
作为一个旁注,如果您运行Get-Alias -Name "curl"
,则可以看到,只要在PowerShell中使用curl
,您实际上就在调用Invoke-WebRequest
。您可以根据需要使用curl
别名,但是在自动化中使用别名通常不是一个好主意,因为可以对其进行修改或删除。