restore some caching tests (#129) #303
This file contains hidden or 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
| name: CI | |
| on: | |
| push: | |
| branches: [ main ] | |
| pull_request: | |
| branches: [ main ] | |
| permissions: | |
| contents: read | |
| packages: write | |
| checks: write | |
| id-token: write | |
| env: | |
| CACHE_VERSION: v1 | |
| jobs: | |
| # Run tests for all packages | |
| test: | |
| name: Test All Packages (${{ matrix.os }}) | |
| strategy: | |
| fail-fast: false | |
| matrix: | |
| os: [ubuntu-latest, macos-latest] | |
| include: | |
| - os: ubuntu-latest | |
| container: ghcr.io/${{ github.repository }}/epsilon-ci:latest | |
| - os: macos-latest | |
| container: null | |
| runs-on: ${{ matrix.os }} | |
| container: ${{ matrix.container }} | |
| steps: | |
| - name: Checkout code | |
| uses: actions/checkout@v4 | |
| - name: Setup CI environment | |
| run: ./scripts/ci-setup.sh | |
| - name: Cache build artifacts | |
| uses: actions/cache@v4 | |
| with: | |
| path: | | |
| src/*/target | |
| .epsilon-cache | |
| modules/foreign/lib | |
| key: build-${{ env.CACHE_VERSION }}-${{ runner.os }}-${{ hashFiles('src/**/package.lisp', 'src/**/*.lisp', 'modules/foreign/c/*') }} | |
| restore-keys: | | |
| build-${{ env.CACHE_VERSION }}-${{ runner.os }}- | |
| - name: Verify OpenSSL setup | |
| run: | | |
| echo "=== OpenSSL Configuration ===" | |
| openssl version | |
| echo "=== Checking for OpenSSL libraries ===" | |
| # On Linux | |
| if [ -f /usr/lib/x86_64-linux-gnu/libssl.so ]; then | |
| echo "Found libssl.so" | |
| ls -la /usr/lib/x86_64-linux-gnu/libssl* | head -5 | |
| fi | |
| # On macOS | |
| if [ -d /opt/homebrew/opt/openssl@3 ]; then | |
| echo "Found Homebrew OpenSSL 3" | |
| ls -la /opt/homebrew/opt/openssl@3/lib/libssl* | head -5 | |
| elif [ -d /usr/local/opt/openssl@3 ]; then | |
| echo "Found Homebrew OpenSSL 3 (Intel)" | |
| ls -la /usr/local/opt/openssl@3/lib/libssl* | head -5 | |
| fi | |
| - name: Verify SQLite setup | |
| run: | | |
| echo "=== SQLite Configuration ===" | |
| sqlite3 --version | |
| echo "=== Checking for SQLite libraries ===" | |
| # On Linux | |
| if [ -f /usr/lib/x86_64-linux-gnu/libsqlite3.so ]; then | |
| echo "Found libsqlite3.so" | |
| ls -la /usr/lib/x86_64-linux-gnu/libsqlite3* | head -5 | |
| fi | |
| # On macOS - SQLite is bundled with the system | |
| if [ "${{ runner.os }}" = "macOS" ]; then | |
| echo "macOS system SQLite libraries:" | |
| # Check common locations for system SQLite | |
| if [ -f /usr/lib/libsqlite3.dylib ]; then | |
| echo "Found system libsqlite3.dylib" | |
| ls -la /usr/lib/libsqlite3* 2>/dev/null | head -5 || true | |
| fi | |
| # Also check SDK location | |
| if [ -d /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/lib ]; then | |
| echo "Found SDK SQLite libraries:" | |
| ls -la /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/lib/libsqlite3* 2>/dev/null | head -5 || true | |
| fi | |
| # Check with otool where sqlite3 binary links to | |
| echo "SQLite3 binary links to:" | |
| otool -L $(which sqlite3) | grep sqlite || true | |
| fi | |
| - name: Run smoke tests | |
| run: ./epsilon --exec epsilon.release:run-smoke-tests | |
| - name: Run all module tests | |
| run: | | |
| # Set library paths for OpenSSL on macOS | |
| if [ "${{ runner.os }}" = "macOS" ]; then | |
| if [ -d /opt/homebrew/opt/openssl@3 ]; then | |
| export DYLD_LIBRARY_PATH="/opt/homebrew/opt/openssl@3/lib:${DYLD_LIBRARY_PATH:-}" | |
| elif [ -d /usr/local/opt/openssl@3 ]; then | |
| export DYLD_LIBRARY_PATH="/usr/local/opt/openssl@3/lib:${DYLD_LIBRARY_PATH:-}" | |
| fi | |
| fi | |
| ./epsilon --exec epsilon.release:test --format junit --output "target/TEST-epsilon-${{ runner.os }}.xml" | |
| - name: Publish Test Report | |
| uses: mikepenz/action-junit-report@v5 | |
| if: success() || failure() | |
| with: | |
| report_paths: '**/TEST-*.xml' | |
| check_name: 'Test Results (${{ runner.os }})' | |
| job_summary: true | |
| detailed_summary: true | |
| - name: Upload test results | |
| uses: actions/upload-artifact@v4 | |
| if: success() || failure() | |
| with: | |
| name: test-results-${{ runner.os }} | |
| path: target/TEST-*.xml |