Skip to content

WIP: NtQueryObject / NtQueryInformationFile #81

WIP: NtQueryObject / NtQueryInformationFile

WIP: NtQueryObject / NtQueryInformationFile #81

Workflow file for this run

name: Build USVFS
on:
push:
branches: master
pull_request:
types: [opened, synchronize, reopened]
env:
BOOST_PREBUILT_URL: "https://github.com/ModOrganizer2/mob/releases/download/2.5-dependencies/boost_prebuilt_1_85_0.7z"
jobs:
build:
name: Build USVFS
strategy:
matrix:
arch: [x86, x64]
config: [Debug, Release]
tests: ["", "Test"]
runs-on: windows-2022
steps:
- uses: actions/checkout@v4
with:
submodules: true
- name: Fetch Boost prebuilt
run: |
Invoke-WebRequest -Uri ${env:BOOST_PREBUILT_URL} -OutFile boost.7z
Expand-7ZipArchive -Path boost.7z -Destination .\boost
- name: Add msbuild to PATH
uses: microsoft/setup-msbuild@v2
with:
msbuild-architecture: ${{ matrix.arch }}
- if: matrix.tests == 'Test'
name: Fetch googletest
uses: actions/checkout@v4
with:
repository: google/googletest
path: ./googletest
- if: matrix.tests == 'Test'
name: Build googletest
run: |
cmake -B googletest/build_${{ matrix.arch }} `
-A ${{ matrix.arch == 'x86' && 'Win32' || 'x64' }} `
-Dgtest_force_shared_crt=ON `
googletest
cmake --build googletest/build_${{ matrix.arch }} --config ${{ matrix.config }}
- name: Build
run: |
msbuild -nologo `
-maxCpuCount "-property:UseMultiToolTask=true" "-property:EnforceProcessCountAcrossBuilds=true" `
"-property:Configuration=${{ matrix.config }}${{ matrix.tests }}" `
"-property:Platform=${{ matrix.arch }}" `
"-property:BOOST_PATH=..\boost" `
"-property:GTEST_PATH=..\googletest" `
"-property:GTEST_LIBDIR=..\googletest\build_${{ matrix.arch }}\lib\${{ matrix.config }}" `
"-property:RunCodeAnalysis=false" `
.\vsbuild\usvfs.sln
- if: matrix.tests == 'Test'
uses: actions/upload-artifact@master
with:
name: usvfs-libs_${{ matrix.arch }}_${{ matrix.config }}
path: ./lib
- if: matrix.tests == 'Test'
uses: actions/upload-artifact@master
with:
name: usvfs-bins_${{ matrix.arch }}_${{ matrix.config }}
path: ./bin
- if: matrix.tests == 'Test'
uses: actions/upload-artifact@master
with:
name: usvfs-tests_${{ matrix.arch }}_${{ matrix.config }}
path: ./test/bin
# merge x86 / x64 artifacts
merge-artifacts:
runs-on: ubuntu-latest
name: Merge Artifacts for Tests
strategy:
matrix:
config: [Debug, Release]
needs: build
steps:
- name: Merge USVFS libs
uses: actions/upload-artifact/merge@v4
with:
name: usvfs-libs_${{ matrix.config }}
pattern: usvfs-libs_*_${{ matrix.config }}
- name: Merge USVFS bins
uses: actions/upload-artifact/merge@v4
with:
name: usvfs-bins_${{ matrix.config }}
pattern: usvfs-bins_*_${{ matrix.config }}
- name: Merge USVFS tests
uses: actions/upload-artifact/merge@v4
with:
name: usvfs-tests_${{ matrix.config }}
pattern: usvfs-tests_*_${{ matrix.config }}
test:
name: Test USVFS
needs: merge-artifacts
runs-on: windows-2022
strategy:
matrix:
arch: [x86, x64]
config: [Debug, Release]
steps:
- uses: actions/checkout@v4
- uses: actions/download-artifact@master
with:
name: usvfs-libs_${{ matrix.config }}
path: ./lib
- uses: actions/download-artifact@master
with:
name: usvfs-bins_${{ matrix.config }}
path: ./bin
- uses: actions/download-artifact@master
with:
name: usvfs-tests_${{ matrix.config }}
path: ./test/bin
- run: ./test/bin/shared_test_${{ matrix.arch }}.exe
if: always()
- run: ./test/bin/testinject_bin_${{ matrix.arch }}.exe
if: always()
- run: ./test/bin/thooklib_test_${{ matrix.arch }}.exe
if: always()
- run: ./test/bin/tinjectlib_test_${{ matrix.arch }}.exe
if: always()
- run: ./test/bin/tvfs_test_${{ matrix.arch }}.exe
if: always()
- run: ./test/bin/usvfs_test_runner_${{ matrix.arch }}.exe
if: always()
- run: ./test/bin/usvfs_global_test_runner_${{ matrix.arch }}.exe
if: always()
- uses: actions/upload-artifact@master
if: always()
with:
name: tests-outputs_${{ matrix.arch }}_${{ matrix.config }}
path: ./test/temp
if-no-files-found: ignore
retention-days: 7
overwrite: true