Please note: This repository is currently unmaintained by a team of developers at GitHub. The repository is here and you can use it as an example, or in Actions. However please be aware that we are not going to be updating issues or pull requests on this repository.
Maintained forks:
You could also fork this code and maintain it, if you do please let us know.
To reflect this state we’ve marked this repository as Archived.
If you are having an issue or question about GitHub Actions then please contact customer support.
If you have found a security issue please submit it here.
This action sets up a Haskell environment for use in actions by:
- optionally installing a version of ghc and cabal and adding to PATH.
- optionally installing a version of Stack and adding to PATH.
- setting the outputs of
ghc-path
,cabal-path
,stack-path
, andcabal-store
when necessary.
The GitHub runners come with pre-installed versions of GHC and Cabal. Those will be used whenever possible.
For all other versions, this action utilizes ppa:hvr/ghc
, ghcup
, and chocolatey
.
See action.yml
Minimal:
on: [push]
name: build
jobs:
runhaskell:
name: Hello World
runs-on: ubuntu-latest # or macOS-latest, or windows-latest
steps:
- uses: actions/checkout@v2
- uses: actions/[email protected]
- run: runhaskell Hello.hs
Basic:
on: [push]
name: build
jobs:
runhaskell:
name: Hello World
runs-on: ubuntu-latest # or macOS-latest, or windows-latest
steps:
- uses: actions/checkout@v2
- uses: actions/[email protected]
with:
ghc-version: '8.8' # Resolves to the latest point release of GHC 8.8
cabal-version: '3.0.0.0' # Exact version of Cabal
- run: runhaskell Hello.hs
Basic with Stack:
on: [push]
name: build
jobs:
runhaskell:
name: Hello World
runs-on: ubuntu-latest # or macOS-latest, or windows-latest
steps:
- uses: actions/checkout@v2
- uses: actions/[email protected]
with:
ghc-version: '8.8.3' # Exact version of ghc to use
# cabal-version: 'latest'. Omitted, but defalts to 'latest'
enable-stack: true
stack-version: 'latest'
- run: runhaskell Hello.hs
Matrix Testing:
on: [push]
name: build
jobs:
build:
runs-on: ${{ matrix.os }}
strategy:
matrix:
ghc: ['8.6.5', '8.8.3']
cabal: ['2.4.1.0', '3.0.0.0']
os: [ubuntu-latest, macOS-latest, windows-latest]
exclude:
# GHC 8.8+ only works with cabal v3+
- ghc: 8.8.3
cabal: 2.4.1.0
name: Haskell GHC ${{ matrix.ghc }} sample
steps:
- uses: actions/checkout@v2
- name: Setup Haskell
uses: actions/[email protected]
with:
ghc-version: ${{ matrix.ghc }}
cabal-version: ${{ matrix.cabal }}
- run: runhaskell Hello.hs
Name | Required | Description | Type | Default |
---|---|---|---|---|
ghc-version |
GHC version to use, ex. latest |
string | latest | |
cabal-version |
Cabal version to use, ex. 3.2 |
string | latest | |
stack-version |
Stack version to use, ex. latest . Stack will only be installed if enable-stack is set. |
string | latest | |
enable-stack |
If specified, will setup Stack. | "boolean" | false | |
stack-no-global |
If specified, enable-stack must be set. Prevents installing GHC and Cabal globally | "boolean" | false | |
stack-setup-ghc |
If specified, enable-stack must be set. Runs stack setup to install the specified GHC. (Note: setting this does not imply stack-no-global ) |
"boolean" | false |
Name | Description | Type |
---|---|---|
ghc-path |
The path of the ghc executable directory | string |
cabal-path |
The path of the cabal executable directory | string |
stack-path |
The path of the stack executable directory | string |
cabal-store |
The path to the cabal store | string |
ghc-exe |
The path of the ghc executable | string |
cabal-exe |
The path of the cabal executable | string |
stack-exe |
The path of the stack executable | string |
GHC:
latest
(default, recommended)8.10.1
8.10
8.8.3
8.8
8.8.2
8.8.1
8.6.5
8.6
8.6.4
8.6.3
8.6.2
8.6.1
8.4.4
8.4
8.4.3
8.4.2
8.4.1
8.2.2
8.2
8.0.2
8.0
7.10.3
7.10
Suggestion: Try to support the three latest major versions of GHC.
Cabal:
latest
(default, recommended)3.2.0.0
3.2
3.0.0.0
3.0
2.4.1.0
2.4
2.4.0.0
2.2.0.0
2.2
Recommendation: Use the latest available version if possible.
Stack:
latest
(recommended) -- follows the latest release automatically.2.3.1
2.3
2.1.3
2.1
2.1.1
1.9.3.1
1.9
1.9.1.1
1.7.1
1.7
1.6.5
1.6
1.6.3.1
1.6.1.1
1.5.1
1.5
1.5.0
1.4.0
1.4
1.3.2
1.3
1.3.0
1.2.0
1.2
Recommendation: Use the latest available version if possible.
The full list of available versions of GHC, Cabal, and Stack are as follows:
Note: There are technically some descrepencies here. For example, "8.10.1-alpha1" will work for a ghc version for windows but not for Linux and macOS. For your sanity, I suggest sticking with the version lists above which are supported across all three operating systems.
The scripts and documentation in this project are released under the MIT License.
Contributions are welcome! See the Contributor's Guide.