diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 7770930c..6b58dfa7 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -15,26 +15,27 @@ jobs: runs-on: windows-2019 steps: - uses: actions/checkout@v4 - - name: install dependencies + - name: Install dependencies env: LEATHERMAN_VERSION: 1.11.0 CPP_PCP_CLIENT_VERSION: 1.7.6 CPPHOCON_VERSION: 0.2.0 GITHUB_TOKEN: ${{ github.token }} + shell: pwsh run: | - # The mingw 5.2 package requires chocolatey 1.4, so uninstall 2.x + # The mingw 5.2 package requires chocolatey 1.4, so delete 2.x Remove-Item -Path C:\ProgramData\chocolatey\ -Recurse -Force - # Install choco 1.4 + # Reinstall choco 1.4 in the same place $env:chocolateyVersion = '1.4.0' [System.Net.ServicePointManager]::SecurityProtocol = 3072 iex ((New-Object System.Net.WebClient).DownloadString('https://community.chocolatey.org/install.ps1')) $env:PATH = "$env:PATH;C:\ProgramData\chocolatey\bin" - # Need to reinstall 7zip + # This is only needed because we deleted choco 2.x choco install -y 7zip.install - # And our dependencies + # And our build dependencies choco install -y mingw-w64 -Version 5.2.0 -source https://www.myget.org/F/puppetlabs choco install -y cmake -Version 3.2.2 -source https://www.myget.org/F/puppetlabs choco install -y gettext -Version 0.19.6 -source https://www.myget.org/F/puppetlabs @@ -43,8 +44,9 @@ jobs: choco install -y pl-openssl-x64 -Version 1.0.24.1 -source https://www.myget.org/F/puppetlabs choco install -y pl-curl-x64 -Version 7.46.0.1 -source https://www.myget.org/F/puppetlabs choco install -y pl-zlib-x64 -Version 1.2.8.1 -source https://www.myget.org/F/puppetlabs - #choco install -y pester -Version 4.10.1 + choco install -y pester -Version 4.10.1 + # And our library dependencies gh release download -R puppetlabs/leatherman $env:LEATHERMAN_VERSION --pattern "leatherman.7z" 7z.exe x leatherman.7z -oC:\tools | FIND /V "ing " @@ -53,15 +55,27 @@ jobs: gh release download -R puppetlabs/cpp-hocon $env:CPPHOCON_VERSION --pattern "cpp-hocon.7z" 7z.exe x cpp-hocon.7z -oC:\tools | FIND /V "ing " + - name: Build + shell: pwsh + run: | + # Include Ruby and Powershell for unit tests + # Intentionally excluding Git (due to conflicting sh.exe) and + # OpenSSL as previously we were linking against the wrong OpenSSL + # DLLs. + $env:PATH=C:\tools\pl-build-tools\bin;C:\tools\mingw64\bin;C:\ProgramData\chocolatey\bin;C:\hostedtoolcache\windows\Ruby\2.5.9\x64\bin;C:\Program Files\7-Zip;C:\Windows\system32;C:\Windows;C:\Windows\System32\WindowsPowerShell\v1.0 + cmake -G "MinGW Makefiles" -DCMAKE_TOOLCHAIN_FILE="C:\tools\pl-build-tools\pl-build-toolchain.cmake" -DCMAKE_PREFIX_PATH="C:\tools\leatherman;C:\tools\cpp-pcp-client;C:\tools\cpp-hocon" -DCMAKE_INSTALL_PREFIX=C:\tools -DBOOST_STATIC=ON . + mingw32-make install + - name: Test + shell: pwsh + run: | + cp C:\Tools\pl-build-tools\bin\libeay32.dll .\bin + cp C:\Tools\pl-build-tools\bin\ssleay32.dll .\bin + ctest -V 2>&1 | %{ if ($_ -is [System.Management.Automation.ErrorRecord]) { $_ | c++filt } else { $_ } } + type ./acceptance/files/complex-args.json | ./exe/PowershellShim.ps1 ./acceptance/files/complex-task.ps1 + Invoke-Pester -EnableExit - # Minimize environment polution; previously we were linking against the wrong OpenSSL DLLs. - Remove-Item -Path "C:\Program Files\OpenSSL" -Recurse -Force - - Write-Host $env:PATH - $env:ORIGPATH = $env:PATH - # Include Ruby and Powershell for unit tests. - $env:PATH = "C:\tools\pl-build-tools\bin;C:\tools\mingw64\bin;C:\Program Files\PowerShell\7;C:\hostedtoolcache\windows\stack\2.13.1\x64;C:\Program Files\dotnet;C:\hostedtoolcache\windows\Ruby\2.5.9\x64\bin;C:\Windows\system32;C:\Windows;C:\Windows\System32\Wbem;C:\Windows\System32\WindowsPowerShell\v1.0\;C:\ProgramData\Chocolatey\bin;C:\Program Files\CMake\bin;C:\Users\runneradmin\.dotnet\tools;C:\Users\runneradmin\.cargo\bin;C:\Users\runneradmin\AppData\Local\Microsoft\WindowsApps" - - cmake -G "MinGW Makefiles" -DCMAKE_TOOLCHAIN_FILE="C:\tools\pl-build-tools\pl-build-toolchain.cmake" -DCMAKE_PREFIX_PATH="C:\tools\leatherman;C:\tools\cpp-pcp-client;C:\tools\cpp-hocon" -DCMAKE_INSTALL_PREFIX=C:\tools -DBOOST_STATIC=ON . - mingw32-make install - shell: pwsh +#Remove-Item -Path "C:\Program Files\OpenSSL" -Recurse -Force +#Write-Host $env:PATH +#$env:ORIGPATH = $env:PATH +#$env:PATH = "C:\tools\pl-build-tools\bin;C:\tools\mingw64\bin;C:\Program Files\PowerShell\7;C:\hostedtoolcache\windows\stack\2.13.1\x64;C:\Program Files\dotnet;C:\hostedtoolcache\windows\Ruby\2.5.9\x64\bin;C:\Windows\system32;C:\Windows;C:\Windows\System32\Wbem;C:\Windows\System32\WindowsPowerShell\v1.0\;C:\ProgramData\Chocolatey\bin;C:\Program Files\CMake\bin;C:\Users\runneradmin\.dotnet\tools;C:\Users\runneradmin\.cargo\bin;C:\Users\runneradmin\AppData\Local\Microsoft\WindowsApps" +#shell: pwsh