Skip to content

All working

All working #844

######################################################################################
# #
# If you're looking for instructions on how to build this under windows go to #
#https://github.com/openzfsonwindows/openzfs/blob/windows/module/os/windows/README.md#
# #
######################################################################################
name: windows-build-test
on:
push:
pull_request:
workflow_dispatch:
inputs:
run-failing:
type: boolean
default: true
description: Run tests that fail
env:
# Customize the CMake build type here (Release, Debug, RelWithDebInfo, etc.)
BUILD_TYPE: Debug
IS_STEP_DEBUG: ${{ secrets.ACTIONS_STEP_DEBUG }}
jobs:
build_windows:
timeout-minutes: 30
# The CMake configure and build commands are platform agnostic and should work equally well on Windows or Mac.
# You can convert this to a matrix build if you need cross-platform coverage.
# See: https://docs.github.com/en/free-pro-team@latest/actions/learn-github-actions/managing-complex-workflows#using-a-build-matrix
runs-on: windows-latest
steps:
- uses: ilammy/msvc-dev-cmd@v1
- uses: actions/checkout@v4
with:
#repository: openzfsonwindows/openzfs
fetch-depth: 0
- name: debug - git status
run: git status
if: ${{ env.IS_STEP_DEBUG == 'true' }}
#https://stackoverflow.com/a/60883893
# "C:\Program Files\Git\bin\git.exe" -c protocol.version=2 fetch --no-tags --prune --progress --no-recurse-submodules --depth=1 origin +90acd8f20e6d0c14b83241cc7dcd17df27d5a95b:refs/remotes/origin/andrew_workflows-7
#- name: checkout again
# run: git fetch --prune --unshallow
- name: Import signing certificate
run: |
$plaintextpwd = 'password1234'
$pwd = ConvertTo-SecureString -String $plaintextpwd -Force -AsPlainText
Import-PfxCertificate -FilePath ${{github.workspace}}/contrib/windows/TestCert/test_sign_cert_pass.pfx -CertStoreLocation Cert:\CurrentUser\My -Password $pwd -Exportable
#- name: Remove provided ssl
# run: Remove-Item -Path "C:\Strawberry\" -Recurse -Force
#- name: Install openssl
# run: git clone https://github.com/andrewc12/openssl.git
- name: Checkout openssl
uses: actions/checkout@v4
with:
repository: andrewc12/openssl # optional, default is ${{ github.repository }}
path: openssl # optional
- name: Configure CMake
# Configure CMake in a 'build' subdirectory. `CMAKE_BUILD_TYPE` is only required if you are using a single-configuration generator such as make.
# See https://cmake.org/cmake/help/latest/variable/CMAKE_BUILD_TYPE.html?highlight=cmake_build_type
run: cmake -G "Ninja" -B ${{github.workspace}}/out/build/x64-Debug ${{github.workspace}} -DOPENSSL_ROOT_DIR=${{github.workspace}}/openssl/ -DCRYPTO_STATIC_TEST=${{github.workspace}}/openssl/lib/VC/static/libcrypto64MTd.lib -DLIB_EAY_DEBUG=${{github.workspace}}/openssl/lib/VC/static/libcrypto64MTd.lib -DLIB_EAY_RELEASE=${{github.workspace}}/openssl/lib/VC/static/libcrypto64MT.lib -DOPENSSL_INCLUDE_DIR=${{github.workspace}}/openssl/include -DSSL_EAY_DEBUG=${{github.workspace}}/openssl/lib/VC/static/libssl64MTd.lib -DSSL_EAY_RELEASE=${{github.workspace}}/openssl/lib/VC/static/libssl64MT.lib
- name: Build
working-directory: ${{github.workspace}}/out/build/x64-Debug
# Build your program with the given configuration
run: cmake --build ${{github.workspace}}/out/build/x64-Debug
- name: debug - get git rev
run: git describe --always --long --dirty
# InnoSetup is part of the Github actions runner
# - name: Install InnoSetup
# run: choco install -y InnoSetup
- name: run ISCC.exe to construct OpenZFS installer
run: '&"${env:ProgramFiles(x86)}\Inno Setup 6\ISCC.exe" .\ZFSInstall-debug.iss "/Ssigntoolc=${env:ProgramFiles(x86)}\Windows Kits\10\bin\10.0.22621.0\x64\signtool.exe sign /v /fd sha256 /n `$qOpenZFS Test Signing Certificate`$q /t http://timestamp.digicert.com `$f" | Tee-Object -FilePath "${{github.workspace}}\iscc.log"'
working-directory: ${{github.workspace}}\contrib\windows\Inno.Setup
#- name: debug - get exe name
# https://stackoverflow.com/questions/4426442/unix-tail-equivalent-command-in-windows-powershell
# run: Get-Content "${{github.workspace}}\iscc.log" -Tail 1
- name: get installer exe name
id: innoout
# https://stackoverflow.com/questions/4426442/unix-tail-equivalent-command-in-windows-powershell
#https://www.jamescroft.co.uk/setting-github-actions-environment-variables-in-powershell/
run: |
$p = Get-Content "${{github.workspace}}\iscc.log" -Tail 1
echo $p
$f = (Get-Item $p ).Name
echo $f
echo installername=$f
#echo "installername=$f" >> $GITHUB_ENV
#echo "installername=$f" >> $GITHUB_OUTPUT
echo "installername=$f" | Out-File -FilePath $Env:GITHUB_OUTPUT -Encoding utf8 -Append
#shell: pwsh
- name: debug - echo
run: echo "${{ steps.innoout.outputs.installername }}"
- name: Upload a Build Artifact
if: ${{ failure() }}
uses: actions/upload-artifact@v4
with:
name: build_output
path: ${{github.workspace}}/out
- name: Collect dev build
if: ${{ failure() }}
run: |
mkdir ${{github.workspace}}/zfs_collect
copy ${{github.workspace}}/out/build/x64-Debug/module/os/windows/driver/* ${{github.workspace}}/zfs_collect
copy ${{github.workspace}}/out/build/x64-Debug/cmd/os/windows/kstat/kstat.exe ${{github.workspace}}/zfs_collect/kstat.exe
copy ${{github.workspace}}/out/build/x64-Debug/cmd/os/windows/zfsinstaller/zfsinstaller.exe ${{github.workspace}}/zfs_collect/zfsinstaller.exe
copy ${{github.workspace}}/out/build/x64-Debug/cmd/zdb/zdb.exe ${{github.workspace}}/zfs_collect/zdb.exe
copy ${{github.workspace}}/out/build/x64-Debug/cmd/zfs/zfs.exe ${{github.workspace}}/zfs_collect/zfs.exe
copy ${{github.workspace}}/out/build/x64-Debug/cmd/zpool/zpool.exe ${{github.workspace}}/zfs_collect/zpool.exe
copy ${{github.workspace}}/out/build/x64-Debug/cmd/zstream/zstreamdump.exe ${{github.workspace}}/zfs_collect/zstreamdump.exe
- name: Upload dev build
if: ${{ failure() }}
uses: actions/upload-artifact@v4
with:
name: dev_build
path: ${{github.workspace}}/zfs_collect/*
- name: Upload dev build with Inno Setup
uses: actions/upload-artifact@v4
with:
name: dev_build_inno
path: ${{github.workspace}}\contrib\windows\${{ steps.innoout.outputs.name }}
# https://github.com/MicrosoftDocs/windows-powershell-docs/issues/266
- name: Import root certificate
run: |
$plaintextpwd = 'password1234'
$pwd = ConvertTo-SecureString -String $plaintextpwd -Force -AsPlainText
Import-PfxCertificate -FilePath ${{github.workspace}}/contrib/windows/TestCert/test_sign_cert_pass.pfx -CertStoreLocation Cert:\LocalMachine\Root -Password $pwd
Import-PfxCertificate -FilePath ${{github.workspace}}/contrib/windows/TestCert/test_sign_cert_pass.pfx -CertStoreLocation Cert:\LocalMachine\TrustedPublisher -Password $pwd
- name: install zfs
run: 'Start-Process -FilePath "${{github.workspace}}\contrib\windows\${{ steps.innoout.outputs.installername }}" -Wait -ArgumentList "/NORESTART /ALLUSERS /VERYSILENT /LOG=`"${{github.workspace}}\InnoSetup-Install.log`""'
- name: debug - print log
run: cat "${{github.workspace}}\InnoSetup-Install.log"
if: ${{ env.IS_STEP_DEBUG == 'true' }}
- name: Check InstallLocation Registry Value
run: |
$registryPath = "HKLM:\Software\OpenZFS\OpenZFS On Windows"
$valueName = "InstallLocation"
$expectedValue = "C:\Program Files\OpenZFS On Windows"
if (-Not (Test-Path -Path $registryPath)) {
Write-Host "Registry path $registryPath does not exist."
exit 1
}
$registryValues = Get-ItemProperty -Path $registryPath
if (-Not ($registryValues.PSObject.Properties.Name -contains $valueName)) {
Write-Host "Registry path $registryPath does not contain value $valueName."
exit 1
}
$value = $registryValues.$valueName
if (-Not ($value -eq $expectedValue)) {
Write-Host "Registry value $valueName=$value not as expected, expected $expectedValue."
exit 1
}
Write-Host "Found installation location $value"
# This is a basic workflow to help you get started with Actions
# https://github.blog/changelog/2020-07-06-github-actions-manual-triggers-with-workflow_dispatch/
test1_tests:
needs: [build_windows] #, build_wsl]
timeout-minutes: 30
runs-on: windows-latest
if: ${{ false }}
steps:
- uses: actions/checkout@v4
- uses: actions/download-artifact@v4
with:
name: dev_build_inno
# - uses: actions/download-artifact@v4
# with:
# name: build result
# - name: get files
# run: Get-ChildItem -Recurse
- name: get diskdrive
run: wmic diskdrive list
# - name: Download
# uses: suisei-cn/[email protected]
# #id: innoinstaller
# with:
# url: 'https://github.com/andrewc12/zfsfiledump/raw/main/testdrives.zip'
# target: ${{github.workspace}}/
#
#
# - name: make disk
# run: |
# Expand-Archive -LiteralPath ${{github.workspace}}/testdrives.zip -DestinationPath D:\
#
# - name: Download
# uses: suisei-cn/[email protected]
# #id: innoinstaller
# with:
# url: 'https://github.com/andrewc12/zfsfiledump/raw/main/scriptname.txt'
# target: ${{github.workspace}}/
#
# - name: make disk
# run: |
# diskpart /s scriptname.txt
#
#
#
# - name: get diskdrive
# run: wmic diskdrive list
#
#
# - name: get files
# run: Get-ChildItem -Recurse
- name: get zfsexename
id: zfsinstaller
run: |
$p = Get-ChildItem | Where-Object {$_.Name -like 'OpenZFSOnWindows-*.exe'} | Select-Object -first 1
echo $p
$f = (Get-Item $p ).Name
echo $f
echo zfsinstallerfilename=$f
echo "zfsinstallerfilename=$f" | Out-File -FilePath $Env:GITHUB_OUTPUT -Encoding utf8 -Append
# https://github.com/MicrosoftDocs/windows-powershell-docs/issues/266
- name: Import root certificate
run: |
$plaintextpwd = 'password1234'
$pwd = ConvertTo-SecureString -String $plaintextpwd -Force -AsPlainText
Import-PfxCertificate -FilePath ${{github.workspace}}/contrib/windows/TestCert/test_sign_cert_pass.pfx -CertStoreLocation Cert:\LocalMachine\Root -Password $pwd
Import-PfxCertificate -FilePath ${{github.workspace}}/contrib/windows/TestCert/test_sign_cert_pass.pfx -CertStoreLocation Cert:\LocalMachine\TrustedPublisher -Password $pwd
- name: debug - echo filename
run: echo "${{ steps.zfsinstaller.outputs.zfsinstallerfilename }}"
# - name: debug - list
# run: ls ${{github.workspace}}\
- name: debug - list
run: ls ${{github.workspace}}\${{ steps.zfsinstaller.outputs.filename }}
#- name: install zfs
# run: ${{github.workspace}}\${{ steps.zfsinstaller.outputs.filename }} /NORESTART /ALLUSERS /VERYSILENT /LOG="${{github.workspace}}\InnoSetup-Install.log"
- name: install zfs
run: 'Start-Process -FilePath "${{github.workspace}}\${{ steps.zfsinstaller.outputs.zfsinstallerfilename }}" -Wait -ArgumentList "/NORESTART /ALLUSERS /VERYSILENT /LOG=`"${{github.workspace}}\InnoSetup-Install.log`""'
# - name: debug - print log
# run: cat "${{github.workspace}}\InnoSetup-Install.log"
- name: Get InstallLocation Registry Value
id: registryzfs
run: |
$value = (Get-ItemProperty -Path "HKLM:\Software\OpenZFS\OpenZFS On Windows")."InstallLocation"
echo "zfspath=$value" | Out-File -FilePath $Env:GITHUB_OUTPUT -Encoding utf8 -Append
Write-Host "Found installation location $value"
# - name: debug - list
# run: ls "C:\Program Files"
#
# - name: debug - list
# run: ls "${{ steps.registryzfs.outputs.zfspath }}"
- name: debug - get status
run: '& "${{ steps.registryzfs.outputs.zfspath }}\zpool.exe" status'
- name: Create backing files
run: |
$f = new-object System.IO.FileStream ${{github.workspace}}\test01.dat, Create, ReadWrite
$f.SetLength(1GB)
$f.Close()
$f = new-object System.IO.FileStream ${{github.workspace}}\test02.dat, Create, ReadWrite
$f.SetLength(1GB)
$f.Close()
$f = new-object System.IO.FileStream ${{github.workspace}}\test03.dat, Create, ReadWrite
$f.SetLength(1GB)
$f.Close()
# - run: choco install gsudo
- name: tests/functional/cli_root/zpool_create/zpool_create_001_pos
timeout-minutes: 1
run: '& "${{ steps.registryzfs.outputs.zfspath }}\zpool.exe" create -f test01 \\?\${{github.workspace}}\test01.dat'
- run: Start-Sleep -Seconds 10
timeout-minutes: 1
- run: '& "${{ steps.registryzfs.outputs.zfspath }}\zpool.exe" status'
timeout-minutes: 1
- run: Start-Sleep -Seconds 10
timeout-minutes: 1
- run: '& "${{ steps.registryzfs.outputs.zfspath }}\zfs.exe" mount'
timeout-minutes: 1
- run: Start-Sleep -Seconds 10
timeout-minutes: 1
- run: '& "${{ steps.registryzfs.outputs.zfspath }}\zpool.exe" destroy -f test01'
timeout-minutes: 1
- run: Start-Sleep -Seconds 10
timeout-minutes: 1
- run: '& "${{ steps.registryzfs.outputs.zfspath }}\zpool.exe" create -f test02 \\?\${{github.workspace}}\test01.dat \\?\${{github.workspace}}\test02.dat'
timeout-minutes: 1
- run: Start-Sleep -Seconds 10
timeout-minutes: 1
- run: '& "${{ steps.registryzfs.outputs.zfspath }}\zpool.exe" destroy -f test02'
timeout-minutes: 1
- run: Start-Sleep -Seconds 10
timeout-minutes: 1
- run: '& "${{ steps.registryzfs.outputs.zfspath }}\zpool.exe" create -f test03 \\?\${{github.workspace}}\test01.dat \\?\${{github.workspace}}\test02.dat \\?\${{github.workspace}}\test03.dat'
timeout-minutes: 1
- run: Start-Sleep -Seconds 10
timeout-minutes: 1
- run: '& "${{ steps.registryzfs.outputs.zfspath }}\zpool.exe" destroy -f test03'
timeout-minutes: 1
- run: Start-Sleep -Seconds 10
timeout-minutes: 1
- run: '& "${{ steps.registryzfs.outputs.zfspath }}\zpool.exe" create -f test04 mirror \\?\${{github.workspace}}\test01.dat \\?\${{github.workspace}}\test02.dat'
timeout-minutes: 1
- run: Start-Sleep -Seconds 10
timeout-minutes: 1
- run: '& "${{ steps.registryzfs.outputs.zfspath }}\zpool.exe" destroy -f test04'
timeout-minutes: 1
- run: Start-Sleep -Seconds 10
timeout-minutes: 1
- run: '& "${{ steps.registryzfs.outputs.zfspath }}\zpool.exe" create -f test05 mirror \\?\${{github.workspace}}\test01.dat \\?\${{github.workspace}}\test02.dat \\?\${{github.workspace}}\test03.dat'
timeout-minutes: 1
- run: Start-Sleep -Seconds 10
timeout-minutes: 1
- run: '& "${{ steps.registryzfs.outputs.zfspath }}\zpool.exe" destroy -f test05'
timeout-minutes: 1
- run: Start-Sleep -Seconds 10
timeout-minutes: 1
- run: '& "${{ steps.registryzfs.outputs.zfspath }}\zpool.exe" create -f test06 raidz \\?\${{github.workspace}}\test01.dat \\?\${{github.workspace}}\test02.dat \\?\${{github.workspace}}\test03.dat'
timeout-minutes: 1
- run: Start-Sleep -Seconds 10
timeout-minutes: 1
- run: '& "${{ steps.registryzfs.outputs.zfspath }}\zpool.exe" destroy -f test06'
timeout-minutes: 1
- run: Start-Sleep -Seconds 10
timeout-minutes: 1
- run: '& "${{ steps.registryzfs.outputs.zfspath }}\zpool.exe" create -f test07 raidz1 \\?\${{github.workspace}}\test01.dat \\?\${{github.workspace}}\test02.dat \\?\${{github.workspace}}\test03.dat'
timeout-minutes: 1
- run: Start-Sleep -Seconds 10
timeout-minutes: 1
- run: '& "${{ steps.registryzfs.outputs.zfspath }}\zpool.exe" destroy -f test07'
timeout-minutes: 1
- run: Start-Sleep -Seconds 10
timeout-minutes: 1
- name: uninstall zfs
run: 'Start-Process -FilePath "${{ steps.registryzfs.outputs.zfspath }}\unins000.exe" -Wait -ArgumentList "/NORESTART /VERYSILENT /LOG=`"${{github.workspace}}\InnoSetup-Uninstall.log`""'
- name: debug - print log
run: cat "${{github.workspace}}\InnoSetup-Uninstall.log"
# This is a basic workflow to help you get started with Actions
# https://github.blog/changelog/2020-07-06-github-actions-manual-triggers-with-workflow_dispatch/
test2_winbtrfs:
needs: [build_windows] #, build_wsl]
timeout-minutes: 30
runs-on: windows-latest
if: ${{ false }}
# if: ${{ inputs.run-failing }}
steps:
- uses: actions/checkout@v4
- uses: actions/download-artifact@v4
with:
name: dev_build_inno
# - uses: actions/download-artifact@v4
# with:
# name: build result
# - name: get files
# run: Get-ChildItem -Recurse
- name: get diskdrive
run: wmic diskdrive list
# - name: Download
# uses: suisei-cn/[email protected]
# #id: innoinstaller
# with:
# url: 'https://github.com/andrewc12/zfsfiledump/raw/main/testdrives.zip'
# target: ${{github.workspace}}/
#
#
# - name: make disk
# run: |
# Expand-Archive -LiteralPath ${{github.workspace}}/testdrives.zip -DestinationPath D:\
#
# - name: Download
# uses: suisei-cn/[email protected]
# #id: innoinstaller
# with:
# url: 'https://github.com/andrewc12/zfsfiledump/raw/main/scriptname.txt'
# target: ${{github.workspace}}/
#
# - name: make disk
# run: |
# diskpart /s scriptname.txt
#
#
#
# - name: get diskdrive
# run: wmic diskdrive list
#
#
# - name: get files
# run: Get-ChildItem -Recurse
- name: get zfsexename
id: zfsinstaller
run: |
$p = Get-ChildItem | Where-Object {$_.Name -like 'OpenZFSOnWindows-*.exe'} | Select-Object -first 1
echo $p
$f = (Get-Item $p ).Name
echo $f
echo "filename=$f" | Out-File -FilePath $Env:GITHUB_OUTPUT -Encoding utf8 -Append
# https://github.com/MicrosoftDocs/windows-powershell-docs/issues/266
- name: Import root certificate
run: |
$plaintextpwd = 'password1234'
$pwd = ConvertTo-SecureString -String $plaintextpwd -Force -AsPlainText
Import-PfxCertificate -FilePath ${{github.workspace}}/contrib/windows/TestCert/test_sign_cert_pass.pfx -CertStoreLocation Cert:\LocalMachine\Root -Password $pwd
Import-PfxCertificate -FilePath ${{github.workspace}}/contrib/windows/TestCert/test_sign_cert_pass.pfx -CertStoreLocation Cert:\LocalMachine\TrustedPublisher -Password $pwd
- name: debug - echo filename
run: echo ${{ steps.zfsinstaller.outputs.filename }}
# - name: debug - list
# run: ls ${{github.workspace}}\
- name: debug - list
run: ls ${{github.workspace}}\${{ steps.zfsinstaller.outputs.filename }}
#- name: install zfs
# run: ${{github.workspace}}\${{ steps.zfsinstaller.outputs.filename }} /NORESTART /ALLUSERS /VERYSILENT /LOG="${{github.workspace}}\InnoSetup-Install.log"
- name: install zfs
run: 'Start-Process -FilePath "${{github.workspace}}\${{ steps.zfsinstaller.outputs.filename }}" -Wait -ArgumentList "/NORESTART /ALLUSERS /VERYSILENT /LOG=`"${{github.workspace}}\InnoSetup-Install.log`""'
# - name: debug - print log
# run: cat "${{github.workspace}}\InnoSetup-Install.log"
- name: Get InstallLocation Registry Value
id: registryzfs
run: |
$value = (Get-ItemProperty -Path "HKLM:\Software\OpenZFS\OpenZFS On Windows")."InstallLocation"
echo "zfspath=$value" | Out-File -FilePath $Env:GITHUB_OUTPUT -Encoding utf8 -Append
Write-Host "Found installation location $value"
# - name: debug - list
# run: ls "C:\Program Files"
#
# - name: debug - list
# run: ls "${{ steps.registryzfs.outputs.zfspath }}"
- name: debug - get status
run: '& "${{ steps.registryzfs.outputs.zfspath }}\zpool.exe" status'
- name: Create backing files
run: |
$f = new-object System.IO.FileStream ${{github.workspace}}\test01.dat, Create, ReadWrite
$f.SetLength(1GB)
$f.Close()
- name: create pool
run: '& "${{ steps.registryzfs.outputs.zfspath }}\zpool.exe" create tank \\?\${{github.workspace}}\test01.dat'
- name: get pool status
run: '& "${{ steps.registryzfs.outputs.zfspath }}\zpool.exe" status'
- name: get pool mount
run: '& "${{ steps.registryzfs.outputs.zfspath }}\zfs.exe" mount'
- name: get pool mount
id: drive # Remember to give an ID if you need the output filename
run: '& "${{ steps.registryzfs.outputs.zfspath }}\zfs.exe" mount | Select-String -Pattern "^tank +([A-Za-z]):[/\\]" | % {"drive=$($_.matches.groups[1].value):\"} | Out-File -FilePath $Env:GITHUB_OUTPUT -Encoding utf8 -Append'
- name: echo
run: echo ${{ steps.drive.outputs.drive }}
- name: Download winbtrfs
uses: suisei-cn/[email protected]
id: winbtrs # Remember to give an ID if you need the output filename
with:
url: "https://github.com/andrewc12/btrfs/releases/download/v1.8/x64-Debug.zip"
target: ${{github.workspace}}/
- name: extract
run: Expand-Archive -LiteralPath '${{ steps.winbtrs.outputs.filename }}' -DestinationPath ${{github.workspace}}\winbtrfs
- name: debug - list
run: ls ${{github.workspace}}\
- name: debug - list
run: ls ${{github.workspace}}\winbtrfs
#- name: run winbtrfs tests
# run: '& "${{github.workspace}}\winbtrfs\test.exe" ${{ steps.drive.outputs.drive }}'
- name: test dummy status step
id: dummy
run: exit 0
- name: debug - dummy status
run: echo ${{ steps.dummy.conclusion }}
- run: Start-Sleep -Seconds 10
timeout-minutes: 1
#https://github.com/maharmstone/btrfs/blob/master/src/tests/test.cpp#L453
- name: run winbtrfs create tests
if: ${{ ( success() || failure() ) && steps.dummy.conclusion == 'success' }}
timeout-minutes: 1
run: '& "${{github.workspace}}\winbtrfs\test.exe" create ${{ steps.drive.outputs.drive }}'
- run: Start-Sleep -Seconds 10
timeout-minutes: 1
- name: run winbtrfs supersede tests
if: ${{ ( success() || failure() ) && steps.dummy.conclusion == 'success' }}
timeout-minutes: 1
run: '& "${{github.workspace}}\winbtrfs\test.exe" supersede ${{ steps.drive.outputs.drive }}'
- run: Start-Sleep -Seconds 10
timeout-minutes: 1
- name: run winbtrfs overwrite tests
if: ${{ ( success() || failure() ) && steps.dummy.conclusion == 'success' }}
timeout-minutes: 1
run: '& "${{github.workspace}}\winbtrfs\test.exe" overwrite ${{ steps.drive.outputs.drive }}'
- run: Start-Sleep -Seconds 10
timeout-minutes: 1
- name: run winbtrfs open_id tests
if: ${{ ( success() || failure() ) && steps.dummy.conclusion == 'success' }}
timeout-minutes: 1
run: '& "${{github.workspace}}\winbtrfs\test.exe" open_id ${{ steps.drive.outputs.drive }}'
- run: Start-Sleep -Seconds 10
timeout-minutes: 1
- name: run winbtrfs io tests
if: ${{ ( success() || failure() ) && steps.dummy.conclusion == 'success' }}
timeout-minutes: 1
run: '& "${{github.workspace}}\winbtrfs\test.exe" io ${{ steps.drive.outputs.drive }}'
- run: Start-Sleep -Seconds 10
timeout-minutes: 1
- name: run winbtrfs mmap tests
if: ${{ ( success() || failure() ) && steps.dummy.conclusion == 'success' }}
timeout-minutes: 1
run: '& "${{github.workspace}}\winbtrfs\test.exe" mmap ${{ steps.drive.outputs.drive }}'
- run: Start-Sleep -Seconds 10
timeout-minutes: 1
- name: run winbtrfs rename tests
if: ${{ ( success() || failure() ) && steps.dummy.conclusion == 'success' }}
timeout-minutes: 1
run: '& "${{github.workspace}}\winbtrfs\test.exe" rename ${{ steps.drive.outputs.drive }}'
- run: Start-Sleep -Seconds 10
timeout-minutes: 1
- name: run winbtrfs rename_ex tests
if: ${{ ( success() || failure() ) && steps.dummy.conclusion == 'success' }}
timeout-minutes: 1
run: '& "${{github.workspace}}\winbtrfs\test.exe" rename_ex ${{ steps.drive.outputs.drive }}'
- run: Start-Sleep -Seconds 10
timeout-minutes: 1
- name: run winbtrfs delete tests
if: ${{ ( success() || failure() ) && steps.dummy.conclusion == 'success' }}
timeout-minutes: 1
run: '& "${{github.workspace}}\winbtrfs\test.exe" delete ${{ steps.drive.outputs.drive }}'
- run: Start-Sleep -Seconds 10
timeout-minutes: 1
- name: run winbtrfs delete_ex tests
if: ${{ ( success() || failure() ) && steps.dummy.conclusion == 'success' }}
timeout-minutes: 1
run: '& "${{github.workspace}}\winbtrfs\test.exe" delete_ex ${{ steps.drive.outputs.drive }}'
- run: Start-Sleep -Seconds 10
timeout-minutes: 1
- name: run winbtrfs links tests
if: ${{ ( success() || failure() ) && steps.dummy.conclusion == 'success' }}
timeout-minutes: 1
run: '& "${{github.workspace}}\winbtrfs\test.exe" links ${{ steps.drive.outputs.drive }}'
- run: Start-Sleep -Seconds 10
timeout-minutes: 1
- name: run winbtrfs links_ex tests
if: ${{ ( success() || failure() ) && steps.dummy.conclusion == 'success' }}
timeout-minutes: 1
run: '& "${{github.workspace}}\winbtrfs\test.exe" links_ex ${{ steps.drive.outputs.drive }}'
- run: Start-Sleep -Seconds 10
timeout-minutes: 1
- name: run winbtrfs oplock_i tests
if: ${{ ( success() || failure() ) && steps.dummy.conclusion == 'success' }}
timeout-minutes: 1
run: '& "${{github.workspace}}\winbtrfs\test.exe" oplock_i ${{ steps.drive.outputs.drive }}'
- run: Start-Sleep -Seconds 10
timeout-minutes: 1
- name: run winbtrfs oplock_ii tests
if: ${{ ( success() || failure() ) && steps.dummy.conclusion == 'success' }}
timeout-minutes: 1
run: '& "${{github.workspace}}\winbtrfs\test.exe" oplock_ii ${{ steps.drive.outputs.drive }}'
- run: Start-Sleep -Seconds 10
timeout-minutes: 1
- name: run winbtrfs oplock_batch tests
if: ${{ ( success() || failure() ) && steps.dummy.conclusion == 'success' }}
timeout-minutes: 1
run: '& "${{github.workspace}}\winbtrfs\test.exe" oplock_batch ${{ steps.drive.outputs.drive }}'
- run: Start-Sleep -Seconds 10
timeout-minutes: 1
- name: run winbtrfs oplock_filter tests
if: ${{ ( success() || failure() ) && steps.dummy.conclusion == 'success' }}
timeout-minutes: 1
run: '& "${{github.workspace}}\winbtrfs\test.exe" oplock_filter ${{ steps.drive.outputs.drive }}'
- run: Start-Sleep -Seconds 10
timeout-minutes: 1
- name: run winbtrfs oplock_r tests
if: ${{ ( success() || failure() ) && steps.dummy.conclusion == 'success' }}
timeout-minutes: 1
run: '& "${{github.workspace}}\winbtrfs\test.exe" oplock_r ${{ steps.drive.outputs.drive }}'
- run: Start-Sleep -Seconds 10
timeout-minutes: 1
- name: run winbtrfs oplock_rw tests
if: ${{ ( success() || failure() ) && steps.dummy.conclusion == 'success' }}
timeout-minutes: 1
run: '& "${{github.workspace}}\winbtrfs\test.exe" oplock_rw ${{ steps.drive.outputs.drive }}'
- run: Start-Sleep -Seconds 10
timeout-minutes: 1
- name: run winbtrfs oplock_rh tests
if: ${{ ( success() || failure() ) && steps.dummy.conclusion == 'success' }}
timeout-minutes: 1
run: '& "${{github.workspace}}\winbtrfs\test.exe" oplock_rh ${{ steps.drive.outputs.drive }}'
- run: Start-Sleep -Seconds 10
timeout-minutes: 1
- name: run winbtrfs oplock_rwh tests
if: ${{ ( success() || failure() ) && steps.dummy.conclusion == 'success' }}
timeout-minutes: 1
run: '& "${{github.workspace}}\winbtrfs\test.exe" oplock_rwh ${{ steps.drive.outputs.drive }}'
- run: Start-Sleep -Seconds 10
timeout-minutes: 1
- name: run winbtrfs cs tests
if: ${{ ( success() || failure() ) && steps.dummy.conclusion == 'success' }}
timeout-minutes: 1
run: '& "${{github.workspace}}\winbtrfs\test.exe" cs ${{ steps.drive.outputs.drive }}'
- run: Start-Sleep -Seconds 10
timeout-minutes: 1
- name: run winbtrfs reparse tests
if: ${{ ( success() || failure() ) && steps.dummy.conclusion == 'success' }}
timeout-minutes: 1
run: '& "${{github.workspace}}\winbtrfs\test.exe" reparse ${{ steps.drive.outputs.drive }}'
- run: Start-Sleep -Seconds 10
timeout-minutes: 1
- name: run winbtrfs streams tests
if: ${{ ( success() || failure() ) && steps.dummy.conclusion == 'success' }}
timeout-minutes: 1
run: '& "${{github.workspace}}\winbtrfs\test.exe" streams ${{ steps.drive.outputs.drive }}'
- run: Start-Sleep -Seconds 10
timeout-minutes: 1
#- name: run winbtrfs ea tests
# if: ${{ ( success() || failure() ) && steps.dummy.conclusion == 'success' }}
# run: '& "${{github.workspace}}\winbtrfs\test.exe" ea ${{ steps.drive.outputs.drive }}'
- name: run winbtrfs fileinfo tests
if: ${{ ( success() || failure() ) && steps.dummy.conclusion == 'success' }}
timeout-minutes: 1
run: '& "${{github.workspace}}\winbtrfs\test.exe" fileinfo ${{ steps.drive.outputs.drive }}'
- run: Start-Sleep -Seconds 10
timeout-minutes: 1
- name: run winbtrfs ea tests
if: ${{ ( success() || failure() ) && steps.dummy.conclusion == 'success' }}
timeout-minutes: 1
run: '& "${{github.workspace}}\winbtrfs\test.exe" ea ${{ steps.drive.outputs.drive }}'
#- name: run export zpool
# if: ${{ always() }}
# timeout-minutes: 1
# run: '& "${{ steps.registryzfs.outputs.zfspath }}\zpool.exe" export tank'
# This is a basic workflow to help you get started with Actions
# https://github.blog/changelog/2020-07-06-github-actions-manual-triggers-with-workflow_dispatch/
# test3:
# needs: [build_windows, build_wsl]
# runs-on: windows-latest
# steps:
#
# - uses: actions/checkout@v4
#
#
# - uses: actions/download-artifact@v4
# with:
# name: dev_build_inno
#
## - uses: actions/download-artifact@v4
## with:
## name: build result
#
## - name: get files
## run: Get-ChildItem -Recurse
#
# - name: get diskdrive
# run: wmic diskdrive list
#
## - name: Download
## uses: suisei-cn/[email protected]
## #id: innoinstaller
## with:
## url: 'https://github.com/andrewc12/zfsfiledump/raw/main/testdrives.zip'
## target: ${{github.workspace}}/
##
##
## - name: make disk
## run: |
## Expand-Archive -LiteralPath ${{github.workspace}}/testdrives.zip -DestinationPath D:\
##
## - name: Download
## uses: suisei-cn/[email protected]
## #id: innoinstaller
## with:
## url: 'https://github.com/andrewc12/zfsfiledump/raw/main/scriptname.txt'
## target: ${{github.workspace}}/
##
## - name: make disk
## run: |
## diskpart /s scriptname.txt
##
##
##
## - name: get diskdrive
## run: wmic diskdrive list
##
##
## - name: get files
## run: Get-ChildItem -Recurse
#
#
# - name: get zfsexename
# id: zfsinstaller
# run: |
# $p = Get-ChildItem | Where-Object {$_.Name -like 'OpenZFSOnWindows-*.exe'} | Select-Object -first 1
# echo $p
# $f = (Get-Item $p ).Name
# echo $f
# echo "::set-output name=filename::$($f)"
#
# # https://github.com/MicrosoftDocs/windows-powershell-docs/issues/266
# - name: Import root certificate
# run: |
# $plaintextpwd = 'password1234'
# $pwd = ConvertTo-SecureString -String $plaintextpwd -Force -AsPlainText
# Import-PfxCertificate -FilePath ${{github.workspace}}/contrib/windows/TestCert/test_sign_cert_pass.pfx -CertStoreLocation Cert:\LocalMachine\Root -Password $pwd
# Import-PfxCertificate -FilePath ${{github.workspace}}/contrib/windows/TestCert/test_sign_cert_pass.pfx -CertStoreLocation Cert:\LocalMachine\TrustedPublisher -Password $pwd
#
# - name: debug - echo filename
# run: echo ${{ steps.zfsinstaller.outputs.filename }}
#
## - name: debug - list
## run: ls ${{github.workspace}}\
#
# - name: debug - list
# run: ls ${{github.workspace}}\${{ steps.zfsinstaller.outputs.filename }}
#
# #- name: install zfs
# # run: ${{github.workspace}}\${{ steps.zfsinstaller.outputs.filename }} /NORESTART /ALLUSERS /VERYSILENT /LOG="${{github.workspace}}\InnoSetup-Install.log"
#
# - name: install zfs
# run: 'Start-Process -FilePath "${{github.workspace}}\${{ steps.zfsinstaller.outputs.filename }}" -Wait -ArgumentList "/NORESTART /ALLUSERS /VERYSILENT /LOG=`"${{github.workspace}}\InnoSetup-Install.log`""'
#
## - name: debug - print log
## run: cat "${{github.workspace}}\InnoSetup-Install.log"
##
## - name: Get InstallLocation Registry Value
## id: registryzfs
## run: |
## $value = (Get-ItemProperty -Path "HKLM:\Software\OpenZFS\OpenZFS On Windows")."InstallLocation"
## echo "zfspath=$value" | Out-File -FilePath $Env:GITHUB_OUTPUT -Encoding utf8 -Append
## Write-Host "Found installation location $value"
##
## - name: debug - list
## run: ls "C:\Program Files"
##
## - name: debug - list
## run: ls "${{ steps.registryzfs.outputs.zfspath }}"
#
# - name: debug - get status
# run: '& "${{ steps.registryzfs.outputs.zfspath }}\zpool.exe" status'
#
#
#
#
#
#
#
# - name: Create backing files
# run: |
# $f = new-object System.IO.FileStream ${{github.workspace}}\test01.dat, Create, ReadWrite
# $f.SetLength(1GB)
# $f.Close()
# $f = new-object System.IO.FileStream ${{github.workspace}}\test02.dat, Create, ReadWrite
# $f.SetLength(1GB)
# $f.Close()
# $f = new-object System.IO.FileStream ${{github.workspace}}\test03.dat, Create, ReadWrite
# $f.SetLength(1GB)
# $f.Close()
#
## - run: choco install gsudo
#
# - name: tests/functional/cli_root/zpool_create/zpool_create_001_pos
# run: '& "${{ steps.registryzfs.outputs.zfspath }}\zpool.exe" create -f test01 \\?\${{github.workspace}}\test01.dat'
# - run: Start-Sleep -Seconds 10
#
# - run: '& "${{ steps.registryzfs.outputs.zfspath }}\zpool.exe" status'
# - run: Start-Sleep -Seconds 10
#
# - run: '& "${{ steps.registryzfs.outputs.zfspath }}\zpool.exe" destroy -f test01'
# - run: Start-Sleep -Seconds 10
#
# - run: '& "${{ steps.registryzfs.outputs.zfspath }}\zpool.exe" create -f test02 \\?\${{github.workspace}}\test01.dat \\?\${{github.workspace}}\test02.dat'
# - run: Start-Sleep -Seconds 10
#
# - run: '& "${{ steps.registryzfs.outputs.zfspath }}\zpool.exe" destroy -f test02'
# - run: Start-Sleep -Seconds 10
#
# - run: '& "${{ steps.registryzfs.outputs.zfspath }}\zpool.exe" create -f test03 \\?\${{github.workspace}}\test01.dat \\?\${{github.workspace}}\test02.dat \\?\${{github.workspace}}\test03.dat'
# - run: Start-Sleep -Seconds 10
#
# - run: '& "${{ steps.registryzfs.outputs.zfspath }}\zpool.exe" destroy -f test03'
# - run: Start-Sleep -Seconds 10
#
# - run: '& "${{ steps.registryzfs.outputs.zfspath }}\zpool.exe" create -f test04 mirror \\?\${{github.workspace}}\test01.dat \\?\${{github.workspace}}\test02.dat'
# - run: Start-Sleep -Seconds 10
#
# - run: '& "${{ steps.registryzfs.outputs.zfspath }}\zpool.exe" destroy -f test04'
# - run: Start-Sleep -Seconds 10
#
# - run: '& "${{ steps.registryzfs.outputs.zfspath }}\zpool.exe" create -f test05 mirror \\?\${{github.workspace}}\test01.dat \\?\${{github.workspace}}\test02.dat \\?\${{github.workspace}}\test03.dat'
# - run: Start-Sleep -Seconds 10
#
# - run: '& "${{ steps.registryzfs.outputs.zfspath }}\zpool.exe" destroy -f test05'
# - run: Start-Sleep -Seconds 10
#
# - run: '& "${{ steps.registryzfs.outputs.zfspath }}\zpool.exe" create -f test06 raidz \\?\${{github.workspace}}\test01.dat \\?\${{github.workspace}}\test02.dat \\?\${{github.workspace}}\test03.dat'
# - run: Start-Sleep -Seconds 10
#
# - run: '& "${{ steps.registryzfs.outputs.zfspath }}\zpool.exe" destroy -f test06'
# - run: Start-Sleep -Seconds 10
#
# - run: '& "${{ steps.registryzfs.outputs.zfspath }}\zpool.exe" create -f test07 raidz1 \\?\${{github.workspace}}\test01.dat \\?\${{github.workspace}}\test02.dat \\?\${{github.workspace}}\test03.dat'
# - run: Start-Sleep -Seconds 10
#
# - run: '& "${{ steps.registryzfs.outputs.zfspath }}\zpool.exe" destroy -f test07'
# - run: Start-Sleep -Seconds 10
#
#
#
#
#
#
#
#
#
#
#
#
#
#
#
#
#
#
#
#
#
#
#
#
## - name: Setup WSL
## id: mywslid
## uses: Vampire/[email protected]
## with:
## wsl-shell-user: root
##
## - shell: wsl-bash {0}
## run: |
## id
##
## - shell: wsl-bash {0}
## run: |
## apt update -y
##
## - shell: wsl-bash {0}
## run: |
## apt install libasan5 ksh wget sudo passwd adduser python3 rsync -y
##
## - shell: wsl-bash {0}
## run: |
## #dpkg -i libzfs5_2.1.99-1_amd64.deb
## #dpkg -i libnvpair3_2.1.99-1_amd64.deb
## #dpkg -i libuutil3_2.1.99-1_amd64.deb
## #dpkg -i zfs_2.1.99-1_amd64.deb
## dpkg -i zfs-test_2.1.99-1_amd64.deb
## #dpkg -i python3-pyzfs_2.1.99-1_amd64.deb
##
##
## - shell: wsl-bash {0}
## run: |
## useradd -m -p 4qBD5NWD3IkbU test
##
## - shell: wsl-bash {0}
## run: |
## adduser test sudo
##
## - shell: wsl-bash {0}
## run: |
## ls -la /etc
##
##
## - shell: wsl-bash {0}
## run: |
## chmod ug+rw /etc/sudoers
## - shell: wsl-bash {0}
## run: |
## cat /etc/sudoers
## exit 0
##
## - shell: wsl-bash {0}
## run: |
## echo "test ALL=(ALL) NOPASSWD:ALL" >> /etc/sudoers
## exit 0
##
## - shell: wsl-bash {0}
## run: |
## chmod ug-w /etc/sudoers
##
##
## - shell: wsl-bash {0}
## run: |
## cat /usr/share/zfs/common.sh
##
##
## - shell: wsl-bash {0}
## run: |
## sed -i -e 's#BIN_DIR=/usr/bin#BIN_DIR="/mnt/c/zfs"#' /usr/share/zfs/common.sh
##
##
##
## - shell: wsl-bash {0}
## run: |
## sed -i -e 's#SBIN_DIR=/sbin#SBIN_DIR="/mnt/c/zfs"#' /usr/share/zfs/common.sh
##
##
##
## - shell: wsl-bash {0}
## run: |
## cat /usr/share/zfs/common.sh
##
##
## - shell: wsl-bash {0}
## run: |
## cp /mnt/c/Program\ Files/OpenZFS\ On\ Windows/zpool.exe /mnt/c/Program\ Files/OpenZFS\ On\ Windows/zpool
## cp /mnt/c/Program\ Files/OpenZFS\ On\ Windows/zfs.exe /mnt/c/Program\ Files/OpenZFS\ On\ Windows/zfs
## cp /mnt/c/Program\ Files/OpenZFS\ On\ Windows/zdb.exe /mnt/c/Program\ Files/OpenZFS\ On\ Windows/zdb
## cp /mnt/c/Program\ Files/OpenZFS\ On\ Windows/zstreamdump.exe /mnt/c/Program\ Files/OpenZFS\ On\ Windows/zstreamdump
## mkdir /mnt/c/zfs
## cp /mnt/c/Program\ Files/OpenZFS\ On\ Windows/zpool.exe /mnt/c/zfs/zpool
## cp /mnt/c/Program\ Files/OpenZFS\ On\ Windows/zfs.exe /mnt/c/zfs/zfs
## cp /mnt/c/Program\ Files/OpenZFS\ On\ Windows/zdb.exe /mnt/c/zfs/zdb
## cp /mnt/c/Program\ Files/OpenZFS\ On\ Windows/zstreamdump.exe /mnt/c/zfs/zstreamdump
##
## - name: debug clean
## shell: cmd
## run: DEL /F "${{ steps.mywslid.outputs.wsl-shell-wrapper-path }}"
##
## - uses: Vampire/setup-wsl@v1
## with:
## wsl-shell-user: test
##
## - shell: wsl-bash {0}
## run: id
##
##
##
##
##
## - shell: wsl-bash {0}
## run: id
##
##
##
##
##
## - shell: wsl-bash {0}
## run: |
## export DISKS='physicaldrive2 physicaldrive3 physicaldrive4'
## export RAID_TEST_DISKS='physicaldrive5 physicaldrive6 physicaldrive7 physicaldrive8 physicaldrive9'
## #openzfs_folder + "scripts/zfs-tests.sh"+" -r "+ openzfs_folder +"tests/runfiles/windows-All.run"
## #bash -x /usr/share/zfs/zfs-tests.sh -v || exit 0
## cat /usr/share/zfs/common.sh
## bash -x /usr/share/zfs/zfs-tests.sh -v -r windows-All.run || exit 0
##
##
## - shell: wsl-bash {0}
## run: |
## sudo rsync -avx --no-links /var/tmp/test_results /mnt/d/test_results
## sudo chown -R test:test /mnt/d/test_results
## sudo chmod -R a+r /mnt/d/test_results
## exit 0
##
##
##
## - name: Upload dev build with Inno Setup
## uses: actions/upload-artifact@v4
## with:
## name: testres
## path: d:\test_results\*
##
## - name: create empty backing file
## run: |
## $f = new-object System.IO.FileStream ${{github.workspace}}\test.dat, Create, ReadWrite
## $f.SetLength(1GB)
## $f.Close()
##
## - name: create pool
## run: '& "${{ steps.registryzfs.outputs.zfspath }}\zpool.exe" create tank \\?\${{github.workspace}}\test.dat'
##
## - name: get pool status
## run: '& "${{ steps.registryzfs.outputs.zfspath }}\zpool.exe" status'
##
## - name: get pool mount
## run: '& "${{ steps.registryzfs.outputs.zfspath }}\zfs.exe" mount'
##
## - name: get pool mount
## id: drive # Remember to give an ID if you need the output filename
## run: '& "${{ steps.registryzfs.outputs.zfspath }}\zfs.exe" mount | Select-String -Pattern "^tank +([A-Za-z]:\\)" | % {"::set-output name=drive::$($_.matches.groups[1].value)"}'
##
## - name: echo
## run: echo ${{ steps.drive.outputs.drive }}
##
## - name: get
## run: '& "${{ steps.registryzfs.outputs.zfspath }}\zfs.exe" get all'
##
## - name: get bcd
## run: 'bcdedit'
##
## - name: Download winbtrfs
## uses: suisei-cn/[email protected]
## id: winbtrs # Remember to give an ID if you need the output filename
## with:
## url: "https://github.com/andrewc12/btrfs/releases/download/v1.8/x64-Debug.zip"
## target: ${{github.workspace}}/
##
## - name: extract
## run: Expand-Archive -LiteralPath '${{ steps.winbtrs.outputs.filename }}' -DestinationPath ${{github.workspace}}\winbtrfs
##
## - name: debug - list
## run: ls ${{github.workspace}}\
##
## - name: debug - list
## run: ls ${{github.workspace}}\winbtrfs
##
##
## #- name: run winbtrfs tests
## # run: '& "${{github.workspace}}\winbtrfs\test.exe" ${{ steps.drive.outputs.drive }}'
##
## - name: test dummy status step
## id: dummy
## run: exit 0
##
## - name: debug - dummy status
## run: echo ${{ steps.dummy.conclusion }}
##
##
## #https://github.com/maharmstone/btrfs/blob/master/src/tests/test.cpp#L453
## - name: run winbtrfs create tests
## if: ${{ ( success() || failure() ) && steps.dummy.conclusion == 'success' }}
## run: '& "${{github.workspace}}\winbtrfs\test.exe" create ${{ steps.drive.outputs.drive }}'
##
## - name: run winbtrfs supersede tests
## if: ${{ ( success() || failure() ) && steps.dummy.conclusion == 'success' }}
## run: '& "${{github.workspace}}\winbtrfs\test.exe" supersede ${{ steps.drive.outputs.drive }}'
##
## - name: run winbtrfs overwrite tests
## if: ${{ ( success() || failure() ) && steps.dummy.conclusion == 'success' }}
## run: '& "${{github.workspace}}\winbtrfs\test.exe" overwrite ${{ steps.drive.outputs.drive }}'
##
## - name: run winbtrfs open_id tests
## if: ${{ ( success() || failure() ) && steps.dummy.conclusion == 'success' }}
## run: '& "${{github.workspace}}\winbtrfs\test.exe" open_id ${{ steps.drive.outputs.drive }}'
##
## - name: run winbtrfs io tests
## if: ${{ ( success() || failure() ) && steps.dummy.conclusion == 'success' }}
## run: '& "${{github.workspace}}\winbtrfs\test.exe" io ${{ steps.drive.outputs.drive }}'
##
## - name: run winbtrfs mmap tests
## if: ${{ ( success() || failure() ) && steps.dummy.conclusion == 'success' }}
## run: '& "${{github.workspace}}\winbtrfs\test.exe" mmap ${{ steps.drive.outputs.drive }}'
##
## - name: run winbtrfs rename tests
## if: ${{ ( success() || failure() ) && steps.dummy.conclusion == 'success' }}
## run: '& "${{github.workspace}}\winbtrfs\test.exe" rename ${{ steps.drive.outputs.drive }}'
##
## - name: run winbtrfs rename_ex tests
## if: ${{ ( success() || failure() ) && steps.dummy.conclusion == 'success' }}
## run: '& "${{github.workspace}}\winbtrfs\test.exe" rename_ex ${{ steps.drive.outputs.drive }}'
##
## - name: run winbtrfs delete tests
## if: ${{ ( success() || failure() ) && steps.dummy.conclusion == 'success' }}
## run: '& "${{github.workspace}}\winbtrfs\test.exe" delete ${{ steps.drive.outputs.drive }}'
##
## - name: run winbtrfs delete_ex tests
## if: ${{ ( success() || failure() ) && steps.dummy.conclusion == 'success' }}
## run: '& "${{github.workspace}}\winbtrfs\test.exe" delete_ex ${{ steps.drive.outputs.drive }}'
##
## - name: run winbtrfs links tests
## if: ${{ ( success() || failure() ) && steps.dummy.conclusion == 'success' }}
## run: '& "${{github.workspace}}\winbtrfs\test.exe" links ${{ steps.drive.outputs.drive }}'
##
## - name: run winbtrfs links_ex tests
## if: ${{ ( success() || failure() ) && steps.dummy.conclusion == 'success' }}
## run: '& "${{github.workspace}}\winbtrfs\test.exe" links_ex ${{ steps.drive.outputs.drive }}'
##
## - name: run winbtrfs oplock_i tests
## if: ${{ ( success() || failure() ) && steps.dummy.conclusion == 'success' }}
## run: '& "${{github.workspace}}\winbtrfs\test.exe" oplock_i ${{ steps.drive.outputs.drive }}'
##
## - name: run winbtrfs oplock_ii tests
## if: ${{ ( success() || failure() ) && steps.dummy.conclusion == 'success' }}
## run: '& "${{github.workspace}}\winbtrfs\test.exe" oplock_ii ${{ steps.drive.outputs.drive }}'
##
## - name: run winbtrfs oplock_batch tests
## if: ${{ ( success() || failure() ) && steps.dummy.conclusion == 'success' }}
## run: '& "${{github.workspace}}\winbtrfs\test.exe" oplock_batch ${{ steps.drive.outputs.drive }}'
##
## - name: run winbtrfs oplock_filter tests
## if: ${{ ( success() || failure() ) && steps.dummy.conclusion == 'success' }}
## run: '& "${{github.workspace}}\winbtrfs\test.exe" oplock_filter ${{ steps.drive.outputs.drive }}'
##
## - name: run winbtrfs oplock_r tests
## if: ${{ ( success() || failure() ) && steps.dummy.conclusion == 'success' }}
## run: '& "${{github.workspace}}\winbtrfs\test.exe" oplock_r ${{ steps.drive.outputs.drive }}'
##
## - name: run winbtrfs oplock_rw tests
## if: ${{ ( success() || failure() ) && steps.dummy.conclusion == 'success' }}
## run: '& "${{github.workspace}}\winbtrfs\test.exe" oplock_rw ${{ steps.drive.outputs.drive }}'
##
## - name: run winbtrfs oplock_rh tests
## if: ${{ ( success() || failure() ) && steps.dummy.conclusion == 'success' }}
## run: '& "${{github.workspace}}\winbtrfs\test.exe" oplock_rh ${{ steps.drive.outputs.drive }}'
##
## - name: run winbtrfs oplock_rwh tests
## if: ${{ ( success() || failure() ) && steps.dummy.conclusion == 'success' }}
## run: '& "${{github.workspace}}\winbtrfs\test.exe" oplock_rwh ${{ steps.drive.outputs.drive }}'
##
## - name: run winbtrfs cs tests
## if: ${{ ( success() || failure() ) && steps.dummy.conclusion == 'success' }}
## run: '& "${{github.workspace}}\winbtrfs\test.exe" cs ${{ steps.drive.outputs.drive }}'
##
## - name: run winbtrfs reparse tests
## if: ${{ ( success() || failure() ) && steps.dummy.conclusion == 'success' }}
## run: '& "${{github.workspace}}\winbtrfs\test.exe" reparse ${{ steps.drive.outputs.drive }}'
##
## - name: run winbtrfs streams tests
## if: ${{ ( success() || failure() ) && steps.dummy.conclusion == 'success' }}
## run: '& "${{github.workspace}}\winbtrfs\test.exe" streams ${{ steps.drive.outputs.drive }}'
##
## - name: run winbtrfs ea tests
## if: ${{ ( success() || failure() ) && steps.dummy.conclusion == 'success' }}
## run: |
## echo these crash
## exit 1
## #- name: run winbtrfs ea tests
## # if: ${{ ( success() || failure() ) && steps.dummy.conclusion == 'success' }}
## # run: '& "${{github.workspace}}\winbtrfs\test.exe" ea ${{ steps.drive.outputs.drive }}'
##
## - name: run winbtrfs fileinfo tests
## if: ${{ ( success() || failure() ) && steps.dummy.conclusion == 'success' }}
## run: '& "${{github.workspace}}\winbtrfs\test.exe" fileinfo ${{ steps.drive.outputs.drive }}'
##
##
## #- name: run export zpool
## # if: ${{ always() }}
## # timeout-minutes: 1
## # run: '& "${{ steps.registryzfs.outputs.zfspath }}\zpool.exe" export tank'
##
##
##
##
##
##
## #- name: small test
## # run: winsat disk -drive e
##
##
##
# rebase_info:
# runs-on: ubuntu-latest
#
# steps:
#
# - uses: actions/checkout@v4
# with:
# #repository: openzfsonwindows/openzfs
# fetch-depth: 0
#
# - run: |
# git config --global user.email "[email protected]"
# git config --global user.name "Your Name"
#
# - run: git remote add openzfs https://github.com/openzfs/zfs.git
#
# - run: git fetch --all
#
# - run: git rebase openzfs/master
#
# This is a basic workflow to help you get started with Actions
# https://github.blog/changelog/2020-07-06-github-actions-manual-triggers-with-workflow_dispatch/
test3_winfstest:
needs: [build_windows] #, build_wsl]
timeout-minutes: 30
runs-on: windows-latest
if: ${{ false }}
# if: ${{ inputs.run-failing }}
steps:
- uses: actions/checkout@v4
- uses: actions/download-artifact@v4
with:
name: dev_build_inno
# - uses: actions/download-artifact@v4
# with:
# name: build result
# - name: get files
# run: Get-ChildItem -Recurse
- name: get diskdrive
run: wmic diskdrive list
# - name: Download
# uses: suisei-cn/[email protected]
# #id: innoinstaller
# with:
# url: 'https://github.com/andrewc12/zfsfiledump/raw/main/testdrives.zip'
# target: ${{github.workspace}}/
#
#
# - name: make disk
# run: |
# Expand-Archive -LiteralPath ${{github.workspace}}/testdrives.zip -DestinationPath D:\
#
# - name: Download
# uses: suisei-cn/[email protected]
# #id: innoinstaller
# with:
# url: 'https://github.com/andrewc12/zfsfiledump/raw/main/scriptname.txt'
# target: ${{github.workspace}}/
#
# - name: make disk
# run: |
# diskpart /s scriptname.txt
#
#
#
# - name: get diskdrive
# run: wmic diskdrive list
#
#
# - name: get files
# run: Get-ChildItem -Recurse
- name: get zfsexename
id: zfsinstaller
run: |
$p = Get-ChildItem | Where-Object {$_.Name -like 'OpenZFSOnWindows-*.exe'} | Select-Object -first 1
echo $p
$f = (Get-Item $p ).Name
echo $f
echo "filename=$f" | Out-File -FilePath $Env:GITHUB_OUTPUT -Encoding utf8 -Append
# https://github.com/MicrosoftDocs/windows-powershell-docs/issues/266
- name: Import root certificate
run: |
$plaintextpwd = 'password1234'
$pwd = ConvertTo-SecureString -String $plaintextpwd -Force -AsPlainText
Import-PfxCertificate -FilePath ${{github.workspace}}/contrib/windows/TestCert/test_sign_cert_pass.pfx -CertStoreLocation Cert:\LocalMachine\Root -Password $pwd
Import-PfxCertificate -FilePath ${{github.workspace}}/contrib/windows/TestCert/test_sign_cert_pass.pfx -CertStoreLocation Cert:\LocalMachine\TrustedPublisher -Password $pwd
- name: debug - echo filename
run: echo ${{ steps.zfsinstaller.outputs.filename }}
# - name: debug - list
# run: ls ${{github.workspace}}\
- name: debug - list
run: ls ${{github.workspace}}\${{ steps.zfsinstaller.outputs.filename }}
#- name: install zfs
# run: ${{github.workspace}}\${{ steps.zfsinstaller.outputs.filename }} /NORESTART /ALLUSERS /VERYSILENT /LOG="${{github.workspace}}\InnoSetup-Install.log"
- name: install zfs
run: 'Start-Process -FilePath "${{github.workspace}}\${{ steps.zfsinstaller.outputs.filename }}" -Wait -ArgumentList "/NORESTART /ALLUSERS /VERYSILENT /LOG=`"${{github.workspace}}\InnoSetup-Install.log`""'
# - name: debug - print log
# run: cat "${{github.workspace}}\InnoSetup-Install.log"
- name: Get InstallLocation Registry Value
id: registryzfs
run: |
$value = (Get-ItemProperty -Path "HKLM:\Software\OpenZFS\OpenZFS On Windows")."InstallLocation"
echo "zfspath=$value" | Out-File -FilePath $Env:GITHUB_OUTPUT -Encoding utf8 -Append
Write-Host "Found installation location $value"
# - name: debug - list
# run: ls "C:\Program Files"
#
# - name: debug - list
# run: ls "${{ steps.registryzfs.outputs.zfspath }}"
- name: debug - get status
run: '& "${{ steps.registryzfs.outputs.zfspath }}\zpool.exe" status'
- run: choco install gsudo
- name: Create backing files
run: |
$f = new-object System.IO.FileStream ${{github.workspace}}\test01.dat, Create, ReadWrite
$f.SetLength(1GB)
$f.Close()
- name: create pool
run: '& "${{ steps.registryzfs.outputs.zfspath }}\zpool.exe" create tank \\?\${{github.workspace}}\test01.dat'
- name: get pool status
run: '& "${{ steps.registryzfs.outputs.zfspath }}\zpool.exe" status'
- name: get pool mount
run: '& "${{ steps.registryzfs.outputs.zfspath }}\zfs.exe" mount'
- name: get pool mount
id: drive # Remember to give an ID if you need the output filename
run: '& "${{ steps.registryzfs.outputs.zfspath }}\zfs.exe" mount | Select-String -Pattern "^tank +([A-Za-z]):[/\\]" | % {"drive=$($_.matches.groups[1].value):\"} | Out-File -FilePath $Env:GITHUB_OUTPUT -Encoding utf8 -Append'
- name: get pool mount
id: drivenoslash # Remember to give an ID if you need the output filename
run: '& "${{ steps.registryzfs.outputs.zfspath }}\zfs.exe" mount | Select-String -Pattern "^tank +([A-Za-z]):[/\\]" | % {"drive=$($_.matches.groups[1].value):"} | Out-File -FilePath $Env:GITHUB_OUTPUT -Encoding utf8 -Append'
- name: echo
run: echo ${{ steps.drive.outputs.drive }}
- name: Download winbtrfs
uses: suisei-cn/[email protected]
id: winbtrs # Remember to give an ID if you need the output filename
with:
url: "https://github.com/andrewc12/btrfs/releases/download/v1.8/x64-Debug.zip"
target: ${{github.workspace}}/
- name: extract
run: Expand-Archive -LiteralPath '${{ steps.winbtrs.outputs.filename }}' -DestinationPath ${{github.workspace}}\winbtrfs
- name: debug - list
run: ls ${{github.workspace}}\
- name: debug - list
run: ls ${{github.workspace}}\winbtrfs
#- name: run winbtrfs tests
# run: '& "${{github.workspace}}\winbtrfs\test.exe" ${{ steps.drive.outputs.drive }}'
- name: test dummy status step
id: dummy
run: exit 0
- name: debug - dummy status
run: echo ${{ steps.dummy.conclusion }}
# - name: install winfstest
# run: |
# Copy-Item -Path "${{github.workspace}}\cmd\os\windows\winfstest" -Destination "${{ steps.drive.outputs.drive }}\winfstest" -Recurse
# Copy-Item "${{github.workspace}}\out\build\x64-Debug\cmd\os\windows\winfstest\winfstest.exe" -Destination "${{ steps.drive.outputs.drive }}\winfstest"
- name: Download
uses: suisei-cn/[email protected]
#id: innoinstaller
with:
url: 'https://github.com/andrewc12/zfsfiledump/raw/main/winfstest.zip'
target: ${{github.workspace}}/
- name: extract winfstest
run: |
new-item ${{ steps.drive.outputs.drive }}\winfstest -itemtype directory
Expand-Archive -LiteralPath ${{github.workspace}}/winfstest.zip -DestinationPath ${{ steps.drive.outputs.drive }}\winfstest
#- name: run winbtrfs tests
# run: '& "${{github.workspace}}\winbtrfs\test.exe" ${{ steps.drive.outputs.drive }}'
#https://github.com/maharmstone/btrfs/blob/master/src/tests/test.cpp#L453
- name: run winfstests
timeout-minutes: 1
run: |
${{ steps.drivenoslash.outputs.drive }}
cd ${{ steps.drive.outputs.drive }}\winfstest
set PYTHONPATH=${{ steps.drive.outputs.drive }}\winfstest
python ${{ steps.drive.outputs.drive }}\winfstest\simpletap.py --run
shell: cmd
test4_adstest:
needs: [build_windows] #, build_wsl]
timeout-minutes: 30
# The CMake configure and build commands are platform agnostic and should work equally well on Windows or Mac.
# You can convert this to a matrix build if you need cross-platform coverage.
# See: https://docs.github.com/en/free-pro-team@latest/actions/learn-github-actions/managing-complex-workflows#using-a-build-matrix
runs-on: windows-latest
if: ${{ inputs.run-failing }}
steps:
- uses: actions/checkout@v4
- uses: actions/download-artifact@v4
with:
name: dev_build_inno
# - uses: actions/download-artifact@v4
# with:
# name: build result
# - name: get files
# run: Get-ChildItem -Recurse
- name: get diskdrive
run: wmic diskdrive list
#- uses: suisei-cn/[email protected]
# #id: innoinstaller
# with:
# url: 'https://github.com/andrewc12/zfsfiledump/raw/main/OpenZFSOnWindowsaa'
# target: ${{github.workspace}}/
#- uses: suisei-cn/[email protected]
# #id: innoinstaller
# with:
# url: 'https://github.com/andrewc12/zfsfiledump/raw/main/OpenZFSOnWindowsab'
# target: ${{github.workspace}}/
#- uses: suisei-cn/[email protected]
# #id: innoinstaller
# with:
# url: 'https://github.com/andrewc12/zfsfiledump/raw/main/OpenZFSOnWindowsac'
# target: ${{github.workspace}}/
#- uses: suisei-cn/[email protected]
# #id: innoinstaller
# with:
# url: 'https://github.com/andrewc12/zfsfiledump/raw/main/OpenZFSOnWindowsad'
# target: ${{github.workspace}}/
# - name: Download
# uses: suisei-cn/[email protected]
# #id: innoinstaller
# with:
# url: 'https://github.com/andrewc12/zfsfiledump/raw/main/testdrives.zip'
# target: ${{github.workspace}}/
#
#
# - name: make disk
# run: |
# Expand-Archive -LiteralPath ${{github.workspace}}/testdrives.zip -DestinationPath D:\
#
# - name: Download
# uses: suisei-cn/[email protected]
# #id: innoinstaller
# with:
# url: 'https://github.com/andrewc12/zfsfiledump/raw/main/scriptname.txt'
# target: ${{github.workspace}}/
#
# - name: make disk
# run: |
# diskpart /s scriptname.txt
#
#
#
# - name: get diskdrive
# run: wmic diskdrive list
#
#
# - name: get files
# run: Get-ChildItem -Recurse
#- run: copy /b OpenZFSOnWindowsaa+OpenZFSOnWindowsab+OpenZFSOnWindowsac+OpenZFSOnWindowsad OpenZFSOnWindows-a.exe
# shell: cmd
- name: get zfsexename
id: zfsinstaller
run: |
$p = Get-ChildItem | Where-Object {$_.Name -like 'OpenZFSOnWindows-*.exe'} | Select-Object -first 1
echo $p
$f = (Get-Item $p ).Name
echo $f
echo "filename=$f" | Out-File -FilePath $Env:GITHUB_OUTPUT -Encoding utf8 -Append
- uses: suisei-cn/[email protected]
#id: innoinstaller
with:
url: 'https://github.com/andrewc12/zfsfiledump/raw/main/ads_split.vhd.zst.001'
target: ${{github.workspace}}/
- uses: suisei-cn/[email protected]
#id: innoinstaller
with:
url: 'https://github.com/andrewc12/zfsfiledump/raw/main/ads_split.vhd.zst.002'
target: ${{github.workspace}}/
- uses: suisei-cn/[email protected]
#id: innoinstaller
with:
url: 'https://github.com/andrewc12/zfsfiledump/raw/main/ads_split.vhd.zst.003'
target: ${{github.workspace}}/
- uses: suisei-cn/[email protected]
#id: innoinstaller
with:
url: 'https://github.com/andrewc12/zfsfiledump/raw/main/ads_split.vhd.zst.004'
target: ${{github.workspace}}/
- uses: suisei-cn/[email protected]
#id: innoinstaller
with:
url: 'https://github.com/andrewc12/zfsfiledump/raw/main/ads_split.vhd.zst.005'
target: ${{github.workspace}}/
- uses: suisei-cn/[email protected]
#id: innoinstaller
with:
url: 'https://github.com/andrewc12/zfsfiledump/raw/main/ads_split.vhd.zst.006'
target: ${{github.workspace}}/
- uses: suisei-cn/[email protected]
#id: innoinstaller
with:
url: 'https://github.com/andrewc12/zfsfiledump/raw/main/ads_split.vhd.zst.007'
target: ${{github.workspace}}/
- uses: suisei-cn/[email protected]
#id: innoinstaller
with:
url: 'https://github.com/andrewc12/zfsfiledump/raw/main/ads_split.vhd.zst.008'
target: ${{github.workspace}}/
- run: copy /b ads_split.vhd.zst.001+ads_split.vhd.zst.002+ads_split.vhd.zst.003+ads_split.vhd.zst.004+ads_split.vhd.zst.005+ads_split.vhd.zst.006+ads_split.vhd.zst.007+ads_split.vhd.zst.008 ads_split.vhd.zst
shell: cmd
# https://github.com/MicrosoftDocs/windows-powershell-docs/issues/266
- name: Import root certificate
run: |
$plaintextpwd = 'password1234'
$pwd = ConvertTo-SecureString -String $plaintextpwd -Force -AsPlainText
Import-PfxCertificate -FilePath ${{github.workspace}}/contrib/windows/TestCert/test_sign_cert_pass.pfx -CertStoreLocation Cert:\LocalMachine\Root -Password $pwd
Import-PfxCertificate -FilePath ${{github.workspace}}/contrib/windows/TestCert/test_sign_cert_pass.pfx -CertStoreLocation Cert:\LocalMachine\TrustedPublisher -Password $pwd
- name: debug - echo filename
run: echo ${{ steps.zfsinstaller.outputs.filename }}
# - name: debug - list
# run: ls ${{github.workspace}}\
- name: debug - list
run: ls ${{github.workspace}}\${{ steps.zfsinstaller.outputs.filename }}
#- name: install zfs
# run: ${{github.workspace}}\${{ steps.zfsinstaller.outputs.filename }} /NORESTART /ALLUSERS /VERYSILENT /LOG="${{github.workspace}}\InnoSetup-Install.log"
- name: install zfs
run: 'Start-Process -FilePath "${{github.workspace}}\${{ steps.zfsinstaller.outputs.filename }}" -Wait -ArgumentList "/NORESTART /ALLUSERS /VERYSILENT /LOG=`"${{github.workspace}}\InnoSetup-Install.log`""'
# - name: debug - print log
# run: cat "${{github.workspace}}\InnoSetup-Install.log"
- name: Get InstallLocation Registry Value
id: registryzfs
run: |
$value = (Get-ItemProperty -Path "HKLM:\Software\OpenZFS\OpenZFS On Windows")."InstallLocation"
echo "zfspath=$value" | Out-File -FilePath $Env:GITHUB_OUTPUT -Encoding utf8 -Append
Write-Host "Found installation location $value"
# - name: debug - list
# run: ls "C:\Program Files"
#
# - name: debug - list
# run: ls "${{ steps.registryzfs.outputs.zfspath }}"
- name: debug - get status
run: '& "${{ steps.registryzfs.outputs.zfspath }}\zpool.exe" status'
- name: Create backing files
run: |
$f = new-object System.IO.FileStream ${{github.workspace}}\test01.dat, Create, ReadWrite
$f.SetLength(1GB)
$f.Close()
- name: create pool
run: '& "${{ steps.registryzfs.outputs.zfspath }}\zpool.exe" create tank \\?\${{github.workspace}}\test01.dat'
- name: get pool status
run: '& "${{ steps.registryzfs.outputs.zfspath }}\zpool.exe" status'
- name: get pool mount
run: '& "${{ steps.registryzfs.outputs.zfspath }}\zfs.exe" mount'
- name: get pool mount
id: drive # Remember to give an ID if you need the output filename
run: '& "${{ steps.registryzfs.outputs.zfspath }}\zfs.exe" mount | Select-String -Pattern "^tank +([A-Za-z]):[/\\]" | % {"drive=$($_.matches.groups[1].value):\"} | Out-File -FilePath $Env:GITHUB_OUTPUT -Encoding utf8 -Append'
- name: echo
run: echo ${{ steps.drive.outputs.drive }}
- name: extract
run: zstd -d ${{github.workspace}}\ads_split.vhd.zst
- name: get diskdrive
run: wmic diskdrive list
- name: get diskdrive
run: (Get-PSDrive).Name -match '^[a-z]$'
- name: Create backing files
id: drive2 # Remember to give an ID if you need the output filename
run: |
$mountResult = Mount-DiskImage ${{github.workspace}}\ads_split.vhd -PassThru
$mountResult | Get-Volume
echo "drive=F:"| Out-File -FilePath $Env:GITHUB_OUTPUT -Encoding utf8 -Append
#$mountResult | Get-Volume | % {"drive=$($_.matches.groups[1].value)"} | Out-File -FilePath $Env:GITHUB_OUTPUT -Encoding utf8 -Append
- name: get diskdrive
run: wmic diskdrive list
- name: get diskdrive
run: (Get-PSDrive).Name -match '^[a-z]$'
- name: echo
run: echo ${{ steps.drive2.outputs.drive }}
- name: run tests
run: robocopy ${{ steps.drive2.outputs.drive }}\curtin ${{ steps.drive.outputs.drive }}curtin /E /b /R:0 /W:0
test5_py:
needs: [build_windows] #, build_wsl]
timeout-minutes: 30
# The CMake configure and build commands are platform agnostic and should work equally well on Windows or Mac.
# You can convert this to a matrix build if you need cross-platform coverage.
# See: https://docs.github.com/en/free-pro-team@latest/actions/learn-github-actions/managing-complex-workflows#using-a-build-matrix
runs-on: windows-latest
steps:
- uses: actions/checkout@v4
- uses: actions/download-artifact@v4
with:
name: dev_build_inno
# - uses: actions/download-artifact@v4
# with:
# name: build result
# - name: get files
# run: Get-ChildItem -Recurse
- name: get diskdrive
run: wmic diskdrive list
#- uses: suisei-cn/[email protected]
# #id: innoinstaller
# with:
# url: 'https://github.com/andrewc12/zfsfiledump/raw/main/OpenZFSOnWindowsaa'
# target: ${{github.workspace}}/
#- uses: suisei-cn/[email protected]
# #id: innoinstaller
# with:
# url: 'https://github.com/andrewc12/zfsfiledump/raw/main/OpenZFSOnWindowsab'
# target: ${{github.workspace}}/
#- uses: suisei-cn/[email protected]
# #id: innoinstaller
# with:
# url: 'https://github.com/andrewc12/zfsfiledump/raw/main/OpenZFSOnWindowsac'
# target: ${{github.workspace}}/
#- uses: suisei-cn/[email protected]
# #id: innoinstaller
# with:
# url: 'https://github.com/andrewc12/zfsfiledump/raw/main/OpenZFSOnWindowsad'
# target: ${{github.workspace}}/
# - name: Download
# uses: suisei-cn/[email protected]
# #id: innoinstaller
# with:
# url: 'https://github.com/andrewc12/zfsfiledump/raw/main/testdrives.zip'
# target: ${{github.workspace}}/
#
#
# - name: make disk
# run: |
# Expand-Archive -LiteralPath ${{github.workspace}}/testdrives.zip -DestinationPath D:\
#
# - name: Download
# uses: suisei-cn/[email protected]
# #id: innoinstaller
# with:
# url: 'https://github.com/andrewc12/zfsfiledump/raw/main/scriptname.txt'
# target: ${{github.workspace}}/
#
# - name: make disk
# run: |
# diskpart /s scriptname.txt
#
#
#
# - name: get diskdrive
# run: wmic diskdrive list
#
#
# - name: get files
# run: Get-ChildItem -Recurse
#- run: copy /b OpenZFSOnWindowsaa+OpenZFSOnWindowsab+OpenZFSOnWindowsac+OpenZFSOnWindowsad OpenZFSOnWindows-a.exe
# shell: cmd
- name: get zfsexename
id: zfsinstaller
run: |
$p = Get-ChildItem | Where-Object {$_.Name -like 'OpenZFSOnWindows-*.exe'} | Select-Object -first 1
echo $p
$f = (Get-Item $p ).Name
echo $f
echo "filename=$f" | Out-File -FilePath $Env:GITHUB_OUTPUT -Encoding utf8 -Append
# https://github.com/MicrosoftDocs/windows-powershell-docs/issues/266
- name: Import root certificate
run: |
$plaintextpwd = 'password1234'
$pwd = ConvertTo-SecureString -String $plaintextpwd -Force -AsPlainText
Import-PfxCertificate -FilePath ${{github.workspace}}/contrib/windows/TestCert/test_sign_cert_pass.pfx -CertStoreLocation Cert:\LocalMachine\Root -Password $pwd
Import-PfxCertificate -FilePath ${{github.workspace}}/contrib/windows/TestCert/test_sign_cert_pass.pfx -CertStoreLocation Cert:\LocalMachine\TrustedPublisher -Password $pwd
- name: debug - echo filename
run: echo ${{ steps.zfsinstaller.outputs.filename }}
# - name: debug - list
# run: ls ${{github.workspace}}\
- name: debug - list
run: ls ${{github.workspace}}\${{ steps.zfsinstaller.outputs.filename }}
#- name: install zfs
# run: ${{github.workspace}}\${{ steps.zfsinstaller.outputs.filename }} /NORESTART /ALLUSERS /VERYSILENT /LOG="${{github.workspace}}\InnoSetup-Install.log"
- name: install zfs
run: 'Start-Process -FilePath "${{github.workspace}}\${{ steps.zfsinstaller.outputs.filename }}" -Wait -ArgumentList "/NORESTART /ALLUSERS /VERYSILENT /LOG=`"${{github.workspace}}\InnoSetup-Install.log`""'
# - name: debug - print log
# run: cat "${{github.workspace}}\InnoSetup-Install.log"
- name: Get InstallLocation Registry Value
id: registryzfs
run: |
$value = (Get-ItemProperty -Path "HKLM:\Software\OpenZFS\OpenZFS On Windows")."InstallLocation"
echo "zfspath=$value" | Out-File -FilePath $Env:GITHUB_OUTPUT -Encoding utf8 -Append
Write-Host "Found installation location $value"
# - name: debug - list
# run: ls "C:\Program Files"
#
# - name: debug - list
# run: ls "${{ steps.registryzfs.outputs.zfspath }}"
- name: debug - get status
run: '& "${{ steps.registryzfs.outputs.zfspath }}\zpool.exe" status'
- name: test
run: 'python.exe -u "${{github.workspace}}\contrib\windows\tests\tests.py" --path ${{github.workspace}}\'
# This is a basic workflow to help you get started with Actions
# https://github.blog/changelog/2020-07-06-github-actions-manual-triggers-with-workflow_dispatch/
test6_pywinbtrfs:
needs: [build_windows] #, build_wsl]
timeout-minutes: 30
runs-on: windows-latest
# if: ${{ inputs.run-failing }}
steps:
- uses: actions/checkout@v4
- uses: actions/download-artifact@v4
with:
name: dev_build_inno
# - uses: actions/download-artifact@v4
# with:
# name: build result
# - name: get files
# run: Get-ChildItem -Recurse
- name: get diskdrive
run: wmic diskdrive list
# - name: Download
# uses: suisei-cn/[email protected]
# #id: innoinstaller
# with:
# url: 'https://github.com/andrewc12/zfsfiledump/raw/main/testdrives.zip'
# target: ${{github.workspace}}/
#
#
# - name: make disk
# run: |
# Expand-Archive -LiteralPath ${{github.workspace}}/testdrives.zip -DestinationPath D:\
#
# - name: Download
# uses: suisei-cn/[email protected]
# #id: innoinstaller
# with:
# url: 'https://github.com/andrewc12/zfsfiledump/raw/main/scriptname.txt'
# target: ${{github.workspace}}/
#
# - name: make disk
# run: |
# diskpart /s scriptname.txt
#
#
#
# - name: get diskdrive
# run: wmic diskdrive list
#
#
# - name: get files
# run: Get-ChildItem -Recurse
- name: get zfsexename
id: zfsinstaller
run: |
$p = Get-ChildItem | Where-Object {$_.Name -like 'OpenZFSOnWindows-*.exe'} | Select-Object -first 1
echo $p
$f = (Get-Item $p ).Name
echo $f
echo "filename=$f" | Out-File -FilePath $Env:GITHUB_OUTPUT -Encoding utf8 -Append
# https://github.com/MicrosoftDocs/windows-powershell-docs/issues/266
- name: Import root certificate
run: |
$plaintextpwd = 'password1234'
$pwd = ConvertTo-SecureString -String $plaintextpwd -Force -AsPlainText
Import-PfxCertificate -FilePath ${{github.workspace}}/contrib/windows/TestCert/test_sign_cert_pass.pfx -CertStoreLocation Cert:\LocalMachine\Root -Password $pwd
Import-PfxCertificate -FilePath ${{github.workspace}}/contrib/windows/TestCert/test_sign_cert_pass.pfx -CertStoreLocation Cert:\LocalMachine\TrustedPublisher -Password $pwd
- name: debug - echo filename
run: echo ${{ steps.zfsinstaller.outputs.filename }}
# - name: debug - list
# run: ls ${{github.workspace}}\
- name: debug - list
run: ls ${{github.workspace}}\${{ steps.zfsinstaller.outputs.filename }}
#- name: install zfs
# run: ${{github.workspace}}\${{ steps.zfsinstaller.outputs.filename }} /NORESTART /ALLUSERS /VERYSILENT /LOG="${{github.workspace}}\InnoSetup-Install.log"
- name: install zfs
run: 'Start-Process -FilePath "${{github.workspace}}\${{ steps.zfsinstaller.outputs.filename }}" -Wait -ArgumentList "/NORESTART /ALLUSERS /VERYSILENT /LOG=`"${{github.workspace}}\InnoSetup-Install.log`""'
# - name: debug - print log
# run: cat "${{github.workspace}}\InnoSetup-Install.log"
- name: Get InstallLocation Registry Value
id: registryzfs
run: |
$value = (Get-ItemProperty -Path "HKLM:\Software\OpenZFS\OpenZFS On Windows")."InstallLocation"
echo "zfspath=$value" | Out-File -FilePath $Env:GITHUB_OUTPUT -Encoding utf8 -Append
Write-Host "Found installation location $value"
# - name: debug - list
# run: ls "C:\Program Files"
#
# - name: debug - list
# run: ls "${{ steps.registryzfs.outputs.zfspath }}"
- name: debug - get status
run: '& "${{ steps.registryzfs.outputs.zfspath }}\zpool.exe" status'
- name: Download winbtrfs
uses: suisei-cn/[email protected]
id: winbtrs # Remember to give an ID if you need the output filename
with:
url: "https://github.com/andrewc12/btrfs/releases/download/v1.8/x64-Debug.zip"
target: ${{github.workspace}}/
- name: extract
run: Expand-Archive -LiteralPath '${{ steps.winbtrs.outputs.filename }}' -DestinationPath ${{github.workspace}}\winbtrfs
- name: debug - list
run: ls ${{github.workspace}}\
- name: debug - list
run: ls ${{github.workspace}}\winbtrfs
- name: test
run: 'python.exe -u "${{github.workspace}}\contrib\windows\tests\btrfstests.py" -path ${{github.workspace}}\'
- name: Adding markdown
run: |
cat ${{github.workspace}}\winbtrfs.log | Out-File $env:GITHUB_STEP_SUMMARY
- name: Upload a Build Artifact
uses: actions/upload-artifact@v4
with:
name: build_output_winbtrfs.log
path: ${{github.workspace}}/winbtrfs.log
test7_pywinfstest:
needs: [build_windows] #, build_wsl]
timeout-minutes: 30
runs-on: windows-latest
# if: ${{ inputs.run-failing }}
steps:
- uses: actions/checkout@v4
- uses: actions/download-artifact@v4
with:
name: dev_build_inno
# - uses: actions/download-artifact@v4
# with:
# name: build result
# - name: get files
# run: Get-ChildItem -Recurse
- name: get diskdrive
run: wmic diskdrive list
# - name: Download
# uses: suisei-cn/[email protected]
# #id: innoinstaller
# with:
# url: 'https://github.com/andrewc12/zfsfiledump/raw/main/testdrives.zip'
# target: ${{github.workspace}}/
#
#
# - name: make disk
# run: |
# Expand-Archive -LiteralPath ${{github.workspace}}/testdrives.zip -DestinationPath D:\
#
# - name: Download
# uses: suisei-cn/[email protected]
# #id: innoinstaller
# with:
# url: 'https://github.com/andrewc12/zfsfiledump/raw/main/scriptname.txt'
# target: ${{github.workspace}}/
#
# - name: make disk
# run: |
# diskpart /s scriptname.txt
#
#
#
# - name: get diskdrive
# run: wmic diskdrive list
#
#
# - name: get files
# run: Get-ChildItem -Recurse
- name: get zfsexename
id: zfsinstaller
run: |
$p = Get-ChildItem | Where-Object {$_.Name -like 'OpenZFSOnWindows-*.exe'} | Select-Object -first 1
echo $p
$f = (Get-Item $p ).Name
echo $f
echo "filename=$f" | Out-File -FilePath $Env:GITHUB_OUTPUT -Encoding utf8 -Append
# https://github.com/MicrosoftDocs/windows-powershell-docs/issues/266
- name: Import root certificate
run: |
$plaintextpwd = 'password1234'
$pwd = ConvertTo-SecureString -String $plaintextpwd -Force -AsPlainText
Import-PfxCertificate -FilePath ${{github.workspace}}/contrib/windows/TestCert/test_sign_cert_pass.pfx -CertStoreLocation Cert:\LocalMachine\Root -Password $pwd
Import-PfxCertificate -FilePath ${{github.workspace}}/contrib/windows/TestCert/test_sign_cert_pass.pfx -CertStoreLocation Cert:\LocalMachine\TrustedPublisher -Password $pwd
- name: debug - echo filename
run: echo ${{ steps.zfsinstaller.outputs.filename }}
# - name: debug - list
# run: ls ${{github.workspace}}\
- name: debug - list
run: ls ${{github.workspace}}\${{ steps.zfsinstaller.outputs.filename }}
#- name: install zfs
# run: ${{github.workspace}}\${{ steps.zfsinstaller.outputs.filename }} /NORESTART /ALLUSERS /VERYSILENT /LOG="${{github.workspace}}\InnoSetup-Install.log"
- name: install zfs
run: 'Start-Process -FilePath "${{github.workspace}}\${{ steps.zfsinstaller.outputs.filename }}" -Wait -ArgumentList "/NORESTART /ALLUSERS /VERYSILENT /LOG=`"${{github.workspace}}\InnoSetup-Install.log`""'
# - name: debug - print log
# run: cat "${{github.workspace}}\InnoSetup-Install.log"
- name: Get InstallLocation Registry Value
id: registryzfs
run: |
$value = (Get-ItemProperty -Path "HKLM:\Software\OpenZFS\OpenZFS On Windows")."InstallLocation"
echo "zfspath=$value" | Out-File -FilePath $Env:GITHUB_OUTPUT -Encoding utf8 -Append
Write-Host "Found installation location $value"
# - name: debug - list
# run: ls "C:\Program Files"
#
# - name: debug - list
# run: ls "${{ steps.registryzfs.outputs.zfspath }}"
- name: debug - get status
run: '& "${{ steps.registryzfs.outputs.zfspath }}\zpool.exe" status'
- run: choco install gsudo
- name: Create backing files
run: |
$f = new-object System.IO.FileStream ${{github.workspace}}\test01.dat, Create, ReadWrite
$f.SetLength(1GB)
$f.Close()
- name: create pool
run: '& "${{ steps.registryzfs.outputs.zfspath }}\zpool.exe" create tank \\?\${{github.workspace}}\test01.dat'
- name: get pool status
run: '& "${{ steps.registryzfs.outputs.zfspath }}\zpool.exe" status'
- name: get pool mount
run: '& "${{ steps.registryzfs.outputs.zfspath }}\zfs.exe" mount'
- name: get pool mount
id: drive # Remember to give an ID if you need the output filename
run: '& "${{ steps.registryzfs.outputs.zfspath }}\zfs.exe" mount | Select-String -Pattern "^tank +([A-Za-z]):[/\\]" | % {"drive=$($_.matches.groups[1].value):\"} | Out-File -FilePath $Env:GITHUB_OUTPUT -Encoding utf8 -Append'
- name: get pool mount
id: drivenoslash # Remember to give an ID if you need the output filename
run: '& "${{ steps.registryzfs.outputs.zfspath }}\zfs.exe" mount | Select-String -Pattern "^tank +([A-Za-z]):[/\\]" | % {"drive=$($_.matches.groups[1].value):"} | Out-File -FilePath $Env:GITHUB_OUTPUT -Encoding utf8 -Append'
- name: echo
run: echo ${{ steps.drive.outputs.drive }}
# - name: install winfstest
# run: |
# Copy-Item -Path "${{github.workspace}}\cmd\os\windows\winfstest" -Destination "${{ steps.drive.outputs.drive }}\winfstest" -Recurse
# Copy-Item "${{github.workspace}}\out\build\x64-Debug\cmd\os\windows\winfstest\winfstest.exe" -Destination "${{ steps.drive.outputs.drive }}\winfstest"
- name: Download
uses: suisei-cn/[email protected]
#id: innoinstaller
with:
url: 'https://github.com/andrewc12/zfsfiledump/raw/main/winfstest.zip'
target: ${{github.workspace}}/
- name: extract winfstest
run: |
new-item ${{ steps.drive.outputs.drive }}\winfstest -itemtype directory
Expand-Archive -LiteralPath ${{github.workspace}}/winfstest.zip -DestinationPath ${{ steps.drive.outputs.drive }}\winfstest
#- name: run winbtrfs tests
# run: '& "${{github.workspace}}\winbtrfs\test.exe" ${{ steps.drive.outputs.drive }}'
- name: test
run: |
${{ steps.drivenoslash.outputs.drive }}
cd ${{ steps.drive.outputs.drive }}\winfstest
$env:PYTHONPATH='${{ steps.drive.outputs.drive }}\winfstest'
python.exe -u "${{github.workspace}}\contrib\windows\tests\winfstests.py" -path ${{github.workspace}}\
- name: Adding markdown
run: |
cat ${{github.workspace}}\winfs.log | Out-File $env:GITHUB_STEP_SUMMARY
- name: Upload a Build Artifact
uses: actions/upload-artifact@v4
with:
name: build_output_winfs.log
path: ${{github.workspace}}/winfs.log
# This is a basic workflow to help you get started with Actions
# https://github.blog/changelog/2020-07-06-github-actions-manual-triggers-with-workflow_dispatch/
test8_pyifstest:
needs: [build_windows] #, build_wsl]
timeout-minutes: 30
runs-on: windows-latest
# if: ${{ inputs.run-failing }}
steps:
- uses: actions/checkout@v4
- uses: actions/download-artifact@v4
with:
name: dev_build_inno
# - uses: actions/download-artifact@v4
# with:
# name: build result
# - name: get files
# run: Get-ChildItem -Recurse
- name: get diskdrive
run: wmic diskdrive list
# - name: Download
# uses: suisei-cn/[email protected]
# #id: innoinstaller
# with:
# url: 'https://github.com/andrewc12/zfsfiledump/raw/main/testdrives.zip'
# target: ${{github.workspace}}/
#
#
# - name: make disk
# run: |
# Expand-Archive -LiteralPath ${{github.workspace}}/testdrives.zip -DestinationPath D:\
#
# - name: Download
# uses: suisei-cn/[email protected]
# #id: innoinstaller
# with:
# url: 'https://github.com/andrewc12/zfsfiledump/raw/main/scriptname.txt'
# target: ${{github.workspace}}/
#
# - name: make disk
# run: |
# diskpart /s scriptname.txt
#
#
#
# - name: get diskdrive
# run: wmic diskdrive list
#
#
# - name: get files
# run: Get-ChildItem -Recurse
- name: get zfsexename
id: zfsinstaller
run: |
$p = Get-ChildItem | Where-Object {$_.Name -like 'OpenZFSOnWindows-*.exe'} | Select-Object -first 1
echo $p
$f = (Get-Item $p ).Name
echo $f
echo "filename=$f" | Out-File -FilePath $Env:GITHUB_OUTPUT -Encoding utf8 -Append
# https://github.com/MicrosoftDocs/windows-powershell-docs/issues/266
- name: Import root certificate
run: |
$plaintextpwd = 'password1234'
$pwd = ConvertTo-SecureString -String $plaintextpwd -Force -AsPlainText
Import-PfxCertificate -FilePath ${{github.workspace}}/contrib/windows/TestCert/test_sign_cert_pass.pfx -CertStoreLocation Cert:\LocalMachine\Root -Password $pwd
Import-PfxCertificate -FilePath ${{github.workspace}}/contrib/windows/TestCert/test_sign_cert_pass.pfx -CertStoreLocation Cert:\LocalMachine\TrustedPublisher -Password $pwd
- name: debug - echo filename
run: echo ${{ steps.zfsinstaller.outputs.filename }}
# - name: debug - list
# run: ls ${{github.workspace}}\
- name: debug - list
run: ls ${{github.workspace}}\${{ steps.zfsinstaller.outputs.filename }}
#- name: install zfs
# run: ${{github.workspace}}\${{ steps.zfsinstaller.outputs.filename }} /NORESTART /ALLUSERS /VERYSILENT /LOG="${{github.workspace}}\InnoSetup-Install.log"
- name: install zfs
run: 'Start-Process -FilePath "${{github.workspace}}\${{ steps.zfsinstaller.outputs.filename }}" -Wait -ArgumentList "/NORESTART /ALLUSERS /VERYSILENT /LOG=`"${{github.workspace}}\InnoSetup-Install.log`""'
# - name: debug - print log
# run: cat "${{github.workspace}}\InnoSetup-Install.log"
- name: Get InstallLocation Registry Value
id: registryzfs
run: |
$value = (Get-ItemProperty -Path "HKLM:\Software\OpenZFS\OpenZFS On Windows")."InstallLocation"
echo "zfspath=$value" | Out-File -FilePath $Env:GITHUB_OUTPUT -Encoding utf8 -Append
Write-Host "Found installation location $value"
# - name: debug - list
# run: ls "C:\Program Files"
#
# - name: debug - list
# run: ls "${{ steps.registryzfs.outputs.zfspath }}"
- name: debug - get status
run: '& "${{ steps.registryzfs.outputs.zfspath }}\zpool.exe" status'
- name: Download ifstest
uses: suisei-cn/[email protected]
id: winbtrs # Remember to give an ID if you need the output filename
with:
url: "https://github.com/andrewc12/ifstest/raw/main/ifs_test_kit.zip"
target: ${{github.workspace}}/
- name: extract
run: Expand-Archive -LiteralPath '${{ steps.winbtrs.outputs.filename }}' -DestinationPath ${{github.workspace}}\ifs_test_kit
- name: debug - list
run: ls ${{github.workspace}}\
- name: debug - list
run: ls ${{github.workspace}}\ifs_test_kit
- name: test
run: 'python.exe -u "${{github.workspace}}\contrib\windows\tests\ifstest.py" -path ${{github.workspace}}\'
- name: Adding markdown
run: |
cat ${{github.workspace}}\ifstest.log | Out-File $env:GITHUB_STEP_SUMMARY
- name: Upload a Build Artifact
uses: actions/upload-artifact@v4
with:
name: build_output_ifstest.log
path: ${{github.workspace}}/ifstest.log
- name: Upload a Build Artifact
uses: actions/upload-artifact@v4
with:
name: build_output_TestResults.log
path: ${{github.workspace}}/TestResults.log
test9_regression_test:
needs: [build_windows]
timeout-minutes: 30
runs-on: windows-latest
steps:
- uses: actions/checkout@v4
- uses: actions/download-artifact@v4
with:
name: dev_build_inno
- name: get zfsexename
id: zfsinstaller
run: |
$p = Get-ChildItem | Where-Object {$_.Name -like 'OpenZFSOnWindows-*.exe'} | Select-Object -first 1
echo $p
$f = (Get-Item $p ).Name
echo $f
echo "filename=$f" | Out-File -FilePath $Env:GITHUB_OUTPUT -Encoding utf8 -Append
# https://github.com/MicrosoftDocs/windows-powershell-docs/issues/266
- name: Import root certificate
run: |
$plaintextpwd = 'password1234'
$pwd = ConvertTo-SecureString -String $plaintextpwd -Force -AsPlainText
Import-PfxCertificate -FilePath ${{github.workspace}}/contrib/windows/TestCert/test_sign_cert_pass.pfx -CertStoreLocation Cert:\LocalMachine\Root -Password $pwd
Import-PfxCertificate -FilePath ${{github.workspace}}/contrib/windows/TestCert/test_sign_cert_pass.pfx -CertStoreLocation Cert:\LocalMachine\TrustedPublisher -Password $pwd
- name: install zfs
run: 'Start-Process -FilePath "${{github.workspace}}\${{ steps.zfsinstaller.outputs.filename }}" -Wait -ArgumentList "/NORESTART /ALLUSERS /VERYSILENT /LOG=`"${{github.workspace}}\InnoSetup-Install.log`""'
- name: Get InstallLocation Registry Value
id: registryzfs
run: |
$value = (Get-ItemProperty -Path "HKLM:\Software\OpenZFS\OpenZFS On Windows")."InstallLocation"
echo "zfspath=$value" | Out-File -FilePath $Env:GITHUB_OUTPUT -Encoding utf8 -Append
Write-Host "Found installation location $value"
- name: test
run: 'python.exe -u "${{github.workspace}}\contrib\windows\tests\regression.py" --path "${{github.workspace}}" --zfspath "${{ steps.registryzfs.outputs.zfspath }}"'