Add GHC 9.6 to CI #93
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
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.6", "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 |