-
Notifications
You must be signed in to change notification settings - Fork 113
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
* Remove old CI Signed-off-by: Mihai Maruseac <mihai.maruseac@gmail.com> * New CI Signed-off-by: Mihai Maruseac <mihai.maruseac@gmail.com> * Update scorecards CI Signed-off-by: Mihai Maruseac <mihai.maruseac@gmail.com> * Add static checks workflow Signed-off-by: Mihai Maruseac <mihai.maruseac@gmail.com> * Add release workflow Signed-off-by: Mihai Maruseac <mihai.maruseac@gmail.com> * Validate formatting Signed-off-by: Mihai Maruseac <mihai.maruseac@gmail.com> * Validate cabal file is up to date Signed-off-by: Mihai Maruseac <mihai.maruseac@gmail.com> * Fix cabal CI Signed-off-by: Mihai Maruseac <mihai.maruseac@gmail.com> * Change order of args to fix cabal CI? Signed-off-by: Mihai Maruseac <mihai.maruseac@gmail.com> * Speed up Stack CI Signed-off-by: Mihai Maruseac <mihai.maruseac@gmail.com> * Skip validation on Windows Signed-off-by: Mihai Maruseac <mihai.maruseac@gmail.com> * Fix typo? Signed-off-by: Mihai Maruseac <mihai.maruseac@gmail.com> * Fix logic error Signed-off-by: Mihai Maruseac <mihai.maruseac@gmail.com> * Debug Signed-off-by: Mihai Maruseac <mihai.maruseac@gmail.com> * One more try Signed-off-by: Mihai Maruseac <mihai.maruseac@gmail.com> * Works now? Signed-off-by: Mihai Maruseac <mihai.maruseac@gmail.com> --------- Signed-off-by: Mihai Maruseac <mihai.maruseac@gmail.com>
- Loading branch information
1 parent
147f577
commit cd4dd04
Showing
7 changed files
with
335 additions
and
147 deletions.
There are no files selected for viewing
This file was deleted.
Oops, something went wrong.
This file was deleted.
Oops, something went wrong.
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
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,67 @@ | ||
name: Haskell Cabal | ||
|
||
on: | ||
push: | ||
branches: [master] | ||
pull_request: | ||
branches: [master] | ||
types: [opened, synchronize] | ||
|
||
permissions: {} | ||
|
||
jobs: | ||
test: | ||
name: CI | ||
runs-on: ${{ matrix.os }} | ||
strategy: | ||
fail-fast: false # don't cancel other jobs if one fails | ||
matrix: | ||
os: [ubuntu-latest, macos-latest, windows-latest] | ||
ghc: ["8.10.7", "9.2.5", "9.4.4"] | ||
steps: | ||
- name: "Checkout code" | ||
uses: actions/checkout@755da8c3cf115ac066823e79a1e1788f8940201b # v3.2.0 | ||
with: | ||
persist-credentials: false | ||
|
||
- name: Setup Haskell Compiler (cabal) | ||
id: setup-haskell | ||
uses: haskell/actions/setup@93635e8c4ac823f55cf3444537a63d3f2fd589de # v2.1.0 | ||
with: | ||
ghc-version: ${{ matrix.ghc }} | ||
|
||
- name: Cache dist-newstyle | ||
uses: actions/cache@4723a57e26efda3a62cbde1812113b730952852d # v3.2.2 | ||
with: | ||
path: dist-newstyle | ||
key: dist-newstyle-${{ matrix.os }}-${{ matrix.ghc }}-${{ hashFiles('**/*.cabal') }}-${{ hashFiles('internal/**','src/**','app/**','tests/**','benchmarks/**') }} | ||
restore-keys: | | ||
dist-newstyle-${{ matrix.os }}-${{ matrix.ghc }}-${{ hashFiles('**/*.cabal') }}- | ||
dist-newstyle-${{ matrix.os }}-${{ matrix.ghc }}- | ||
- name: Cache ~/.cabal/store | ||
uses: actions/cache@4723a57e26efda3a62cbde1812113b730952852d # v3.2.2 | ||
with: | ||
path: ${{ steps.setup-haskell.outputs.cabal-store }} | ||
key: cabal-store-${{ matrix.os }}-${{ matrix.ghc }}-${{ hashFiles('**/*.cabal') }} | ||
restore-keys: cabal-store-${{ matrix.os }}-${{ matrix.ghc }}- | ||
|
||
- name: Configure to run tests and benchmarks | ||
run: cabal configure --enable-tests --enable-benchmarks | ||
|
||
- name: Build code | ||
run: cabal build | ||
|
||
- name: Test code | ||
run: cabal test | ||
|
||
- name: Benchmark code | ||
run: cabal bench | ||
|
||
- name: Generate documentation | ||
run: cabal haddock all | ||
|
||
# TODO(mihaimaruseac): Move to using a custom action that can be reused | ||
- name: Validate code formatting (self-validate) | ||
if: matrix.os != 'windows-latest' # TODO(mihaimaruseac): Why does this fail on Windows (path issue)? | ||
run: cabal run hindent -- **/*.hs --validate |
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
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,75 @@ | ||
name: Haskell Stack | ||
|
||
on: | ||
push: | ||
branches: [master] | ||
pull_request: | ||
branches: [master] | ||
types: [opened, synchronize] | ||
|
||
permissions: {} | ||
|
||
jobs: | ||
test: | ||
name: CI | ||
runs-on: ${{ matrix.os }} | ||
strategy: | ||
fail-fast: false # don't cancel other jobs if one fails | ||
matrix: | ||
os: [ubuntu-latest, macos-latest, windows-latest] | ||
# We don't split on multiple resolvers as the ~/.stack grows to ~700MB | ||
# whereas all others (including Cabal ones) barely reach 50MB. Instead, | ||
# we only use nightly as the resolver, as this should handle the newest | ||
# GHC and is also the place where failures will be reported from Stack. | ||
resolver: ["nightly"] | ||
steps: | ||
- name: "Checkout code" | ||
uses: actions/checkout@755da8c3cf115ac066823e79a1e1788f8940201b # v3.2.0 | ||
with: | ||
persist-credentials: false | ||
|
||
- name: Setup Haskell Compiler (stack) | ||
id: setup-haskell | ||
uses: haskell/actions/setup@93635e8c4ac823f55cf3444537a63d3f2fd589de # v2.1.0 | ||
with: | ||
enable-stack: true | ||
stack-no-global: true | ||
|
||
- name: Cache .stack-work | ||
uses: actions/cache@4723a57e26efda3a62cbde1812113b730952852d # v3.2.2 | ||
with: | ||
path: .stack-work | ||
key: stack-work-${{ matrix.os }}-${{ matrix.resolver }}-${{ hashFiles('stack.yaml', '**/*.cabal') }}-${{ hashFiles('internal/**','src/**','app/**','tests/**','benchmarks/**') }} | ||
restore-keys: | | ||
stack-work-${{ matrix.os }}-${{ matrix.resolver }}-${{ hashFiles('stack.yaml', '**/*.cabal') }}- | ||
stack-work-${{ matrix.os }}-${{ matrix.resolver }}- | ||
- name: Cache ~/.stack | ||
uses: actions/cache@4723a57e26efda3a62cbde1812113b730952852d # v3.2.2 | ||
with: | ||
path: ${{ steps.setup-haskell.outputs.stack-root }} | ||
key: stack-root-${{ matrix.os }}-${{ matrix.resolver }}-${{ hashFiles('stack.yaml', '**/*.cabal') }} | ||
restore-keys: stack-root-${{ matrix.os }}-${{ matrix.resolver }}- | ||
|
||
- name: Get dependencies | ||
run: stack build --resolver=${{ matrix.resolver }} --only-dependencies --test --bench --no-run-tests --no-run-benchmarks | ||
|
||
- name: Build code | ||
run: stack build --resolver=${{ matrix.resolver }} --test --bench --no-run-tests --no-run-benchmarks | ||
|
||
- name: Test code | ||
run: stack test --resolver=${{ matrix.resolver }} | ||
|
||
- name: Benchmark code | ||
run: stack bench --resolver=${{ matrix.resolver }} | ||
|
||
- name: Generate documentation | ||
run: stack haddock --resolver=${{ matrix.resolver }} | ||
|
||
- name: Validate cabal file is properly generated from HPack | ||
if: matrix.os != 'windows-latest' # Since we're using `diff -u`, cannot run on Windows | ||
run: | | ||
mv hindent.cabal hindent.cabal.original | ||
# See https://github.com/commercialhaskell/stack/issues/3697#issuecomment-353729540. | ||
stack build --resolver=${{ matrix.resolver }} --dry-run | ||
diff -u hindent.cabal.original hindent.cabal |
Oops, something went wrong.