42 lines
1.6 KiB
PowerShell
42 lines
1.6 KiB
PowerShell
|
function Publish-TeamCityArtifact {
|
|||
|
<#
|
|||
|
.SYNOPSIS
|
|||
|
Publish an Artifact to the TeamCity job. This should be a file in a workspace folder that TeamCity can path to
|
|||
|
|
|||
|
.DESCRIPTION
|
|||
|
The artifact gets published on the job so it can be viewed long-term. An example use-case would be publishing a json file generated during a build-step.
|
|||
|
The artifact _may_ get stored on S3 by TeamCity automatically, but this function does not explicitly store the file on S3.
|
|||
|
The artifact _may_ get purged by TeamCity processes automatically, if you need this artifact to be retained indefinitely you should use an alternate storage mechanism.
|
|||
|
The function will attempt to test that the path exists. It will warn if the path does not exist/point to a valid file.
|
|||
|
|
|||
|
.PARAMETER Path
|
|||
|
The path to the object
|
|||
|
#>
|
|||
|
[CmdletBinding()]
|
|||
|
[OutputType([void])]
|
|||
|
param (
|
|||
|
[Parameter(Mandatory = $true)]
|
|||
|
[string]$Path
|
|||
|
)
|
|||
|
|
|||
|
$logLead = Get-LogLeadName
|
|||
|
|
|||
|
if (-not (Test-Path -Path $Path)) {
|
|||
|
Write-Warning "$logLead : Could not resolve the path passed in, is it valid? [$Path]"
|
|||
|
}
|
|||
|
|
|||
|
$charactersToEscape = @( "|", "'", "’", "[", "]")
|
|||
|
foreach ($character in $charactersToEscape) {
|
|||
|
if ($Path -contains $character) {
|
|||
|
Write-Warning "$logLead : Your path [$Path] contains a potentially invalid character. Pleae confirm it will work as expected. Character: $character"
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
if (Test-IsTeamCityProcess) {
|
|||
|
Write-Host "##teamcity[publishArtifacts '$Path']"
|
|||
|
} else {
|
|||
|
Write-Host "$logLead : TeamCity should publish the artifact at [$Path]"
|
|||
|
}
|
|||
|
}
|
|||
|
|