aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author杨宇千 <crupest@outlook.com>2019-03-14 23:53:54 +0800
committerGitHub <noreply@github.com>2019-03-14 23:53:54 +0800
commit393ca55a960abc7d2343a8a36a093d253eddf134 (patch)
tree0e19b39fd67a9650f0c0821796ffdb303471fadc
parent19a12661e981718aebc418624c602b852e68d54d (diff)
parentf4d3aff068199592ee995cd89941a1d2d4053524 (diff)
downloadtimeline-393ca55a960abc7d2343a8a36a093d253eddf134.tar.gz
timeline-393ca55a960abc7d2343a8a36a093d253eddf134.tar.bz2
timeline-393ca55a960abc7d2343a8a36a093d253eddf134.zip
Merge pull request #16 from crupest/ci
Enhance ci.
-rw-r--r--Timeline.Tests/Timeline.Tests-CI.csproj27
-rw-r--r--Timeline/Timeline-CI.csproj35
-rw-r--r--azure-pipelines.yml49
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