2015-11-16 19:21:57 +00:00
#
# Copyright (c) .NET Foundation and contributors. All rights reserved.
# Licensed under the MIT license. See LICENSE file in the project root for full license information.
#
2015-10-27 01:31:06 +00:00
param (
2015-12-28 19:47:21 +00:00
[ Parameter ( Mandatory = $true ) ] [ string ] $file
2015-10-27 01:31:06 +00:00
)
2016-01-21 02:49:47 +00:00
. " $PSScriptRoot \..\common\_common.ps1 "
2015-10-27 01:31:06 +00:00
function CheckRequiredVariables
2015-11-12 05:54:58 +00:00
{
2016-01-12 23:27:02 +00:00
if ( [ string ] :: IsNullOrEmpty ( $env:DOTNET_CLI_VERSION ) )
2015-11-12 05:54:58 +00:00
{
2015-10-27 01:31:06 +00:00
return $false
2015-10-27 21:26:50 +00:00
}
2015-10-27 01:31:06 +00:00
# this variable is set by the CI system
if ( [ string ] :: IsNullOrEmpty ( $env:SASTOKEN ) )
2015-11-12 05:54:58 +00:00
{
2015-10-27 01:31:06 +00:00
return $false
}
2015-10-27 21:26:50 +00:00
# this variable is set by the CI system
if ( [ string ] :: IsNullOrEmpty ( $env:STORAGE_ACCOUNT ) )
{
return $false
}
# this variable is set by the CI system
if ( [ string ] :: IsNullOrEmpty ( $env:STORAGE_CONTAINER ) )
{
return $false
}
2015-10-29 00:11:32 +00:00
# this variable is set by the CI system
if ( [ string ] :: IsNullOrEmpty ( $env:CHANNEL ) )
{
return $false
}
2015-11-18 16:32:09 +00:00
# this variable is set by the CI system
if ( [ string ] :: IsNullOrEmpty ( $env:CONNECTION_STRING ) )
{
return $false
}
2015-10-27 01:31:06 +00:00
return $true
}
2016-02-18 02:19:15 +00:00
function UploadFile($Blob , $Uploadfile , $PreventCaching = $false )
2015-10-27 01:31:06 +00:00
{
2016-02-16 09:57:24 +00:00
Write-Host " Uploading $Uploadfile to dotnet feed. "
if ( [ string ] :: IsNullOrEmpty ( $env:HOME ) )
{
$env:HOME = Get-Location
}
2016-02-18 02:19:15 +00:00
$properties = " "
if ( $PreventCaching )
{
2016-02-18 06:36:28 +00:00
# use azure cli to upload to blob storage. We cannot use Invoke-WebRequest to do this becuase azure has a max limit of 64mb that can be uploaded using REST
#$statusCode = (Invoke-WebRequest -URI "$Upload_URI" -Method PUT -Headers @{"x-ms-blob-type"="BlockBlob"; "x-ms-date"="2015-10-23";"x-ms-version"="2013-08-15"} -InFile $Uploadfile).StatusCode
azure storage blob upload - -quiet - -properties cacheControl = no-cache - -container $env:STORAGE_CONTAINER - -blob $Blob - -blobtype block - -connection -string " $env:CONNECTION_STRING " - -file $Uploadfile | Out-Host
}
else
{
# use azure cli to upload to blob storage. We cannot use Invoke-WebRequest to do this becuase azure has a max limit of 64mb that can be uploaded using REST
#$statusCode = (Invoke-WebRequest -URI "$Upload_URI" -Method PUT -Headers @{"x-ms-blob-type"="BlockBlob"; "x-ms-date"="2015-10-23";"x-ms-version"="2013-08-15"} -InFile $Uploadfile).StatusCode
azure storage blob upload - -quiet $properties - -container $env:STORAGE_CONTAINER - -blob $Blob - -blobtype block - -connection -string " $env:CONNECTION_STRING " - -file $Uploadfile | Out-Host
2016-02-18 02:19:15 +00:00
}
2016-02-18 06:36:28 +00:00
2016-02-16 09:57:24 +00:00
if ( $ ? )
2015-11-05 03:13:50 +00:00
{
Write-Host " Successfully uploaded $Uploadfile to dotnet feed. "
return $true
}
else
{
Write-Host " Failed to upload $Uploadfile to dotnet feed. "
return $false
}
2015-10-27 01:31:06 +00:00
}
2015-11-05 03:13:50 +00:00
function UploadBinaries($zipFile )
2015-10-27 01:31:06 +00:00
{
2015-11-05 03:13:50 +00:00
$result = -1
$fileName = [ System.IO.Path ] :: GetFileName ( $zipFile )
2016-01-12 23:27:02 +00:00
$zipBlob = " $env:CHANNEL /Binaries/ $env:DOTNET_CLI_VERSION / $fileName "
2015-10-27 01:31:06 +00:00
2015-11-18 16:32:09 +00:00
if ( -Not ( UploadFile $zipBlob $zipFile ) )
2015-11-05 03:13:50 +00:00
{
2015-11-07 01:06:55 +00:00
return -1
2015-11-05 03:13:50 +00:00
}
2015-10-27 01:31:06 +00:00
2015-11-07 01:06:55 +00:00
Write-Host " Updating the latest dotnet binaries for windows.. "
2015-11-18 16:32:09 +00:00
$zipBlobLatest = " $env:CHANNEL /Binaries/Latest/dotnet-win-x64.latest.zip "
2015-11-07 01:06:55 +00:00
2016-02-18 02:19:15 +00:00
if ( -Not ( UploadFile $zipBlobLatest $zipFile $true ) )
2015-11-07 01:06:55 +00:00
{
return -1
}
# update the index file too
2016-01-12 23:27:02 +00:00
$indexContent = " Binaries/ $env:DOTNET_CLI_VERSION / $fileName "
2015-11-07 01:06:55 +00:00
$indexFile = " $env:TEMP \latest.win.index "
$indexContent | Out-File -FilePath $indexFile
# upload the index file
2015-11-18 16:32:09 +00:00
$indexBlob = " $env:CHANNEL /dnvm/latest.win.index "
2015-11-07 01:06:55 +00:00
2016-02-18 02:19:15 +00:00
if ( -Not ( UploadFile $indexBlob $indexFile $true ) )
2015-11-07 01:06:55 +00:00
{
return -1
}
2015-11-11 21:37:55 +00:00
# update the version file
2016-02-16 21:51:36 +00:00
$versionFile = Convert-Path $PSScriptRoot \ . . \ . . \ artifacts \ $env:RID \ stage2 \ . version
2015-11-18 16:32:09 +00:00
$versionBlob = " $env:CHANNEL /dnvm/latest.win.version "
2015-11-11 21:37:55 +00:00
2016-02-18 02:19:15 +00:00
if ( -Not ( UploadFile $versionBlob $versionFile $true ) )
2015-11-11 21:37:55 +00:00
{
return -1
}
2015-11-07 01:06:55 +00:00
return 0
2015-10-27 01:31:06 +00:00
}
2015-11-05 03:13:50 +00:00
2016-02-11 00:41:15 +00:00
function UploadInstallers($installerFile )
2015-10-27 01:31:06 +00:00
{
2016-02-11 00:41:15 +00:00
$fileName = [ System.IO.Path ] :: GetFileName ( $installerFile )
$installerBlob = " $env:CHANNEL /Installers/ $env:DOTNET_CLI_VERSION / $fileName "
2015-10-27 01:31:06 +00:00
2016-02-11 00:41:15 +00:00
if ( -Not ( UploadFile $installerBlob $installerFile ) )
2015-11-07 01:06:55 +00:00
{
return -1
}
Write-Host " Updating the latest dotnet installer for windows.. "
2016-02-11 00:41:15 +00:00
$installerBlobLatest = " $env:CHANNEL /Installers/Latest/dotnet-win-x64.latest.exe "
2015-11-07 01:06:55 +00:00
2016-02-18 02:19:15 +00:00
if ( -Not ( UploadFile $installerBlobLatest $installerFile $true ) )
2015-11-05 03:13:50 +00:00
{
2015-11-07 01:06:55 +00:00
return -1
2015-11-05 03:13:50 +00:00
}
2015-10-27 01:31:06 +00:00
2015-11-07 01:06:55 +00:00
return 0
2015-11-05 03:13:50 +00:00
}
2015-10-27 01:31:06 +00:00
2016-01-28 06:35:38 +00:00
function UploadVersionBadge($badgeFile )
{
2016-02-17 03:31:09 +00:00
$fileName = " windows_ $( $env:CONFIGURATION ) _ $( [ System.IO.Path ] :: GetFileName ( $badgeFile ) ) "
2016-01-28 06:35:38 +00:00
Write-Host " Uploading the version badge to Latest "
2016-02-18 02:19:15 +00:00
if ( -Not ( UploadFile " $env:CHANNEL /Binaries/Latest/ $fileName " $badgeFile $true ) )
{
return -1
}
2016-01-28 06:35:38 +00:00
Write-Host " Uploading the version badge to $env:DOTNET_CLI_VERSION "
2016-02-18 03:32:10 +00:00
if ( -Not ( UploadFile " $env:CHANNEL /Binaries/ $env:DOTNET_CLI_VERSION / $fileName " $badgeFile ) )
2016-02-18 02:19:15 +00:00
{
return -1
}
2016-01-28 15:03:41 +00:00
return 0
2016-01-28 06:35:38 +00:00
}
2015-11-05 03:13:50 +00:00
if ( ! ( CheckRequiredVariables ) )
{
# fail silently if the required variables are not available for publishing the file
exit 0
}
2015-10-27 21:26:50 +00:00
2015-11-05 03:13:50 +00:00
if ( ! [ System.IO.File ] :: Exists ( $file ) )
{
throw " $file not found "
}
2015-10-27 01:31:06 +00:00
2015-11-05 03:13:50 +00:00
$result = $false
2015-10-27 01:31:06 +00:00
2015-11-05 03:13:50 +00:00
if ( [ System.IO.Path ] :: GetExtension ( $file ) . ToLower ( ) -eq " .zip " )
2015-10-27 01:31:06 +00:00
{
2015-11-05 03:13:50 +00:00
$result = UploadBinaries $file
2015-10-27 01:31:06 +00:00
}
2016-02-10 21:06:48 +00:00
elseif ( [ System.IO.Path ] :: GetExtension ( $file ) . ToLower ( ) -eq " .exe " )
2015-10-27 01:31:06 +00:00
{
2015-11-05 03:13:50 +00:00
$result = UploadInstallers $file
2015-10-27 01:31:06 +00:00
}
2016-01-28 06:00:58 +00:00
elseif ( [ System.IO.Path ] :: GetExtension ( $file ) . ToLower ( ) -eq " .svg " )
{
2016-01-28 15:03:41 +00:00
$result = UploadVersionBadge $file
2016-01-28 06:00:58 +00:00
}
2015-10-27 01:31:06 +00:00
2015-11-05 03:13:50 +00:00
exit $result