diff options
-rw-r--r-- | Timeline.Tests/Timeline.Tests-CI.csproj | 27 | ||||
-rw-r--r-- | Timeline/Timeline-CI.csproj | 35 | ||||
-rw-r--r-- | azure-pipelines.yml | 49 |
3 files changed, 96 insertions, 15 deletions
diff --git a/Timeline.Tests/Timeline.Tests-CI.csproj b/Timeline.Tests/Timeline.Tests-CI.csproj new file mode 100644 index 00000000..3639dbf8 --- /dev/null +++ b/Timeline.Tests/Timeline.Tests-CI.csproj @@ -0,0 +1,27 @@ +<Project Sdk="Microsoft.NET.Sdk.Web"> + + <PropertyGroup> + <TargetFramework>netcoreapp2.2</TargetFramework> + </PropertyGroup> + + <ItemGroup> + <PackageReference Include="Microsoft.AspNetCore.App" /> + <PackageReference Include="Microsoft.AspNetCore.Mvc.Testing" Version="2.2.0" /> + <PackageReference Include="Microsoft.Extensions.Logging.Testing" Version="2.2.0-rtm-35646" /> + <PackageReference Include="Microsoft.NET.Test.Sdk" Version="15.9.0" /> + <PackageReference Include="xunit" Version="2.4.1" /> + <PackageReference Include="xunit.runner.visualstudio" Version="2.4.1"> + <PrivateAssets>all</PrivateAssets> + <IncludeAssets>runtime; build; native; contentfiles; analyzers</IncludeAssets> + </PackageReference> + </ItemGroup> + + <ItemGroup> + <ProjectReference Include="..\Timeline\Timeline-CI.csproj" /> + </ItemGroup> + + <ItemGroup> + <Folder Include="Properties\" /> + </ItemGroup> + +</Project> diff --git a/Timeline/Timeline-CI.csproj b/Timeline/Timeline-CI.csproj new file mode 100644 index 00000000..65bfacdf --- /dev/null +++ b/Timeline/Timeline-CI.csproj @@ -0,0 +1,35 @@ +<Project Sdk="Microsoft.NET.Sdk.Web"> + + <PropertyGroup> + <TargetFramework>netcoreapp2.2</TargetFramework> + <TypeScriptCompileBlocked>true</TypeScriptCompileBlocked> + <TypeScriptToolsVersion>Latest</TypeScriptToolsVersion> + <IsPackable>false</IsPackable> + <SpaRoot>ClientApp\</SpaRoot> + <DefaultItemExcludes>$(DefaultItemExcludes);$(SpaRoot)node_modules\**</DefaultItemExcludes> + <Authors>crupest</Authors> + <AssemblyName>Timeline</AssemblyName> + </PropertyGroup> + + <ItemGroup> + <PackageReference Include="Microsoft.AspNetCore.App" /> + </ItemGroup> + + <ItemGroup> + <!-- Don't publish the SPA source files, but do show them in the project files list --> + <Content Remove="$(SpaRoot)**" /> + <None Remove="$(SpaRoot)**" /> + <None Include="$(SpaRoot)**" Exclude="$(SpaRoot)node_modules\**" /> + </ItemGroup> + + <Target Name="PublishRunWebpack" AfterTargets="ComputeFilesToPublish"> + <ItemGroup> + <DistFiles Include="$(SpaRoot)dist\**" /> + <ResolvedFileToPublish Include="@(DistFiles->'%(FullPath)')" Exclude="@(ResolvedFileToPublish)"> + <RelativePath>%(DistFiles.Identity)</RelativePath> + <CopyToPublishDirectory>PreserveNewest</CopyToPublishDirectory> + </ResolvedFileToPublish> + </ItemGroup> + </Target> + +</Project> diff --git a/azure-pipelines.yml b/azure-pipelines.yml index 1cdf1c3a..17087351 100644 --- a/azure-pipelines.yml +++ b/azure-pipelines.yml @@ -6,30 +6,31 @@ trigger: - master -pool: - vmImage: 'Ubuntu-16.04' - variables: + ArtifactFeed: NodeModules buildConfiguration: 'Release' ASPNETCORE_ENVIRONMENT: 'Development' +pool: + vmImage: 'Ubuntu-16.04' steps: -- script: dotnet build --configuration $(buildConfiguration) --configfile nuget.config - displayName: Dotnet Build - -- script: dotnet test Timeline.Tests --configuration $(buildConfiguration) --logger trx - displayName: Dotnet Test - -- task: PublishTestResults@2 - condition: succeededOrFailed() +- task: 1ESLighthouseEng.PipelineArtifactCaching.RestoreCacheV1.RestoreCache@1 inputs: - testRunner: VSTest - testResultsFiles: '**/*.trx' + keyfile: '**/yarn.lock, !**/node_modules/**/yarn.lock, !**/.*/**/yarn.lock' + targetfolder: '**/node_modules, !**/node_modules/**/node_modules' + vstsFeed: '$(ArtifactFeed)' -- script: yarn install +- script: yarn install --non-interactive + condition: ne(variables['CacheRestored'], 'true') workingDirectory: Timeline/ClientApp displayName: Yarn Install +- task: 1ESLighthouseEng.PipelineArtifactCaching.SaveCacheV1.SaveCache@1 + inputs: + keyfile: '**/yarn.lock, !**/node_modules/**/yarn.lock, !**/.*/**/yarn.lock' + targetfolder: '**/node_modules, !**/node_modules/**/node_modules' + vstsFeed: '$(ArtifactFeed)' + - script: yarn run test --no-watch --browsers=ChromeHeadless --reporters junit workingDirectory: Timeline/ClientApp displayName: Angular Test @@ -40,7 +41,25 @@ steps: testRunner: JUnit testResultsFiles: '**/TESTS-*.xml' -- script: dotnet publish Timeline/Timeline.csproj --configuration $(buildConfiguration) --output ./publish/ +- script: | + dotnet restore Timeline/Timeline-CI.csproj --configfile nuget.config + dotnet restore Timeline.Tests/Timeline.Tests-CI.csproj --configfile nuget.config + displayName: Dotnet Restore + +- script: dotnet test Timeline.Tests/Timeline.Tests-CI.csproj --configuration $(buildConfiguration) --no-restore --logger trx + displayName: Dotnet Test + +- task: PublishTestResults@2 + condition: succeededOrFailed() + inputs: + testRunner: VSTest + testResultsFiles: '**/*.trx' + +- script: yarn build --prod + workingDirectory: Timeline/ClientApp + displayName: Client App Build + +- script: dotnet publish Timeline/Timeline-CI.csproj --configuration $(buildConfiguration) --no-restore --output ./publish/ displayName: Dotnet Publish - task: PublishPipelineArtifact@0 |