From dc20f5aad421d10748c5ceace47c346be4fc15b3 Mon Sep 17 00:00:00 2001 From: Shauren Date: Thu, 6 Jun 2024 22:11:18 +0200 Subject: CI/GitHub: Cache OpenSSL installation --- .github/workflows/win-x64-build.yml | 21 +++++++++++++++++---- 1 file changed, 17 insertions(+), 4 deletions(-) (limited to '.github') diff --git a/.github/workflows/win-x64-build.yml b/.github/workflows/win-x64-build.yml index 68979619227..a52ba5db67d 100644 --- a/.github/workflows/win-x64-build.yml +++ b/.github/workflows/win-x64-build.yml @@ -21,23 +21,36 @@ jobs: echo "OPENSSL_ROOT_DIR=C:/libs/openssl" >> $env:GITHUB_ENV echo "MYSQL_ROOT_DIR=C:/Program Files/MySQL/MySQL Server 8.0" >> $env:GITHUB_ENV - - name: Download and install Openssl 3.x + - name: Get current OpenSSL version + id: openssl-info run: | $VersionsUrl = "https://api.github.com/repos/slproweb/opensslhashes/contents/win32_openssl_hashes.json" $Headers = @{ Accept="application/vnd.github.raw+json" Authorization="Bearer ${{ secrets.GITHUB_TOKEN }}" } - $Url = (Invoke-RestMethod $VersionsUrl -Headers $Headers).files.PSObject.Properties | + $openSSL = (Invoke-RestMethod $VersionsUrl -Headers $Headers).files.PSObject.Properties | Select-Object -ExpandProperty Value | Where-Object { $_.arch -eq 'INTEL' } | Where-Object { $_.bits -eq '64' } | Where-Object { $_.light -eq $false } | Where-Object { $_.installer -eq 'exe' } | Sort-Object -Descending @{ Expression = { [version]$_.basever } } | - Select-Object -First 1 -ExpandProperty url + Select-Object -First 1 + [System.String]::Format("cache-key=openssl-{0}-{1}-{2}", $openSSL.basever, $openSSL.arch, $openSSL.bits) >> $env:GITHUB_OUTPUT + [System.String]::Format("url={0}", $openSSL.url) >> $env:GITHUB_OUTPUT + + - name: Cache OpenSSL + id: cache-openssl + uses: actions/cache@v4 + with: + path: ${{ env.OPENSSL_ROOT_DIR }} + key: ${{ steps.openssl-info.outputs.cache-key }} - (New-Object System.Net.WebClient).DownloadFile($Url, "${{ env.TEMP }}\openssl.exe") + - name: Download and install Openssl 3.x + if: ${{ steps.cache-openssl.outputs.cache-hit != 'true' }} + run: | + (New-Object System.Net.WebClient).DownloadFile("${{ steps.openssl-info.outputs.url }}", "${{ env.TEMP }}\openssl.exe") Start-Process -Wait -FilePath "${{ env.TEMP }}\openssl.exe" "/SILENT","/SP-","/SUPPRESSMSGBOXES",/DIR=${{ env.OPENSSL_ROOT_DIR }} # Quick Openssl install test -- cgit v1.2.3