Skip to content

fix: be more resilient LSP protocol errors #1265

fix: be more resilient LSP protocol errors

fix: be more resilient LSP protocol errors #1265

Workflow file for this run

name: CI
on:
pull_request:
push:
branches: main
jobs:
tests:
runs-on: ${{matrix.os}}
name: Test (${{matrix.os}}) - spitfire=${{matrix.spitfire}}
strategy:
matrix:
spitfire: [0, 1]
os:
- ubuntu-latest
- macos-14
steps:
- uses: actions/checkout@v4
- uses: DeterminateSystems/nix-installer-action@main
- uses: cachix/cachix-action@v14
with:
name: elixir-tools
authToken: '${{ secrets.CACHIX_AUTH_TOKEN }}'
skipPush: true
- uses: actions/cache@v4
with:
path: |
deps
_build
key: ${{ matrix.os }}-mix-${{ hashFiles('**/flake.nix') }}-${{ hashFiles('**/mix.lock') }}
restore-keys: |
${{ matrix.os }}-mix-${{ hashFiles('**/flake.nix') }}-
- name: Install Dependencies
run: nix develop --command bash -c 'mix deps.get'
- name: Start EPMD
run: nix develop --command bash -c 'epmd -daemon'
- name: Compile
env:
MIX_ENV: test
run: nix develop --command bash -c 'mix compile'
- name: remove tmp dir
run: rm -rf tmp
- name: Run Tests
env:
NEXTLS_SPITFIRE_ENABLED: ${{ matrix.spitfire }}
run: nix develop --command bash -c "elixir --erl '-kernel prevent_overlapping_partitions false' -S mix test --max-cases 1"
formatter:
runs-on: ubuntu-latest
name: Formatter
steps:
- uses: actions/checkout@v4
- uses: DeterminateSystems/nix-installer-action@main
- uses: cachix/cachix-action@v14
with:
name: elixir-tools
authToken: '${{ secrets.CACHIX_AUTH_TOKEN }}'
skipPush: true
- uses: actions/cache@v4
with:
path: |
deps
_build
key: ${{ runner.os }}-mix-${{ hashFiles('**/flake.nix') }}-${{ hashFiles('**/mix.lock') }}
restore-keys: |
${{ runner.os }}-mix-${{ hashFiles('**/flake.nix') }}-
- name: Install Dependencies
run: nix develop --command bash -c 'mix deps.get'
- name: Run Formatter
run: nix develop --command bash -c 'mix format --check-formatted'
credo:
runs-on: ubuntu-latest
name: Credo
steps:
- uses: actions/checkout@v4
- uses: DeterminateSystems/nix-installer-action@main
- uses: cachix/cachix-action@v14
with:
name: elixir-tools
authToken: '${{ secrets.CACHIX_AUTH_TOKEN }}'
skipPush: true
- uses: actions/cache@v4
with:
path: |
deps
_build
key: ${{ runner.os }}-mix-${{ hashFiles('**/flake.nix') }}-${{ hashFiles('**/mix.lock') }}
restore-keys: |
${{ runner.os }}-mix-${{ hashFiles('**/flake.nix') }}-
- name: Install Dependencies
run: nix develop --command bash -c 'mix deps.get'
- name: Run Formatter
run: nix develop --command bash -c 'mix credo'
dialyzer:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: DeterminateSystems/nix-installer-action@main
- uses: cachix/cachix-action@v14
with:
name: elixir-tools
authToken: '${{ secrets.CACHIX_AUTH_TOKEN }}'
skipPush: true
# Don't cache PLTs based on mix.lock hash, as Dialyzer can incrementally update even old ones
# Cache key based on Elixir & Erlang version (also useful when running in matrix)
- name: Restore PLT cache
uses: actions/cache/restore@v4
id: plt_cache
with:
key: ${{ runner.os }}-mix-${{ hashFiles('**/flake.nix') }}-${{ hashFiles('**/mix.lock') }}
restore-keys: |
${{ runner.os }}-mix-${{ hashFiles('**/flake.nix') }}-
path: |
priv/plts
- name: Install Dependencies
run: nix develop --command bash -c 'mix deps.get'
# Create PLTs if no cache was found
- name: Create PLTs
if: steps.plt_cache.outputs.cache-hit != 'true'
run: nix develop --command bash -c 'mix dialyzer --plt'
# By default, the GitHub Cache action will only save the cache if all steps in the job succeed,
# so we separate the cache restore and save steps in case running dialyzer fails.
- name: Save PLT cache
uses: actions/cache/save@v4
if: steps.plt_cache.outputs.cache-hit != 'true'
id: plt_cache_save
with:
key: ${{ runner.os }}-mix-${{ hashFiles('**/flake.nix') }}-${{ hashFiles('**/mix.lock') }}
path: |
priv/plts
- name: Run dialyzer
run: nix develop --command bash -c 'mix dialyzer --format github'
release-test:
runs-on: ${{matrix.os.name}}
name: Release Test (${{matrix.os.name}})
strategy:
matrix:
os:
- name: ubuntu-latest
target: linux_amd64
- name: macos-14
target: darwin_arm64
- name: macos-13
target: darwin_amd64
steps:
- uses: actions/checkout@v4
- uses: DeterminateSystems/nix-installer-action@main
- uses: cachix/cachix-action@v14
with:
name: elixir-tools
authToken: '${{ secrets.CACHIX_AUTH_TOKEN }}'
skipPush: true
- uses: actions/cache@v4
with:
path: |
deps
key: ${{ matrix.os.name }}-mix-prod-${{ hashFiles('**/flake.nix') }}-${{ hashFiles('**/mix.lock') }}
restore-keys: |
${{ matrix.os.name }}-mix-prod-${{ hashFiles('**/flake.nix') }}-
- name: Install Dependencies
run: nix develop --command bash -c 'mix deps.get --only prod'
- name: Release
env:
MIX_ENV: prod
BURRITO_TARGET: ${{ matrix.os.target }}
run: nix develop --command bash -c 'mix release'
nix-build:
strategy:
matrix:
os: [ubuntu-latest, macos-13, macos-14]
runs-on: ${{matrix.os}}
steps:
- uses: actions/checkout@v4
- uses: cachix/install-nix-action@V27
with:
github_access_token: ${{ secrets.GITHUB_TOKEN }}
- uses: cachix/cachix-action@v14
with:
name: elixir-tools
authToken: '${{ secrets.CACHIX_AUTH_TOKEN }}'
skipPush: true
- run: nix build --accept-flake-config
- run: nix flake check --accept-flake-config