Sto cercando di capire come chiudere il ciclo nel nostro processo di compilazione in cui applichiamo un numero di versione ai file AssemblyInfo. * Come parte del processo di compilazione.Come si esegue il checkin dei file come parte della compilazione in Visual Studio Team Services?
Siamo nel bel mezzo della migrazione da servizi di tfs on-premise a team di Visual Studio. Molte delle nostre build in loco aggiornate aggiornano il numero di versione per mantenerlo sincronizzato con il numero di build e inoltre ricontrollano tali file nel controllo del codice sorgente durante la compilazione.
Ho utilizzato con successo lo script located on msdn come esempio per iniziare a personalizzare il processo di compilazione.
Ora sto cercando di controllare i file di nuovo in controllo del codice sorgente, ma sto ricevendo l'errore:
#[error]TF30063: You are not authorized to access https://subdomain.visualstudio.com/DefaultCollection.
#[error]Process completed with exit code 100 and had 1 error(s) written to the error stream.
Attualmente sto usando tf.exe per tentare di fare questo. Per prima cosa prendi il percorso dello strumento nella parte superiore dello script di PowerShell;
# get the tf command line tool path
$tfexe = [System.IO.Path]::GetFullPath($env:VS140COMNTOOLS + "..\..\common7\ide\tf.exe")
if (-Not (Test-Path $tfexe))
{
Write-Error "Could not find tf.exe at '$tfexe'"
exit 1
}
else
{
Write-Host "Found tf.exe at '$tfexe'"
}
Poi modificare il ciclo di checkout il file e quindi controllare i file di nuovo in.
# Apply the version to the assembly property files
$files = gci $Env:BUILD_SOURCESDIRECTORY -recurse -include "*Properties*","My Project" |
?{ $_.PSIsContainer } |
foreach { gci -Path $_.FullName -Recurse -include AssemblyInfo.* }
if($files)
{
Write-Host "Will apply $NewVersion to $($files.count) files."
foreach ($file in $files) {
#Write-Host "Attempting to checkout file '$file'"
& ($tfexe) vc checkout $file
$filecontent = Get-Content($file)
attrib $file -r
$filecontent -replace $VersionRegex, $NewVersion | Out-File $file
Write-Host "$file.FullName - version applied"
}
# Checkin pending changes together
##[error]TF30063: You are not authorized to access https://subdomain.visualstudio.com/DefaultCollection.
##[error]Process completed with exit code 100 and had 1 error(s) written to the error stream.
Write-Host "Attempting to checkin files"
$comment = "Applied $NewVersion to $($files.count) files. ***NO_CI***"
& ($tfexe) vc checkin /comment:"$comment" /noprompt
}
È questo il modo corretto di fare questo? Se il servizio di costruzione non è autorizzato ad accedere, come diavolo può ottenere il codice, compilarlo e quindi postare l'artefatto da qualche parte?
avrei preferito annullare le modifiche sulla 'AssemblyInfo *' file di controllarli nel controllo del codice sorgente.. –
@ JuanM.Elosegui perché? –
concordato. poiché le fonti archiviate non corrisponderanno a quelle registrate come il changeset utilizzato per la build, non corrisponderanno ai simboli e alle fonti indicizzate, interrompendo lo scenario avanzato di debug, la cronologia dei clutter e rimuovono la nozione di "versioni" per la maggior parte degli sviluppatori, causando loro di non incrementare correttamente durante il check in interruzioni di modifiche, versioni principali ecc. Raccomando l'uso di '1.2. *' e fare in modo che il server di build applichi la revisione automaticamente, controllando manualmente le versioni principali e secondarie. – jessehouwing