GitHub Action to install Crystal programming language and Shards package manager.
Works on Ubuntu, macOS, Windows.
Configurator: get a pre-made config for your exact use case!
steps:
  - uses: crystal-lang/install-crystal@v1
  - run: crystal eval "puts 1337"steps:
  - uses: actions/checkout@v4
  - uses: crystal-lang/install-crystal@v1
    with:
      crystal: 1.11
  - run: shards install
  - run: crystal spec    strategy:
      fail-fast: false
      matrix:
        include:
          - {os: ubuntu-latest, crystal: latest}
          - {os: ubuntu-latest, crystal: nightly}
          - {os: macos-latest}
          - {os: windows-latest}
    runs-on: ${{matrix.os}}
    steps:
      - uses: crystal-lang/install-crystal@v1
        with:
          crystal: ${{matrix.crystal}}
      - uses: actions/checkout@v4
      - run: shards install
      - run: crystal spec
      - run: crystal tool format && git diff --exit-code
        if: matrix.crystal == 'latest'Alternatively, you can use the container-based approach as in the starter workflow (without this action), but the advantage here is the unified approach to installation across 3 systems. Using a custom container has disadvantages on its own, too.
- 
- 
crystal: 1.1.0,crystal: 1.2Install a particular release of Crystal (if the full version is specified), or the latest patch version of a release series. 
- 
crystal: latest(default)Install the latest released version of Crystal. 
- 
crystal: nightlyInstall Crystal from the latest continuous build on crystal.git master. 
- 
crystal: "branch:foo/bar"Install Crystal from the latest maintenance build on crystal.git branch specified after branch:.
 
- 
- 
- 
shards: true(default)Ensure that some released version of Shards is available. This uses the build that's bundled with Crystal's releases. Other options are slower, as building Shards is a necessary step then. 
- 
shards: falseEnsure that shardsexecutable is not available.
- 
shards: latestBuild and install the latest released version of Shards. 
- 
shards: 0.14.0,shards: 0.16Build and install a particular release of Shards (if the full version is specified), or the latest patch version of a release series. 
- 
shards: nightlyBuild and install the latest commit of shards.git master. 
 
- 
- 
arch: x86_64,arch: x86(defaults to current OS arch)The architecture of the build of Crystal to download. 
- 
destination: some/pathThe directory to store Crystal in, after extracting. Will directly affect outputs.path(the default is in a temporary location).
- 
annotate: true(default)Display compilation and spec errors as GitHub code annotations. 
- 
token: ${{ github.token }}Personal access token (auto-populated). 
- 
crystal(${{ steps.some_step_id.outputs.crystal }})The actual version of Crystal (as a ref in crystal-lang/crystal.git) that was installed. 
- 
shards(${{ steps.some_step_id.outputs.shards }})The actual version of Shards (as a ref in crystal-lang/shards.git) that was installed. 
- 
path(${{ steps.some_step_id.outputs.path }})The path where Crystal was extracted to, so you can use '[path]/bin/crystal', '[path]/src' etc.