{ "jobs": { "build": { "name": "Build on ${{ matrix.platform }} with GHC ${{ matrix.ghc }}", "runs-on": "${{ matrix.platform }}-${{ matrix.version }}", "steps": [ { "uses": "actions/checkout@v3" }, { "run": "mkdir artifact" }, { "id": "artifact", "run": "echo 'directory=artifact/${{ matrix.platform }}-${{ matrix.ghc }}' >> $GITHUB_OUTPUT", "shell": "bash" }, { "run": "mkdir ${{ steps.artifact.outputs.directory }}" }, { "id": "haskell", "uses": "haskell/actions/setup@v2", "with": { "cabal-version": "3.8.1.0", "ghc-version": "${{ matrix.ghc }}" } }, { "run": "cabal sdist --output-dir ${{ steps.artifact.outputs.directory }}" }, { "run": "cabal configure --enable-optimization=2 --flags pedantic --jobs" }, { "run": "cat cabal.project.local" }, { "run": "cp cabal.project.local ${{ steps.artifact.outputs.directory }}" }, { "run": "cabal freeze" }, { "run": "cat cabal.project.freeze" }, { "run": "cp cabal.project.freeze ${{ steps.artifact.outputs.directory }}" }, { "run": "cabal outdated --v2-freeze-file cabal.project.freeze" }, { "uses": "actions/cache@v3", "with": { "key": "${{ matrix.platform }}-${{ matrix.ghc }}-${{ hashFiles('cabal.project.freeze') }}", "path": "${{ steps.haskell.outputs.cabal-store }}", "restore-keys": "${{ matrix.platform }}-${{ matrix.ghc }}-" } }, { "run": "cabal build --only-download" }, { "run": "cabal build --only-dependencies" }, { "run": "cabal build" }, { "uses": "actions/upload-artifact@v3", "with": { "name": "witch-${{ github.sha }}", "path": "artifact" } }, { "run": "cabal run witch-test-suite" } ], "strategy": { "matrix": { "include": [ { "ghc": "9.4.4", "platform": "macos", "version": "12" }, { "ghc": "9.2.7", "platform": "ubuntu", "version": "22.04" }, { "ghc": "9.4.4", "platform": "ubuntu", "version": "22.04" }, { "ghc": "9.6.1", "platform": "ubuntu", "version": "22.04" }, { "extension": ".exe", "ghc": "9.4.4", "platform": "windows", "version": "2022" } ] } } }, "cabal": { "name": "Cabal", "runs-on": "ubuntu-22.04", "steps": [ { "uses": "actions/checkout@v3" }, { "run": "cabal check" } ] }, "hlint": { "name": "HLint", "runs-on": "ubuntu-22.04", "steps": [ { "uses": "actions/checkout@v3" }, { "uses": "haskell/actions/hlint-setup@v2", "with": { "version": 3.5 } } ] }, "ormolu": { "name": "Ormolu", "runs-on": "ubuntu-22.04", "steps": [ { "uses": "actions/checkout@v3" }, { "uses": "mrkkrp/ormolu-action@v11" } ] }, "release": { "if": "github.event_name == 'release'", "name": "Release", "needs": "build", "runs-on": "ubuntu-22.04", "steps": [ { "uses": "actions/download-artifact@v3", "with": { "name": "witch-${{ github.sha }}", "path": "artifact" } }, { "uses": "svenstaro/upload-release-action@v2", "with": { "asset_name": "witch-${{ github.event.release.tag_name }}.tar.gz", "file": "artifact/ubuntu-9.4.4/witch-${{ github.event.release.tag_name }}.tar.gz" } }, { "run": "cabal upload --publish --username '${{ secrets.HACKAGE_USERNAME }}' --password '${{ secrets.HACKAGE_PASSWORD }}' artifact/ubuntu-9.4.4/witch-${{ github.event.release.tag_name }}.tar.gz" } ] } }, "name": "Workflow", "on": { "push": null, "release": { "types": [ "created" ] }, "schedule": [ { "cron": "0 0 * * *" } ] } }