diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml new file mode 100644 index 0000000..db57e75 --- /dev/null +++ b/.github/workflows/ci.yml @@ -0,0 +1,49 @@ +name: Continuous Integration + +on: + - push: + branches: + - main + - pull_request + - workflow_dispatch + +jobs: + ci: + runs-on: ubuntu-20.04 + name: Erlang ${{matrix.otp}} / rebar ${{matrix.rebar3}} + strategy: + matrix: + otp: ['25', '26', '27'] + rebar3: ['3'] + # latest rebar3 versions that do not give problems with selected OTPs + include: + - otp: '23' + rebar3: '3.20.0' + - otp: '24' + rebar3: '3.23.0' + steps: + + - uses: actions/checkout@v2 + + - uses: erlef/setup-beam@v1 + with: + otp-version: ${{matrix.otp}} + rebar3-version: ${{matrix.rebar3}} + + - uses: actions/cache@v2 + env: + cache-name: rebar3 + with: + path: | + ~/.cache/rebar3 + _build + key: ci-${{runner.os}}-${{env.cache-name}}-otp_${{matrix.otp}}-rebar_${{matrix.rebar3}}-${{hashFiles('rebar.lock')}} + restore-keys: | + ci-${{runner.os}}-${{env.cache-name}}-otp_${{matrix.otp}}-rebar_${{matrix.rebar3}} + ci-${{runner.os}}-${{env.cache-name}}-otp_${{matrix.otp}} + + - name: Compile + run: rebar3 do clean, compile + + - name: Dialyzer + run: rebar3 dialyzer