Skip to content

fix(ci): use FireDaemon OpenSSL zip on Windows#5321

Merged
matejk merged 1 commit intomainfrom
fix-ci-windows-openssl
Apr 17, 2026
Merged

fix(ci): use FireDaemon OpenSSL zip on Windows#5321
matejk merged 1 commit intomainfrom
fix-ci-windows-openssl

Conversation

@matejk
Copy link
Copy Markdown
Contributor

@matejk matejk commented Apr 16, 2026

Summary

  • Replace the winget-based ShiningLight install with FireDaemon's portable OpenSSL zip.
  • Install into the job's RUNNER_TEMP sandbox so every run gets a clean copy.
  • The zip includes the legacy provider (ossl-modules/legacy.dll) needed for DES-ECB and PKCS12 RC2/3DES PBE tests.

Why

The previous winget step broke because:

FireDaemon's distribution sidesteps all of this:

  • Portable zip -- no installer, no registry, no admin.
  • Includes ossl-modules/legacy.dll out of the box.
  • Stable URL scheme, pinned version with automatic latest-patch detection.

Test plan

Replace the winget-based ShiningLight install with FireDaemon's portable
OpenSSL zip. Installs into the job's RUNNER_TEMP sandbox so every run
gets a clean copy; the zip includes the legacy provider
(ossl-modules/legacy.dll) needed for DES-ECB and PKCS12 RC2/3DES PBE
tests.

Avoids winget's non-zero exit on "already installed"
(microsoft/winget-cli#4262), msstore agreement prompts, registry
dependence, and the runner image's pre-installed OpenSSL (which lacks
the legacy provider).

Latest patch for the chosen major.minor track is scraped from the KB
article; falls back to a pinned version if the page layout changes.
@matejk matejk added this to the Release 1.16.0 milestone Apr 16, 2026
@matejk matejk requested a review from aleks-f April 16, 2026 20:50
Copy link
Copy Markdown
Member

@aleks-f aleks-f left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

we now also need SSH, see #5315.

SSH vcpkg installs both:

- name: Install libssh (vcpkg)
        shell: pwsh
        run: |
          vcpkg install libssh:x64-windows
          $root = "$env:VCPKG_INSTALLATION_ROOT\installed\x64-windows"
          "LIBSSH_ROOT_DIR=$root" | Out-File -FilePath $env:GITHUB_ENV -Append
          Add-Content $env:GITHUB_PATH "$root\bin"

@matejk
Copy link
Copy Markdown
Contributor Author

matejk commented Apr 17, 2026

we now also need SSH, see #5315.

SSH vcpkg installs both:

- name: Install libssh (vcpkg)
        shell: pwsh
        run: |
          vcpkg install libssh:x64-windows
          $root = "$env:VCPKG_INSTALLATION_ROOT\installed\x64-windows"
          "LIBSSH_ROOT_DIR=$root" | Out-File -FilePath $env:GITHUB_ENV -Append
          Add-Content $env:GITHUB_PATH "$root\bin"

Problem on GitHub runners was that they are shared and there were many OpenSSL library present on the runner (some with and some without development files). Installing with vcpkg did not resolve all of the issues.

Using a zip file where it is possible to control the files that are going to be used was the most stable way to do it.

@aleks-f
Copy link
Copy Markdown
Member

aleks-f commented Apr 17, 2026

Problem on GitHub runners was that they are shared and there were many OpenSSL library present on the runner (some with and some without development files). Installing with vcpkg did not resolve all of the issues.

Using a zip file where it is possible to control the files that are going to be used was the most stable way to do it.

vcpkg can be installed in a directory, without affecting anything system-wide.

I don't care one way or the other, as long as we have ssh covered and don't end up again with multiple openssl copies. to me, vcpkg installing ssh/openssl in a local directory seems like an optimal solution

@matejk
Copy link
Copy Markdown
Contributor Author

matejk commented Apr 17, 2026

I'll merge this now to have CI working on Windows.

@matejk matejk merged commit 272812a into main Apr 17, 2026
52 checks passed
@matejk matejk deleted the fix-ci-windows-openssl branch April 17, 2026 17:39
@aleks-f
Copy link
Copy Markdown
Member

aleks-f commented Apr 17, 2026

I'll merge this now to have CI working on Windows.

from what I am seeing, windows ci with vcpkg works just fine: #5315

- name: Install libssh (vcpkg)
shell: pwsh
run: |
vcpkg install libssh:x64-windows
$root = "$env:VCPKG_INSTALLATION_ROOT\installed\x64-windows"
"LIBSSH_ROOT_DIR=$root" | Out-File -FilePath $env:GITHUB_ENV -Append
Add-Content $env:GITHUB_PATH "$root\bin"

@matejk
Copy link
Copy Markdown
Contributor Author

matejk commented Apr 17, 2026

Until it suddenly doesn't because there are multiple installations on the worker, including such without development files. I created test job that discovered more than five instances of OpenSSL files in the path on the worker and installation from shining light without development files. 🤷

@aleks-f
Copy link
Copy Markdown
Member

aleks-f commented Apr 17, 2026

Until it suddenly doesn't because there are multiple installations on the worker, including such without development files. I created test job that discovered more than five instances of OpenSSL files in the path on the worker and installation from shining light without development files. 🤷

ok, let's not make a mystery out of this. how can there be multiple vcpkg installations when vcpkg puts it always in C:\vcpkg? in which directories exactly were those multiple installations? the only time I have seen that is when ShiningLight version increases and the old one remains left behind. vcpkg will always put it in the same place and it can also put it wherever we want. we can also create a script that checks what is there, just like we have in devs repo

if you have a different solution for ssh, let me know. otherwise it will have to be vcpkg

@aleks-f
Copy link
Copy Markdown
Member

aleks-f commented Apr 17, 2026

The problem is most likely having more than one ssl installation, I have seen that on our windows ci machine with vcpkg and ShiningLight. The same effect that was achieved with merging this branch would have been achieved with merging vcpkg in main. And if there is ever another ci with ShiningLight triggered, it will happen again.

@matejk matejk removed this from the Release 1.16.0 milestone Apr 21, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants