Workflow #364
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
{ | |
"jobs": { | |
"build": { | |
"name": "Build on ${{ matrix.platform }} with GHC ${{ matrix.ghc }}", | |
"runs-on": "${{ matrix.platform }}-${{ matrix.version }}", | |
"steps": [ | |
{ | |
"uses": "actions/checkout@v4" | |
}, | |
{ | |
"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.10.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" | |
}, | |
{ | |
"run": "cp \"$( cabal list-bin github-release )\" ${{ steps.artifact.outputs.directory }}" | |
}, | |
{ | |
"uses": "svenstaro/upx-action@v2", | |
"with": { | |
"files": "${{ steps.artifact.outputs.directory }}/github-release${{ matrix.extension }}" | |
} | |
}, | |
{ | |
"uses": "actions/upload-artifact@v3", | |
"with": { | |
"name": "github-release-${{ github.sha }}", | |
"path": "artifact" | |
} | |
} | |
], | |
"strategy": { | |
"matrix": { | |
"include": [ | |
{ | |
"ghc": "9.4.7", | |
"platform": "macos", | |
"version": "12" | |
}, | |
{ | |
"ghc": "9.2.8", | |
"platform": "ubuntu", | |
"version": "22.04" | |
}, | |
{ | |
"ghc": "9.4.7", | |
"platform": "ubuntu", | |
"version": "22.04" | |
}, | |
{ | |
"ghc": "9.6.2", | |
"platform": "ubuntu", | |
"version": "22.04" | |
}, | |
{ | |
"ghc": "9.8.1", | |
"platform": "ubuntu", | |
"version": "22.04" | |
}, | |
{ | |
"extension": ".exe", | |
"ghc": "9.4.7", | |
"platform": "windows", | |
"version": "2022" | |
} | |
] | |
} | |
} | |
}, | |
"cabal": { | |
"name": "Cabal", | |
"runs-on": "ubuntu-22.04", | |
"steps": [ | |
{ | |
"uses": "actions/checkout@v4" | |
}, | |
{ | |
"run": "cabal check" | |
} | |
] | |
}, | |
"hlint": { | |
"name": "HLint", | |
"runs-on": "ubuntu-22.04", | |
"steps": [ | |
{ | |
"uses": "actions/checkout@v4" | |
}, | |
{ | |
"uses": "haskell-actions/hlint-setup@v2", | |
"with": { | |
"version": 3.5 | |
} | |
}, | |
{ | |
"uses": "haskell-actions/hlint-run@v2", | |
"with": { | |
"fail-on": "status" | |
} | |
} | |
] | |
}, | |
"ormolu": { | |
"name": "Ormolu", | |
"runs-on": "ubuntu-22.04", | |
"steps": [ | |
{ | |
"uses": "actions/checkout@v4" | |
}, | |
{ | |
"uses": "haskell-actions/run-ormolu@v14" | |
} | |
] | |
}, | |
"release": { | |
"if": "github.event_name == 'release'", | |
"name": "Release", | |
"needs": "build", | |
"runs-on": "ubuntu-22.04", | |
"steps": [ | |
{ | |
"uses": "actions/download-artifact@v3", | |
"with": { | |
"name": "github-release-${{ github.sha }}", | |
"path": "artifact" | |
} | |
}, | |
{ | |
"uses": "svenstaro/upload-release-action@v2", | |
"with": { | |
"asset_name": "github-release-${{ github.event.release.tag_name }}-ubuntu", | |
"file": "artifact/ubuntu-9.4.7/github-release", | |
"tag": "${{ github.event.release.tag_name }}" | |
} | |
}, | |
{ | |
"uses": "svenstaro/upload-release-action@v2", | |
"with": { | |
"asset_name": "github-release-${{ github.event.release.tag_name }}-macos", | |
"file": "artifact/macos-9.4.7/github-release", | |
"tag": "${{ github.event.release.tag_name }}" | |
} | |
}, | |
{ | |
"uses": "svenstaro/upload-release-action@v2", | |
"with": { | |
"asset_name": "github-release-${{ github.event.release.tag_name }}-windows.exe", | |
"file": "artifact/windows-9.4.7/github-release.exe", | |
"tag": "${{ github.event.release.tag_name }}" | |
} | |
}, | |
{ | |
"uses": "svenstaro/upload-release-action@v2", | |
"with": { | |
"asset_name": "github-release-${{ github.event.release.tag_name }}.tar.gz", | |
"file": "artifact/ubuntu-9.4.7/github-release-${{ github.event.release.tag_name }}.tar.gz", | |
"tag": "${{ github.event.release.tag_name }}" | |
} | |
}, | |
{ | |
"run": "cabal upload --publish --username '${{ secrets.HACKAGE_USERNAME }}' --password '${{ secrets.HACKAGE_PASSWORD }}' artifact/ubuntu-9.4.7/github-release-${{ github.event.release.tag_name }}.tar.gz" | |
} | |
] | |
} | |
}, | |
"name": "Workflow", | |
"on": { | |
"push": null, | |
"release": { | |
"types": [ | |
"created" | |
] | |
}, | |
"schedule": [ | |
{ | |
"cron": "0 0 * * *" | |
} | |
] | |
} | |
} |