aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorcrupest <crupest@outlook.com>2019-03-14 23:01:19 +0800
committercrupest <crupest@outlook.com>2019-03-14 23:01:19 +0800
commitff8a3ceca3c4bfe5b858957e66ed7e8f1719c97e (patch)
tree05d93a561ef35c53d1343131907e6fbaf2fe30ee
parent1fc9f877760fa78da57ec22c08c5d6e9e194fafe (diff)
downloadtimeline-ff8a3ceca3c4bfe5b858957e66ed7e8f1719c97e.tar.gz
timeline-ff8a3ceca3c4bfe5b858957e66ed7e8f1719c97e.tar.bz2
timeline-ff8a3ceca3c4bfe5b858957e66ed7e8f1719c97e.zip
Optimize. Get rid of repeated yarn install.
-rw-r--r--Timeline.Tests/Timeline.Test-CI.csproj27
-rw-r--r--Timeline/Timeline-CI.csproj34
-rw-r--r--azure-pipelines.yml113
3 files changed, 111 insertions, 63 deletions
diff --git a/Timeline.Tests/Timeline.Test-CI.csproj b/Timeline.Tests/Timeline.Test-CI.csproj
new file mode 100644
index 00000000..3639dbf8
--- /dev/null
+++ b/Timeline.Tests/Timeline.Test-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..e8d35b1d
--- /dev/null
+++ b/Timeline/Timeline-CI.csproj
@@ -0,0 +1,34 @@
+<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>
+ </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 ab4e3486..a413ffea 100644
--- a/azure-pipelines.yml
+++ b/azure-pipelines.yml
@@ -8,69 +8,56 @@ trigger:
variables:
ArtifactFeed: NodeModules
+ buildConfiguration: 'Release'
+ ASPNETCORE_ENVIRONMENT: 'Development'
-jobs:
-- job: FrontEnd
- pool:
- vmImage: 'Ubuntu-16.04'
- steps:
- - task: 1ESLighthouseEng.PipelineArtifactCaching.RestoreAndSaveCacheV1.RestoreAndSaveCache@1
- inputs:
- keyfile: '**/yarn.lock, !**/node_modules/**/yarn.lock, !**/.*/**/yarn.lock'
- targetfolder: '**/node_modules, !**/node_modules/**/node_modules'
- vstsFeed: '$(ArtifactFeed)'
- - script: yarn install
- condition: ne(variables['CacheRestored'], 'true')
- workingDirectory: Timeline/ClientApp
- displayName: Yarn Install
- - script: yarn run test --no-watch --browsers=ChromeHeadless --reporters junit
- workingDirectory: Timeline/ClientApp
- displayName: Angular Test
- - task: PublishTestResults@2
- condition: succeededOrFailed()
- inputs:
- testRunner: JUnit
- testResultsFiles: '**/TESTS-*.xml'
+pool:
+ vmImage: 'Ubuntu-16.04'
+steps:
+- task: 1ESLighthouseEng.PipelineArtifactCaching.RestoreCacheV1.RestoreCache@1
+ inputs:
+ keyfile: '**/yarn.lock, !**/node_modules/**/yarn.lock, !**/.*/**/yarn.lock'
+ targetfolder: '**/node_modules, !**/node_modules/**/node_modules'
+ vstsFeed: '$(ArtifactFeed)'
-- job: BackEnd
- pool:
- vmImage: 'Ubuntu-16.04'
- variables:
- buildConfiguration: 'Release'
- ASPNETCORE_ENVIRONMENT: 'Development'
- steps:
- - task: 1ESLighthouseEng.PipelineArtifactCaching.RestoreAndSaveCacheV1.RestoreAndSaveCache@1
- inputs:
- keyfile: '**/yarn.lock, !**/node_modules/**/yarn.lock, !**/.*/**/yarn.lock'
- targetfolder: '**/node_modules, !**/node_modules/**/node_modules'
- vstsFeed: '$(ArtifactFeed)'
- - 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()
- inputs:
- testRunner: VSTest
- testResultsFiles: '**/*.trx'
+- script: yarn install --non-interactive
+ condition: ne(variables['CacheRestored'], 'true')
+ workingDirectory: Timeline/ClientApp
+ displayName: Yarn Install
-- job: Publish
- dependsOn:
- - FrontEnd
- - BackEnd
- pool:
- vmImage: 'Ubuntu-16.04'
- variables:
- buildConfiguration: 'Release'
- steps:
- - task: 1ESLighthouseEng.PipelineArtifactCaching.RestoreAndSaveCacheV1.RestoreAndSaveCache@1
- inputs:
- keyfile: '**/yarn.lock, !**/node_modules/**/yarn.lock, !**/.*/**/yarn.lock'
- targetfolder: '**/node_modules, !**/node_modules/**/node_modules'
- vstsFeed: '$(ArtifactFeed)'
- - script: dotnet publish Timeline/Timeline.csproj --configuration $(buildConfiguration) --output ./publish/
- displayName: Dotnet Publish
- - task: PublishPipelineArtifact@0
- inputs:
- artifactName: 'timeline'
- targetPath: Timeline/publish
+- 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 --prod --no-watch --browsers=ChromeHeadless --reporters junit
+ workingDirectory: Timeline/ClientApp
+ displayName: Angular Test
+
+- task: PublishTestResults@2
+ condition: succeededOrFailed()
+ inputs:
+ testRunner: JUnit
+ testResultsFiles: '**/TESTS-*.xml'
+
+- script: dotnet test Timeline.Tests/Timeline.Test-CI.csproj --configuration $(buildConfiguration) --configfile nuget.config --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) --configfile nuget.config --output ./publish/
+ displayName: Dotnet Publish
+
+- task: PublishPipelineArtifact@0
+ inputs:
+ artifactName: 'timeline'
+ targetPath: Timeline/publish