Restore the original lockfile in repos after invoking build.cmd/sh (#865)

This commit is contained in:
Nate McMaster 2018-02-08 17:23:35 -08:00 committed by GitHub
parent 209c63d807
commit 8dabce0c19
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
1 changed files with 32 additions and 12 deletions

View File

@ -76,10 +76,27 @@
<RepositoryBuildArguments>$(RepositoryBuildArguments) /p:Configuration=$(Configuration)</RepositoryBuildArguments>
<RepositoryBuildArguments>$(RepositoryBuildArguments) /p:IsFinalBuild=$(IsFinalBuild)</RepositoryBuildArguments>
<RepositoryBuildArguments>$(RepositoryBuildArguments) /noconsolelogger '/l:RepoTasks.FlowLogger,$(MSBuildThisFileDirectory)tasks\bin\publish\RepoTasks.dll;Summary;FlowId=$(RepositoryToBuild)'</RepositoryBuildArguments>
<SourceLockFile>$(RepositoryRoot)korebuild-lock.txt</SourceLockFile>
<RepoLockFile>$(BuildRepositoryRoot)korebuild-lock.txt</RepoLockFile>
<BackupRepoLockFile>$(IntermediateDir)$(RepositoryToBuild)-korebuild-lock.txt</BackupRepoLockFile>
</PropertyGroup>
</Target>
<Target Name="_BuildRepository" DependsOnTargets="GetRepoBuildProps">
<Target Name="_UpdateRepoLockFile">
<!-- Copy Korebuild lock file to individual repos to align version if the repo doesn't already have one -->
<Message Text="Copying KoreBuild lockfile from Universe to repository $(BuildRepositoryRoot)"/>
<Move SourceFiles="$(RepoLockFile)" DestinationFiles="$(BackupRepoLockFile)" Condition="Exists($(RepoLockFile))" />
<Copy SourceFiles="$(SourceLockFile)" DestinationFiles="$(RepoLockFile)" />
</Target>
<Target Name="_RestoreOriginalRepoLockFile">
<!-- Restore original Korebuild lock file -->
<Delete Files="$(RepoLockFile)" ContinueOnError="true" />
<Move SourceFiles="$(BackupRepoLockFile)" DestinationFiles="$(RepoLockFile)" Condition="Exists($(BackupRepoLockFile))" />
</Target>
<Target Name="_BuildRepository" DependsOnTargets="GetRepoBuildProps;_UpdateRepoLockFile">
<PropertyGroup>
<BuildArguments>/t:CleanArtifacts /t:Build /p:SkipTests=true $(RepositoryBuildArguments)</BuildArguments>
<RepositoryArtifactsRoot>$(BuildRepositoryRoot)artifacts</RepositoryArtifactsRoot>
@ -89,18 +106,23 @@
<Message Text="============ Building $(RepositoryToBuild) ============" Importance="High" />
<!-- Copy Korebuild lock file to individual repos to align version if the repo doesn't already have one -->
<Message Text="Copying KoreBuild lockfile from Universe to repository $(BuildRepositoryRoot)"/>
<Copy SourceFiles="$(RepositoryRoot)korebuild-lock.txt" DestinationFolder="$(BuildRepositoryRoot)" />
<Exec
Command="./$(_BuildScriptToExecute) -Path $(BuildRepositoryRoot) $(BuildArguments)"
IgnoreStandardErrorWarningFormat="true"
WorkingDirectory="$(RepositoryRoot)" />
WorkingDirectory="$(RepositoryRoot)"
IgnoreExitCode="true"
ContinueOnError="WarnAndContinue">
<Output TaskParameter="ExitCode" PropertyName="BuildExitCode" />
</Exec>
<CallTarget Targets="_RestoreOriginalRepoLockFile" />
<!-- Fail if build.cmd didn't exit code 0 or process failed to start. -->
<Error Text="Building $(RepositoryToBuild) failed: $(_BuildScriptToExecute) exited code $(BuildExitCode)" Condition=" '$(BuildExitCode)' != '0' " />
<ItemGroup>
<RepositoryArtifacts Include="$(RepositoryArtifactsBuildDirectory)*" />
<RepositoryMSBuildArtifacts Include="$(RepositoryArtifactsMSBuildDirectory)**\*.*" />
<RepositoryMSBuildArtifacts Include="$(RepositoryArtifactsMSBuildDirectory)**\*" />
</ItemGroup>
<Copy
@ -114,7 +136,7 @@
<Message Text="============ Done building $(RepositoryToBuild) ============" Importance="High" />
</Target>
<Target Name="_TestRepository" DependsOnTargets="GetRepoBuildProps" Returns="@(RepositoryTestResult)">
<Target Name="_TestRepository" DependsOnTargets="GetRepoBuildProps;_UpdateRepoLockFile" Returns="@(RepositoryTestResult)">
<PropertyGroup>
<BuildArguments>/t:Test /p:NoBuild=$(_NoBuildRepos) $(RepositoryBuildArguments)</BuildArguments>
</PropertyGroup>
@ -125,10 +147,6 @@
<Message Text="============ Testing $(RepositoryToBuild) ============" Importance="High" />
<!-- Copy Korebuild lock file to individual repos to align version if the repo doesn't already have one -->
<Message Text="Copying KoreBuild lockfile from Universe to repository $(BuildRepositoryRoot)"/>
<Copy SourceFiles="$(RepositoryRoot)korebuild-lock.txt" DestinationFolder="$(BuildRepositoryRoot)" />
<Exec
Command="./$(_BuildScriptToExecute) -Path $(BuildRepositoryRoot) $(BuildArguments)"
IgnoreStandardErrorWarningFormat="true"
@ -137,6 +155,8 @@
<Output TaskParameter="ExitCode" PropertyName="TestExitCode" />
</Exec>
<CallTarget Targets="_RestoreOriginalRepoLockFile" />
<ItemGroup>
<RepositoryTestResult Update="$(RepositoryToBuild)" Success="true" Condition="'$(TestExitCode)' == '0'" />
</ItemGroup>