mirror of
https://github.com/tfausak/witch.git
synced 2024-11-26 19:33:37 +03:00
205 lines
5.0 KiB
YAML
205 lines
5.0 KiB
YAML
{
|
|
"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"
|
|
},
|
|
{
|
|
"uses": "actions/upload-artifact@v3",
|
|
"with": {
|
|
"name": "witch-${{ github.sha }}",
|
|
"path": "artifact"
|
|
}
|
|
},
|
|
{
|
|
"run": "cabal run witch-test-suite"
|
|
}
|
|
],
|
|
"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": "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.7/witch-${{ github.event.release.tag_name }}.tar.gz"
|
|
}
|
|
},
|
|
{
|
|
"run": "cabal upload --publish --username '${{ secrets.HACKAGE_USERNAME }}' --password '${{ secrets.HACKAGE_PASSWORD }}' artifact/ubuntu-9.4.7/witch-${{ github.event.release.tag_name }}.tar.gz"
|
|
}
|
|
]
|
|
}
|
|
},
|
|
"name": "Workflow",
|
|
"on": {
|
|
"push": null,
|
|
"release": {
|
|
"types": [
|
|
"created"
|
|
]
|
|
},
|
|
"schedule": [
|
|
{
|
|
"cron": "0 0 * * *"
|
|
}
|
|
]
|
|
}
|
|
}
|