Skip to content

Commit 07de1c1

Browse files
authored
Improve CI (#91)
1 parent c8ebd3d commit 07de1c1

File tree

5 files changed

+90
-40
lines changed

5 files changed

+90
-40
lines changed

.github/workflows/ci.yml

Lines changed: 77 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -1,42 +1,87 @@
1-
name: CI
1+
name: CI
22

33
on: push
44

5-
jobs:
6-
lint:
7-
runs-on: ubuntu-latest
8-
name: Lint (OTP ${{matrix.otp}} / Elixir ${{matrix.elixir}})
9-
strategy:
10-
matrix:
11-
otp: ['26']
12-
elixir: ['1.15']
13-
steps:
14-
- uses: actions/checkout@v3
15-
- uses: erlef/setup-beam@v1
16-
with:
17-
otp-version: ${{matrix.otp}}
18-
elixir-version: ${{matrix.elixir}}
19-
- run: mix deps.get
20-
- run: mix credo
21-
- run: mix dialyzer
22-
- run: mix format --check-formatted
23-
- run: mix docs 2>&1 | (! grep -q "warning:")
5+
env:
6+
MIX_ENV: test
7+
8+
permissions:
9+
contents: read
2410

11+
jobs:
2512
test:
2613
runs-on: ubuntu-latest
27-
name: Test (OTP ${{matrix.otp}} / Elixir ${{matrix.elixir}})
14+
name: CI on OTP ${{matrix.otp}} / Elixir ${{matrix.elixir}}
2815
strategy:
2916
matrix:
3017
otp: ['26']
31-
elixir: ['1.15']
32-
env:
33-
MIX_ENV: test
18+
elixir: ['1.16']
3419
steps:
35-
- uses: actions/checkout@v3
36-
- uses: erlef/setup-beam@v1
37-
with:
38-
otp-version: ${{matrix.otp}}
39-
elixir-version: ${{matrix.elixir}}
40-
- run: mix deps.get
41-
- run: mix coveralls.json
42-
- uses: codecov/codecov-action@v3
20+
- name: Set up Elixir
21+
uses: erlef/setup-beam@v1
22+
with:
23+
otp-version: ${{matrix.otp}}
24+
elixir-version: ${{matrix.elixir}}
25+
26+
- name: Checkout the code
27+
uses: actions/checkout@v4
28+
29+
- name: Cache dependencies
30+
uses: actions/cache@v4
31+
with:
32+
path: deps
33+
key: ${{ runner.os }}-mix-deps-${{ hashFiles('**/mix.lock') }}
34+
restore-keys: |
35+
${{ runner.os }}-mix-deps-
36+
37+
- name: Cache compiled build
38+
uses: actions/cache@v4
39+
with:
40+
path: _build
41+
key: ${{ runner.os }}-mix-build-${{ hashFiles('**/mix.lock') }}
42+
restore-keys: |
43+
${{ runner.os }}-mix-build-
44+
${{ runner.os }}-mix-
45+
46+
- name: Cache dialyzer artifacts
47+
uses: actions/cache@v4
48+
with:
49+
path: _dialyzer
50+
key: ${{ runner.os }}-dialyzer-${{ hashFiles('**/mix.lock') }}
51+
restore-keys: |
52+
${{ runner.os }}-dialyzer-
53+
54+
- name: Install dependencies
55+
run: mix deps.get
56+
57+
- name: Compile without warnings
58+
id: compile
59+
run: mix compile --warnings-as-errors
60+
61+
- name: Check formatting
62+
if: ${{ !cancelled() && steps.compile.outcome == 'success' }}
63+
run: mix format --check-formatted
64+
65+
- name: Check with credo
66+
if: ${{ !cancelled() && steps.compile.outcome == 'success' }}
67+
run: mix credo
68+
69+
- name: Check with dialyzer
70+
if: ${{ !cancelled() && steps.compile.outcome == 'success' }}
71+
run: mix dialyzer
72+
73+
- name: Check docs
74+
if: ${{ !cancelled() && steps.compile.outcome == 'success' }}
75+
run: mix docs 2>&1 | (! grep -q "warning:")
76+
77+
- name: Run tests and check test coverage
78+
if: ${{ !cancelled() && steps.compile.outcome == 'success' }}
79+
id: test
80+
run: mix coveralls.json
81+
82+
- name: Upload test coverage results to Codecov
83+
if: ${{ !cancelled() && steps.test.outcome == 'success' }}
84+
uses: codecov/codecov-action@v4
85+
with:
86+
fail_ci_if_error: true,
87+
token: ${{ secrets.CODECOV_TOKEN }}

.gitignore

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,5 +25,8 @@ ex_webrtc-*.tar
2525
# Temporary files, for example, from tests.
2626
/tmp/
2727

28+
# Localy stored dialyzer artifacts
29+
/_dialyzer/
30+
2831
# I hate MacOS
2932
.DS_Store

lib/ex_webrtc/media/ivf/writer.ex

Lines changed: 3 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -94,13 +94,9 @@ defmodule ExWebRTC.Media.IVF.Writer do
9494
len_frame = byte_size(frame.data)
9595
serialized_frame = <<len_frame::little-32, frame.timestamp::little-64, frame.data::binary>>
9696

97-
case IO.binwrite(writer.file, serialized_frame) do
98-
:ok ->
99-
writer = %{writer | frames_cnt: writer.frames_cnt + 1}
100-
{:ok, writer}
97+
:ok = IO.binwrite(writer.file, serialized_frame)
10198

102-
{:error, _reason} = error ->
103-
error
104-
end
99+
writer = %{writer | frames_cnt: writer.frames_cnt + 1}
100+
{:ok, writer}
105101
end
106102
end

mix.exs

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,12 @@ defmodule ExWebRTC.MixProject do
1919
docs: docs(),
2020
source_url: @source_url,
2121

22+
# dialyzer
23+
dialyzer: [
24+
plt_local_path: "_dialyzer",
25+
plt_core_path: "_dialyzer"
26+
],
27+
2228
# code coverage
2329
test_coverage: [tool: ExCoveralls],
2430
preferred_cli_env: [

test/test_helper.exs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
ExUnit.start(capture_log: true, assert_receive_timeout: 400)
1+
ExUnit.start(capture_log: true, assert_receive_timeout: 500)

0 commit comments

Comments
 (0)