Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Overhaul build and project systems and drop Mac/POSIX code #1744

Merged
merged 35 commits into from
Jun 29, 2021
Merged
Show file tree
Hide file tree
Changes from 33 commits
Commits
Show all changes
35 commits
Select commit Hold shift + click to select a range
9ec87a2
build: drop old Azure Pipelines YAML CI/PR builds
mjcheetham Jun 28, 2021
3aa29b2
build: drop all old scripts
mjcheetham Jun 28, 2021
bfc909d
GitHooksLoader: move under GVFS dir and migrate proj
mjcheetham Jun 28, 2021
0ce4d9e
build: drop old targets/props and add new ones
mjcheetham Jun 28, 2021
7004ac7
build: drop more Mac/POSIX code
mjcheetham Jun 28, 2021
8602d8a
build: replace GVFS.Build with simpler MSBuild code
mjcheetham Jun 28, 2021
026b7b9
build: migrate VC++ projects to new build
mjcheetham Jun 28, 2021
d53ae03
build: migrate GVFS.Common project
mjcheetham Jun 28, 2021
fc39a8a
build: migrate GVFS.GVFlt project
mjcheetham Jun 28, 2021
edc5a4f
build: migrate GVFS.Virtualization project
mjcheetham Jun 28, 2021
1abeca4
build: migrate GVFS.Platform project
mjcheetham Jun 28, 2021
b60b9da
build: migrate GVFS.Hooks project
mjcheetham Jun 28, 2021
4eb8677
build: migrate GVFS.Upgrader project
mjcheetham Jun 28, 2021
57c2248
build: migrate GVFS.Mount project
mjcheetham Jun 28, 2021
2dbf900
build: migrate GVFS.Service project
mjcheetham Jun 28, 2021
480006a
build: migrate GVFS.Service.UI project
mjcheetham Jun 28, 2021
e5ce040
build: migrate GVFS project
mjcheetham Jun 28, 2021
c55c731
build: migrate FastFetch project
mjcheetham Jun 28, 2021
b9fc1a2
build: migrate GVFS.UnitTests and .Tests projects
mjcheetham Jun 28, 2021
e38a129
build: migrate GVFS.FunctionalTests.LockHolder project
mjcheetham Jun 28, 2021
7c5c374
build: migrate GVFS.PerfProfiling project
mjcheetham Jun 28, 2021
173d930
build: replace GVFS.SignFiles with GVFS.Payload project
mjcheetham Jun 28, 2021
fbf300b
build: migrate GVFS.Installer.Windows project
mjcheetham Jun 28, 2021
5039078
build: merge GVFS.FunctionalTests.Windows tests into main project
mjcheetham Jun 28, 2021
0a93076
build: migrate GVFS.FunctionalTests project file
mjcheetham Jun 28, 2021
2945674
build: drop Mac/POSIX tests and drop WinOnly category
mjcheetham Jun 28, 2021
5853b5a
build: update FTs to run always against PATH
mjcheetham Jun 28, 2021
7437854
build: ignore functional tests that fail in CI only
mjcheetham Jun 28, 2021
5a464b6
build: migrate solution file
mjcheetham Jun 28, 2021
26376f2
build: add back new build scripts (for Windows only)
mjcheetham Jun 28, 2021
073780f
build: add GitHub Actions CI/PR workflow
mjcheetham Jun 28, 2021
072d7bc
build: add (currently unused) AzDO YAML release build
mjcheetham Jun 28, 2021
9f3b02c
build: run functional tests in PR builds
mjcheetham Jun 28, 2021
6933600
build: drop AnyCPU and x86 solution configurations
mjcheetham Jun 28, 2021
103dbfd
build: add releases/shipped to PR build trigger
mjcheetham Jun 29, 2021
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
66 changes: 0 additions & 66 deletions .azure-pipelines/continuous-integration.yml

This file was deleted.

22 changes: 0 additions & 22 deletions .azure-pipelines/pull-request.yml

This file was deleted.

93 changes: 93 additions & 0 deletions .azure-pipelines/release.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,93 @@
# NOTE: this pipeline definition is not currently used to build releases of VFS for Git.
# This is still done in the GVFS-Release-RealSign "classic" pipeline.
mjcheetham marked this conversation as resolved.
Show resolved Hide resolved

name: $(date:yy)$(DayOfYear)$(rev:.r)

variables:
signType: test
teamName: GVFS
configuration: Release
signPool: VSEng-MicroBuildVS2019
GVFSMajorAndMinorVersion: 1.0
GVFSRevision: $(Build.BuildNumber)

jobs:
- job: build
displayName: Windows Build and Sign

pool:
name: $(signPool)

steps:
- task: ms-vseng.MicroBuildTasks.30666190-6959-11e5-9f96-f56098202fef.MicroBuildSigningPlugin@2
displayName: Install signing plugin
inputs:
signType: '$(SignType)'

- task: UseDotNet@2
displayName: Install .NET SDK
inputs:
packageType: sdk
version: 5.0.201

- task: CmdLine@2
displayName: Build VFS for Git
inputs:
script: $(Build.Repository.LocalPath)\scripts\Build.bat $(configuration) $(GVFSMajorAndMinorVersion).$(GVFSRevision) detailed

- task: CmdLine@2
displayName: Run unit tests
inputs:
script: $(Build.Repository.LocalPath)\scripts\RunUnitTests.bat $(configuration)

- task: CmdLine@2
displayName: Create build artifacts
inputs:
script: $(Build.Repository.LocalPath)\scripts\CreateBuildArtifacts.bat $(configuration) $(Build.ArtifactStagingDirectory)

- task: PublishBuildArtifacts@1
displayName: 'Publish Artifact: Installer'
inputs:
PathtoPublish: $(Build.ArtifactStagingDirectory)\NuGetPackages
ArtifactName: Installer

- task: PublishBuildArtifacts@1
displayName: 'Publish Artifact: FastFetch'
inputs:
PathtoPublish: $(Build.ArtifactStagingDirectory)\FastFetch
ArtifactName: FastFetch

- task: PublishSymbols@1
displayName: Enable Source Server
condition: eq(succeeded(), eq(variables['signType'], 'real'))
inputs:
SearchPattern: '**\*.pdb'
SymbolsFolder: $(Build.ArtifactStagingDirectory)\Symbols

- task: PublishBuildArtifacts@1
displayName: 'Publish Artifact: Symbols'
inputs:
PathtoPublish: $(Build.ArtifactStagingDirectory)\Symbols
ArtifactName: Symbols

- task: ms-vscs-artifact.build-tasks.artifactSymbolTask-1.artifactSymbolTask@0
displayName: Publish to Symbols on Symweb
condition: eq(succeeded(), eq(variables['signType'], 'real'))
inputs:
symbolServiceURI: https://microsoft.artifacts.visualstudio.com/DefaultCollection
sourcePath: $(Build.ArtifactStagingDirectory)/Symbols
expirationInDays: 2065
usePat: false

- task: NuGetCommand@2
displayName: Push GVFS.Installers package
condition: eq(succeeded(), eq(variables['signType'], 'real'))
inputs:
command: push
packagesToPush: $(Build.ArtifactStagingDirectory)\NuGetPackages\GVFS.Installers.*.nupkg
nuGetFeedType: external
publishFeedCredentials: '1essharedassets GVFS [PUBLISH]'

- task: ms-vseng.MicroBuildTasks.521a94ea-9e68-468a-8167-6dcf361ea776.MicroBuildCleanup@1
displayName: Send MicroBuild Telemetry
condition: always()
40 changes: 0 additions & 40 deletions .azure-pipelines/templates/windows-build-and-unit-test.yml

This file was deleted.

28 changes: 0 additions & 28 deletions .azure-pipelines/templates/windows-functional-test.yml

This file was deleted.

133 changes: 133 additions & 0 deletions .github/workflows/build.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,133 @@
name: VFS for Git

on:
pull_request:
branches: [ master ]
mjcheetham marked this conversation as resolved.
Show resolved Hide resolved
push:
branches: [ master, releases/shipped ]

jobs:
build:
runs-on: windows-2019
name: Build and Unit Test

strategy:
matrix:
configuration: [ Debug, Release ]

steps:
- name: Checkout source
uses: actions/checkout@v2
with:
path: src

- name: Install .NET SDK
uses: actions/setup-dotnet@v1
with:
dotnet-version: 5.0.201

- name: Add MSBuild to PATH
uses: microsoft/setup-msbuild@v1.0.2

- name: Build VFS for Git
shell: cmd
run: src\scripts\Build.bat ${{ matrix.configuration }}

- name: Run unit tests
shell: cmd
run: src\scripts\RunUnitTests.bat ${{ matrix.configuration }}

- name: Create build artifacts
shell: cmd
run: src\scripts\CreateBuildArtifacts.bat ${{ matrix.configuration }} artifacts

- name: Upload functional tests drop
uses: actions/upload-artifact@v2
with:
name: FunctionalTests_${{ matrix.configuration }}
path: artifacts\GVFS.FunctionalTests

- name: Upload FastFetch drop
uses: actions/upload-artifact@v2
with:
name: FastFetch_${{ matrix.configuration }}
path: artifacts\FastFetch

- name: Upload installers
uses: actions/upload-artifact@v2
with:
name: Installers_${{ matrix.configuration }}
path: artifacts\GVFS.Installers

- name: Upload NuGet packages
uses: actions/upload-artifact@v2
with:
name: NuGetPackages_${{ matrix.configuration }}
path: artifacts\NuGetPackages

functional_test:
runs-on: windows-2019
name: Functional Tests
needs: build

strategy:
matrix:
configuration: [ Debug, Release ]

steps:
- name: Download installers
uses: actions/download-artifact@v2
with:
name: Installers_${{ matrix.configuration }}
path: install

- name: Download functional tests drop
uses: actions/download-artifact@v2
with:
name: FunctionalTests_${{ matrix.configuration }}
path: ft

- name: ProjFS details (pre-install)
shell: cmd
run: install\info.bat

- name: Install product
shell: cmd
run: install\install.bat

- name: ProjFS details (post-install)
shell: cmd
run: install\info.bat

- name: Upload installation logs
if: always()
uses: actions/upload-artifact@v2
with:
name: InstallationLogs_${{ matrix.configuration }}
path: install\logs

- name: Run functional tests
shell: cmd
run: |
SET PATH=C:\Program Files\GVFS;%PATH%
SET GIT_TRACE2_PERF=C:\temp\git-trace2.log
ft\GVFS.FunctionalTests.exe /result:TestResult.xml --ci

- name: Upload functional test results
if: always()
uses: actions/upload-artifact@v2
with:
name: FunctionalTests_Results_${{ matrix.configuration }}
path: TestResult.xml

- name: Upload Git trace2 output
if: always()
uses: actions/upload-artifact@v2
with:
name: GitTrace2_${{ matrix.configuration }}
path: C:\temp\git-trace2.log

- name: ProjFS details (post-test)
if: always()
shell: cmd
run: install\info.bat
Loading