Merge pull request #6 from vibe-d/filecache_fix #37
Workflow file for this run
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# Test old OpenSSL version(s) | |
# | |
# As we are using `ubuntu-latest`, we cannot rely on the installed | |
# `openssl` package to test all supported versions. | |
# Instead, this workflow installs an explicit version, builds it, | |
# and test the tls package with it. | |
name: OpenSSL | |
on: [push, pull_request] | |
jobs: | |
deps: | |
strategy: | |
matrix: | |
os: [ ubuntu-latest ] | |
openssl: | |
- version: 1.0.2u | |
link: https://www.openssl.org/source/old/1.0.2/openssl-1.0.2u.tar.gz | |
- version: 1.1.0l | |
link: https://www.openssl.org/source/old/1.1.0/openssl-1.1.0l.tar.gz | |
- version: 1.1.1o | |
link: https://www.openssl.org/source/openssl-1.1.1o.tar.gz | |
- version: 3.0.3 | |
link: https://www.openssl.org/source/openssl-3.0.3.tar.gz | |
runs-on: ${{ matrix.os }} | |
timeout-minutes: 15 | |
# Build the OpenSSL version if not already cached | |
steps: | |
- name: 'Looking up cache' | |
id: cache-openssl | |
uses: actions/cache@v4 | |
with: | |
path: ${{ github.workspace }}/openssl/ | |
key: ${{ runner.os }}-${{ runner.arch }}-${{ matrix.openssl.version }} | |
- name: 'Download and build OpenSSL ${{ matrix.openssl.version }}' | |
if: steps.cache-openssl.outputs.cache-hit != 'true' | |
run: | | |
mkdir -p ${{ github.workspace }}/openssl/ | |
pushd ${{ github.workspace }}/openssl/ | |
wget -O download.tar.gz ${{ matrix.openssl.link }} | |
tar -xf download.tar.gz | |
pushd openssl-${{ matrix.openssl.version }}/ | |
./config --prefix=${{ github.workspace }}/openssl/install/ | |
make install | |
echo "OpenSSL ${{ matrix.openssl.version }} has been installed in: ${{ github.workspace }}/openssl/install/" | |
# The previous job was separated to avoid a build once per matrix row, | |
# as opposed to once per platform / version as we want. | |
test: | |
name: Run | |
needs: deps | |
strategy: | |
fail-fast: false | |
matrix: | |
os: [ ubuntu-latest ] | |
dc: | |
- dmd-latest | |
# - ldc-latest | |
openssl: | |
- version: 1.0.2u | |
lib-dir: lib | |
- version: 1.1.0l | |
lib-dir: lib | |
- version: 1.1.1o | |
lib-dir: lib | |
- version: 3.0.3 | |
lib-dir: lib64 | |
runs-on: ${{ matrix.os }} | |
timeout-minutes: 60 | |
steps: | |
- uses: actions/checkout@v4 | |
- name: Prepare compiler | |
uses: dlang-community/setup-dlang@v1 | |
with: | |
compiler: ${{ matrix.dc }} | |
- name: 'Restore openssl from cache' | |
id: lookup-openssl | |
uses: actions/cache@v4 | |
with: | |
path: ${{ github.workspace }}/openssl/ | |
key: ${{ runner.os }}-${{ runner.arch }}-${{ matrix.openssl.version }} | |
- name: 'Make sure OpenSSL was loaded from cache' | |
if: steps.lookup-openssl.outputs.cache-hit != 'true' | |
run: exit 1 | |
- name: 'Export env variables & fetch dependencies' | |
run: | | |
# LD_LIBRARY_PATH affects `dub` somehow when fetching from the registry, leading to an error, | |
# so pre-fetch dependencies. | |
dub build :tls | |
echo "PKG_CONFIG_PATH=${{ github.workspace }}/openssl/install/${{ matrix.openssl.lib-dir }}/pkgconfig/" >> $GITHUB_ENV | |
echo "LD_LIBRARY_PATH=${LD_LIBRARY_PATH}:${{ github.workspace }}/openssl/install/${{ matrix.openssl.lib-dir }}/" >> $GITHUB_ENV | |
- name: 'Run tests for vibe-stream:tls' | |
run: | | |
echo "pkg-config uses: $(pkg-config --modversion openssl)" | |
if [ `pkg-config --modversion openssl` != "${{ matrix.openssl.version }}" ]; then | |
echo "Expected version '${{ matrix.openssl.version }}' but got `pkg-config --modversion openssl`" | |
exit 1 | |
fi | |
dub --skip-registry=all test :tls |