Ich versuche herauszufinden, wie man die Schleife in unserem Build-Prozess schließt, wo wir eine Versionsnummer als Teil des Build-Prozesses auf die AssemblyInfo. * - Dateien anwenden.Wie checken Sie Dateien als Teil des Builds in Visual Studio Team Services ein?
Wir sind gerade dabei, von On-Premise-TFS zu Visual Studio Team Services zu migrieren. Viele unserer aktuellen On-Premise-Builds aktualisieren die Versionsnummer, um sie mit der Build-Nummer synchron zu halten und diese Dateien während des Builds wieder in die Quellcodeverwaltung zu überführen.
Ich habe erfolgreich die script located on msdn als ein Beispiel verwendet, um den Build-Prozess anzupassen.
bin ich versucht nun die Dateien wieder in die Quellcodeverwaltung zu überprüfen, aber ich erhalte die Fehlermeldung:
#[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.
ich tf.exe bin derzeit mit diesem versuchen, zu tun. Rufen Sie zuerst den Pfad zum Tool oben im Powershell-Skript ab.
# 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'"
}
ändern Sie dann die Schleife, um die Datei zur Kasse und dann die Dateien wieder einzuchecken.
# 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
}
Ist dies der richtige Weg, dies zu tun? Wenn der Build-Dienst nicht berechtigt ist, darauf zuzugreifen, wie zum Teufel kann er den Code holen, kompilieren und dann das Artefakt irgendwo POST?
Ich würde lieber die Änderungen auf 'Assembly verwerfen *' Dateien als sie in die Quellcodeverwaltung überprüfen.. –
@ JuanM.Elosegui warum? –
Einverstanden. Da die eingecheckten Quellen nicht mit denen übereinstimmen, die als Changeset für den Build aufgezeichnet wurden, stimmen sie nicht mit den Symbolen und indizierten Quellen überein, wodurch erweiterte Debug-Szenarien zerstört und der Begriff "Versionen" für die meisten Entwickler gelöscht wird Sie werden nicht korrekt inkrementiert, wenn Änderungen, Hauptversionen usw. eingecheckt werden. Ich empfehle die Verwendung von '1.2. *' und lasse den Build-Server die Revision automatisch anwenden, während man Haupt- und Nebenversionen manuell steuert. – jessehouwing