Skip to content

Merge pull request #5 from nuttycom/github_ci #1

Merge pull request #5 from nuttycom/github_ci

Merge pull request #5 from nuttycom/github_ci #1

Workflow file for this run

{
"jobs": {
"build": {
"env": {
"CONFIG": "--enable-tests --enable-benchmarks ${{ matrix.bounds }}"
},
"runs-on": "${{ matrix.os }}",
"steps": [
{
"uses": "actions/checkout@v4"
},
{
"id": "setup-haskell-cabal",
"uses": "haskell-actions/setup@v2",
"with": {
"cabal-version": "3.10.2.1",
"ghc-version": "${{ matrix.ghc }}"
}
},
{
"run": "cabal v2-freeze $CONFIG"
},
{
"uses": "actions/cache@v4",
"with": {
"key": "${{ runner.os }}-${{ matrix.ghc }}-${{ hashFiles('cabal.project.freeze') }}",
"path": "${{ steps.setup-haskell-cabal.outputs.cabal-store }}\ndist-newstyle\n"
}
},
{
"run": "cabal v2-build all $CONFIG"
},
{
"run": "cabal v2-test all $CONFIG"
},
{
"run": "mv dist-newstyle/cache/plan.json plan-${{ runner.os }}-${{ matrix.ghc }}${{ matrix.bounds }}.json"
},
{
"name": "Upload build plan as artifact",
"uses": "actions/upload-artifact@v4",
"with": {
"name": "plan-${{ runner.os }}-${{ matrix.ghc }}${{ matrix.bounds }}",
"path": "plan-${{ runner.os }}-${{ matrix.ghc }}${{ matrix.bounds }}.json"
}
}
],
"strategy": {
"fail-fast": false,
"matrix": {
"bounds": [
"--prefer-oldest",
""
],
"exclude": [
{
"ghc": "7.10.3",
"os": "ubuntu-22.04"
},
],
"ghc": [
"7.10.3",
"8.0.2",
"8.2.2",
"8.4.1",
"8.6.1",
"8.8.1",
"8.10.1",
],
"os": [
"macos-13",
"ubuntu-22.04",
"windows-2022"
]
}
}
},
"check-bounds": {
"if": "always()",
"needs": [
"build"
],
"runs-on": "ubuntu-22.04",
"steps": [
{
"uses": "actions/checkout@v4"
},
{
"id": "setup-haskell-cabal",
"uses": "haskell-actions/setup@v2",
"with": {
"cabal-version": "3.10.2.1",
"ghc-version": "9.6.3"
}
},
{
"run": "## TODO: Remove the manual cloning once cabal-plan-bounds >0.1.5.1\n## is released. Currently, it’s needed because of\n## nomeata/cabal-plan-bounds#19.\ngit clone https://github.com/nomeata/cabal-plan-bounds\ncd cabal-plan-bounds\ncabal install cabal-plan-bounds\n"
},
{
"name": "download Cabal plans",
"uses": "actions/download-artifact@v4",
"with": {
"merge-multiple": true,
"path": "plans",
"pattern": "plan-*"
}
},
{
"name": "Cabal plans considered in generated bounds",
"run": "find plans/"
},
{
"name": "check if bounds have changed",
"run": "diffs=\"$(find . -name '*.cabal' -exec \\\n cabal-plan-bounds \\\n --dry-run \\\n \\\n plans/*.json \\\n --cabal {} \\;)\"\nif [[ -n \"$diffs\" ]]; then\n echo \"$diffs\"\n exit 1\nfi\n"
}
]
},
"check-licenses": {
"if": "always()",
"needs": [
"build"
],
"runs-on": "ubuntu-22.04",
"steps": [
{
"uses": "actions/checkout@v4"
},
{
"id": "setup-haskell-cabal",
"uses": "haskell-actions/setup@v2",
"with": {
"cabal-version": "3.10.2.1",
"ghc-version": "8.10.1"
}
},
{
"run": "cabal install cabal-plan -flicense-report"
},
{
"name": "download Cabal plans",
"uses": "actions/download-artifact@v4",
"with": {
"merge-multiple": true,
"path": "plans",
"pattern": "plan-*"
}
},
{
"run": "mkdir -p dist-newstyle/cache\nmv plans/plan-${{ runner.os }}-8.10.1.json dist-newstyle/cache/plan.json\n"
},
{
"name": "check if licenses have changed",
"run": "{\n echo \"**NB**: This captures the licenses associated with a particular set of dependency versions. If your own build solves differently, it’s possible that the licenses may have changed, or even that the set of dependencies itself is different. Please make sure you run [\\`cabal-plan license-report\\`](https://hackage.haskell.org/package/cabal-plan) on your own components rather than assuming this is authoritative.\"\n echo\n cabal-plan license-report true-name:lib:true-name\n} >\"docs/license-report.md\"\n\ngit diff --exit-code docs/license-report.md\n"
}
]
}
},
"name": "CI",
"on": {
"pull_request": {
"types": [
"opened",
"synchronize"
]
},
"push": {
"branches": [
"master"
]
}
}
}