Tests needing fixing for recent minio Also: - set minimum tested version to 8.10 - remove building with cabal 3.6 - update stack.yaml to add crypton-connection Update live server test env var handling
233 lines
8.2 KiB
YAML
233 lines
8.2 KiB
YAML
name: CI
|
|
|
|
# Trigger the workflow on push or pull request, but only for the master branch
|
|
on:
|
|
pull_request:
|
|
branches: [master]
|
|
push:
|
|
branches: [master]
|
|
|
|
# This ensures that previous jobs for the PR are canceled when the PR is
|
|
# updated.
|
|
concurrency:
|
|
group: ${{ github.workflow }}-${{ github.head_ref }}
|
|
cancel-in-progress: true
|
|
|
|
# Env vars for tests
|
|
env:
|
|
MINIO_ACCESS_KEY: minio
|
|
MINIO_SECRET_KEY: minio123
|
|
MINIO_LOCAL: 1
|
|
MINIO_SECURE: 1
|
|
|
|
jobs:
|
|
ormolu:
|
|
runs-on: ubuntu-latest
|
|
steps:
|
|
- uses: actions/checkout@v4
|
|
- uses: haskell-actions/run-ormolu@v15
|
|
with:
|
|
version: "0.5.0.1"
|
|
|
|
hlint:
|
|
runs-on: ubuntu-latest
|
|
steps:
|
|
- uses: actions/checkout@v4
|
|
|
|
- name: "Set up HLint"
|
|
uses: haskell/actions/hlint-setup@v2
|
|
with:
|
|
version: "3.5"
|
|
|
|
- name: "Run HLint"
|
|
uses: haskell/actions/hlint-run@v2
|
|
with:
|
|
path: '["src/", "test/", "examples"]'
|
|
fail-on: warning
|
|
|
|
cabal:
|
|
name: ${{ matrix.os }} / ghc-${{ matrix.ghc }} / cabal-${{ matrix.cabal }}
|
|
runs-on: ${{ matrix.os }}
|
|
needs: ormolu
|
|
strategy:
|
|
matrix:
|
|
os: [ubuntu-latest, windows-latest] # Removed macos-latest due to cert issues.
|
|
cabal: ["3.8", "latest"]
|
|
ghc:
|
|
- "9.6"
|
|
- "9.4"
|
|
- "9.2"
|
|
- "9.0"
|
|
- "8.10"
|
|
# exclude:
|
|
# - os: windows-latest
|
|
# ghc: "9.4"
|
|
# cabal: "3.6"
|
|
|
|
steps:
|
|
- uses: actions/checkout@v4
|
|
if: github.event.action == 'opened' || github.event.action == 'synchronize' || github.event.ref == 'refs/heads/master'
|
|
|
|
- uses: haskell/actions/setup@v2
|
|
id: setup-haskell-cabal
|
|
name: Setup Haskell
|
|
with:
|
|
ghc-version: ${{ matrix.ghc }}
|
|
cabal-version: ${{ matrix.cabal }}
|
|
|
|
- name: Configure
|
|
run: |
|
|
cabal configure --enable-tests --enable-benchmarks --test-show-details=direct -fexamples -fdev -flive-test
|
|
|
|
- name: Freeze
|
|
run: |
|
|
cabal freeze
|
|
|
|
- uses: actions/cache@v3
|
|
name: Cache ~/.cabal/packages, ~/.cabal/store and dist-newstyle
|
|
with:
|
|
path: |
|
|
~/.cabal/packages
|
|
~/.cabal/store
|
|
dist-newstyle
|
|
key: ${{ runner.os }}-${{ matrix.ghc }}-${{ hashFiles('**/*.cabal', '**/cabal.project', '**/cabal.project.freeze') }}
|
|
restore-keys: ${{ runner.os }}-${{ matrix.ghc }}-
|
|
|
|
- name: Install dependencies
|
|
run: |
|
|
cabal build --only-dependencies
|
|
|
|
- name: Build
|
|
run: |
|
|
cabal build
|
|
|
|
- name: Setup MinIO for testing (Linux)
|
|
if: matrix.os == 'ubuntu-latest'
|
|
run: |
|
|
mkdir -p /tmp/minio /tmp/minio-config/certs
|
|
cp test/cert/* /tmp/minio-config/certs/
|
|
(cd /tmp/minio; wget -q https://dl.min.io/server/minio/release/linux-amd64/minio; chmod +x ./minio)
|
|
sudo cp /tmp/minio-config/certs/public.crt /usr/local/share/ca-certificates/
|
|
sudo update-ca-certificates
|
|
|
|
- name: Setup MinIO for testing (MacOS)
|
|
if: matrix.os == 'macos-latest'
|
|
run: |
|
|
mkdir -p /tmp/minio /tmp/minio-config/certs
|
|
cp test/cert/* /tmp/minio-config/certs/
|
|
(cd /tmp/minio; wget -q https://dl.min.io/server/minio/release/darwin-amd64/minio; chmod +x ./minio)
|
|
sudo security add-trusted-cert -d -r trustRoot -k /Library/Keychains/System.keychain /tmp/minio-config/certs/public.crt
|
|
|
|
- name: Setup MinIO for testing (Windows)
|
|
if: matrix.os == 'windows-latest'
|
|
run: |
|
|
New-Item -ItemType Directory -Path "$env:temp/minio-config/certs/"
|
|
Copy-Item -Path test\cert\* -Destination "$env:temp/minio-config/certs/"
|
|
Invoke-WebRequest -Uri https://dl.minio.io/server/minio/release/windows-amd64/minio.exe -OutFile $HOME/minio.exe
|
|
Import-Certificate -FilePath "$env:temp/minio-config/certs/public.crt" -CertStoreLocation Cert:\LocalMachine\Root
|
|
|
|
- name: Test (Non-Windows)
|
|
if: matrix.os != 'windows-latest'
|
|
run: |
|
|
/tmp/minio/minio server --quiet --certs-dir /tmp/minio-config/certs data1 data2 data3 data4 2>&1 > minio.log &
|
|
ghc --version
|
|
cabal --version
|
|
cabal test
|
|
|
|
- name: Test (Windows)
|
|
if: matrix.os == 'windows-latest'
|
|
run: |
|
|
Start-Process -NoNewWindow -FilePath "$HOME/minio.exe" -ArgumentList "--certs-dir", "$env:temp/minio-config/certs", "server", "$env:temp/data1", "$env:temp/data2", "$env:temp/data3", "$env:temp/data4"
|
|
ghc --version
|
|
cabal --version
|
|
cabal test
|
|
|
|
stack:
|
|
name: stack / ghc ${{ matrix.ghc }}
|
|
runs-on: ${{ matrix.os }}
|
|
strategy:
|
|
matrix:
|
|
ghc:
|
|
- "8.10.7"
|
|
- "9.0.2"
|
|
- "9.2.8"
|
|
- "9.4.8"
|
|
- "9.6.5"
|
|
os: [ubuntu-latest]
|
|
|
|
steps:
|
|
- uses: actions/checkout@v4
|
|
if: github.event.action == 'opened' || github.event.action == 'synchronize' || github.event.ref == 'refs/heads/master'
|
|
|
|
- name: Install Haskell Stack
|
|
run: |
|
|
if ! which stack
|
|
then
|
|
curl -sSL https://get.haskellstack.org/ | sh
|
|
fi
|
|
|
|
- uses: actions/cache@v3
|
|
name: Cache ~/.stack
|
|
with:
|
|
path: ~/.stack
|
|
key: ${{ runner.os }}-stack-global-${{ hashFiles('stack.yaml') }}-${{ hashFiles('package.yaml') }}
|
|
restore-keys: |
|
|
${{ runner.os }}-stack-global-
|
|
- uses: actions/cache@v3
|
|
name: Cache .stack-work
|
|
with:
|
|
path: .stack-work
|
|
key: ${{ runner.os }}-stack-work-${{ hashFiles('stack.yaml') }}-${{ hashFiles('package.yaml') }}-${{ hashFiles('**/*.hs') }}
|
|
restore-keys: |
|
|
${{ runner.os }}-stack-work-
|
|
|
|
- name: Install dependencies
|
|
run: |
|
|
stack --version
|
|
stack build --system-ghc --test --bench --no-run-tests --no-run-benchmarks --only-dependencies
|
|
|
|
- name: Build
|
|
run: |
|
|
stack build --system-ghc --test --bench --no-run-tests --no-run-benchmarks --flag minio-hs:examples --flag minio-hs:live-test --flag minio-hs:dev
|
|
|
|
- name: Setup MinIO for testing (Linux)
|
|
if: matrix.os == 'ubuntu-latest'
|
|
run: |
|
|
mkdir -p /tmp/minio /tmp/minio-config/certs
|
|
cp test/cert/* /tmp/minio-config/certs/
|
|
(cd /tmp/minio; wget -q https://dl.min.io/server/minio/release/linux-amd64/minio; chmod +x ./minio)
|
|
sudo cp /tmp/minio-config/certs/public.crt /usr/local/share/ca-certificates/
|
|
sudo update-ca-certificates
|
|
|
|
- name: Setup MinIO for testing (MacOS)
|
|
if: matrix.os == 'macos-latest'
|
|
run: |
|
|
mkdir -p /tmp/minio /tmp/minio-config/certs
|
|
cp test/cert/* /tmp/minio-config/certs/
|
|
(cd /tmp/minio; wget -q https://dl.min.io/server/minio/release/darwin-amd64/minio; chmod +x ./minio)
|
|
sudo security add-trusted-cert -d -r trustRoot -k /Library/Keychains/System.keychain /tmp/minio-config/certs/public.crt
|
|
|
|
- name: Setup MinIO for testing (Windows)
|
|
if: matrix.os == 'windows-latest'
|
|
run: |
|
|
New-Item -ItemType Directory -Path "$env:temp/minio-config/certs/"
|
|
Copy-Item -Path test\cert\* -Destination "$env:temp/minio-config/certs/"
|
|
Invoke-WebRequest -Uri https://dl.minio.io/server/minio/release/windows-amd64/minio.exe -OutFile $HOME/minio.exe
|
|
Import-Certificate -FilePath "$env:temp/minio-config/certs/public.crt" -CertStoreLocation Cert:\LocalMachine\Root
|
|
|
|
- name: Test (Non-Windows)
|
|
if: matrix.os != 'windows-latest'
|
|
run: |
|
|
/tmp/minio/minio server --quiet --certs-dir /tmp/minio-config/certs data1 data2 data3 data4 2>&1 > minio.log &
|
|
ghc --version
|
|
stack --version
|
|
stack test --system-ghc --flag minio-hs:live-test --flag minio-hs:dev
|
|
|
|
- name: Test (Windows)
|
|
if: matrix.os == 'windows-latest'
|
|
run: |
|
|
Start-Process -NoNewWindow -FilePath "$HOME/minio.exe" -ArgumentList "--certs-dir", "$env:temp/minio-config/certs", "server", "$env:temp/data1", "$env:temp/data2", "$env:temp/data3", "$env:temp/data4"
|
|
ghc --version
|
|
cabal --version
|
|
stack test --system-ghc --flag minio-hs:live-test --flag minio-hs:dev
|