Skip to content

Commit 3c145c9

Browse files
Merge CI/CD files (#470)
* ci: Merge CI files into a single one * ci: Merge CD files into a single one * ci: Use a matrix
1 parent 5b3dee0 commit 3c145c9

File tree

6 files changed

+158
-302
lines changed

6 files changed

+158
-302
lines changed

.github/actions/package-arm/action.yml

Lines changed: 0 additions & 35 deletions
This file was deleted.

.github/actions/package/action.yml

Lines changed: 9 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -1,32 +1,28 @@
11
name: Package Release
2-
32
inputs:
4-
runs_on:
3+
arch:
4+
required: false
5+
github_token:
56
required: true
7+
features:
8+
required: false
69
target:
710
required: true
8-
github_token:
11+
runs_on:
912
required: true
1013

1114
runs:
1215
using: composite
1316
steps:
14-
- uses: dtolnay/rust-toolchain@stable
17+
- uses: ./.github/actions/setup-target
1518
with:
19+
arch: ${{ inputs.arch }}
1620
target: ${{ inputs.target }}
1721

18-
- uses: Swatinem/rust-cache@v2
19-
20-
- name: Install dependencies
21-
if: ${{ inputs.runs_on == 'ubuntu-22.04' }}
22-
shell: bash
23-
run: |
24-
sudo apt-get install musl-tools libudev-dev
25-
2622
- name: Build
2723
shell: bash
2824
run: |
29-
cargo build --release --all --target ${{ inputs.target }}
25+
cargo build --release --all --target ${{ inputs.target }} ${{ inputs.features }}
3026
3127
- name: Compress (Unix)
3228
if: ${{ inputs.runs_on != 'windows-2022' }}

.github/actions/setup-arm/action.yml renamed to .github/actions/setup-target/action.yml

Lines changed: 12 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
1-
name: Setup ARM Build Environment
2-
description: Setup an ARM build environment
1+
name: Setup target Build Environment
2+
description: Setup an ARM or x86_64 build environment
33

44
inputs:
55
arch:
@@ -16,6 +16,7 @@ runs:
1616
using: composite
1717
steps:
1818
- name: Replace target string
19+
if: inputs.arch != 'x86_64'
1920
uses: mad9000/actions-find-and-replace-string@3
2021
id: findandreplace
2122
with:
@@ -33,11 +34,13 @@ runs:
3334
- uses: Swatinem/rust-cache@v2
3435

3536
- name: Install Cross-Compile Support
37+
if: inputs.arch != 'x86_64'
3638
uses: junelife/gha-ubuntu-cross@v6
3739
with:
3840
arch: ${{ inputs.arch }}
3941

40-
- name: Install dependencies
42+
- name: Install dependencies (Raspberry Pi)
43+
if: inputs.arch != 'x86_64'
4144
shell: bash
4245
run: |
4346
sudo apt install -y \
@@ -53,7 +56,13 @@ runs:
5356
musl-tools \
5457
pkg-config
5558
59+
- name: Install dependencies (x86_64 linux)
60+
if: inputs.target == 'x86_64-unknown-linux-gnu' || inputs.target == 'x86_64-unknown-linux-musl'
61+
shell: bash
62+
run: sudo apt-get install musl-tools libudev-dev
63+
5664
- name: Set environment variables
65+
if: inputs.arch != 'x86_64'
5766
shell: bash
5867
run: |
5968
echo "PKG_CONFIG_ALLOW_SYSTEM_LIBS=0" >> $GITHUB_ENV

.github/workflows/ci.yml

Lines changed: 98 additions & 38 deletions
Original file line numberDiff line numberDiff line change
@@ -23,106 +23,166 @@ jobs:
2323
# Check
2424

2525
check:
26-
name: Check
26+
name: Check (${{ matrix.platform.target }})
2727
strategy:
2828
fail-fast: false
2929
matrix:
3030
platform:
3131
- os: "macos-12"
3232
target: "x86_64-apple-darwin"
33+
arch: "x86_64"
3334
- os: "ubuntu-22.04"
3435
target: "x86_64-unknown-linux-gnu"
36+
arch: "x86_64"
3537
- os: "ubuntu-22.04"
3638
target: "x86_64-unknown-linux-musl"
39+
arch: "x86_64"
3740
- os: "windows-2022"
3841
target: "x86_64-pc-windows-msvc"
42+
arch: "x86_64"
43+
- os: "ubuntu-22.04"
44+
target: "aarch64-unknown-linux-gnu"
45+
arch: "arm64"
46+
features: "--features=raspberry"
47+
- os: "ubuntu-22.04"
48+
target: "armv7-unknown-linux-gnueabihf"
49+
arch: "armhf"
50+
features: "--features=raspberry"
3951
runs-on: ${{ matrix.platform.os }}
4052

4153
steps:
42-
- name: Install dependencies
43-
if: matrix.platform.os == 'ubuntu-22.04'
44-
run: sudo apt-get install musl-tools libudev-dev
4554

46-
- uses: actions/checkout@v3
47-
- uses: dtolnay/rust-toolchain@stable
55+
- uses: actions/checkout@v4
56+
57+
- uses: ./.github/actions/setup-target
4858
with:
49-
targets: ${{ matrix.platform.target }}
50-
- uses: Swatinem/rust-cache@v2
59+
arch: ${{ matrix.platform.arch }}
60+
target: ${{ matrix.platform.target }}
5161

52-
- run: cargo check
62+
- run: cargo check ${{ matrix.platform.features }}
5363

5464
check-lib:
55-
name: Check (lib)
65+
name: Check lib (${{ matrix.platform.target }})
66+
strategy:
67+
fail-fast: false
68+
matrix:
69+
platform:
70+
- target: "x86_64-unknown-linux-gnu"
71+
arch: "x86_64"
72+
- target: "aarch64-unknown-linux-gnu"
73+
arch: "arm64"
74+
features: "--features=raspberry"
75+
- target: "armv7-unknown-linux-gnueabihf"
76+
arch: "armhf"
77+
features: "--features=raspberry"
5678
runs-on: ubuntu-22.04
5779

5880
steps:
59-
- name: Install dependencies
60-
run: sudo apt-get install musl-tools libudev-dev
6181

62-
- uses: actions/checkout@v3
63-
- uses: dtolnay/rust-toolchain@stable
64-
- uses: Swatinem/rust-cache@v2
82+
- uses: actions/checkout@v4
83+
84+
- uses: ./.github/actions/setup-target
85+
with:
86+
arch: ${{ matrix.platform.arch }}
87+
target: ${{ matrix.platform.target }}
6588

66-
- run: cargo check --lib --no-default-features
89+
- run: cargo check --lib --no-default-features ${{ matrix.platform.features }}
6790

6891
msrv:
69-
name: Check MSRV
92+
name: Check MSRV (${{ matrix.platform.target }})
93+
strategy:
94+
fail-fast: false
95+
matrix:
96+
platform:
97+
- target: "x86_64-unknown-linux-gnu"
98+
arch: "x86_64"
99+
- target: "aarch64-unknown-linux-gnu"
100+
arch: "arm64"
101+
features: "--features=raspberry"
102+
- target: "armv7-unknown-linux-gnueabihf"
103+
arch: "armhf"
104+
features: "--features=raspberry"
70105
runs-on: ubuntu-22.04
71106

72107
steps:
73-
- name: Install dependencies
74-
run: sudo apt-get install musl-tools libudev-dev
75108

76-
- uses: actions/checkout@v3
77-
- uses: dtolnay/rust-toolchain@v1
109+
- uses: actions/checkout@v4
110+
111+
- uses: ./.github/actions/setup-target
78112
with:
113+
arch: ${{ matrix.platform.arch }}
114+
target: ${{ matrix.platform.target }}
79115
toolchain: "1.65"
80-
- uses: Swatinem/rust-cache@v2
81116

82-
- run: cargo check
117+
- run: cargo check ${{ matrix.platform.features }}
83118

84119
# --------------------------------------------------------------------------
85120
# Test
86121

87122
test:
88-
name: Unit Tests
123+
name: Unit Tests (${{ matrix.platform.target }})
124+
strategy:
125+
fail-fast: false
126+
matrix:
127+
platform:
128+
- target: "x86_64-unknown-linux-gnu"
129+
arch: "x86_64"
130+
- target: "aarch64-unknown-linux-gnu"
131+
arch: "arm64"
132+
features: "--features=raspberry"
133+
- target: "armv7-unknown-linux-gnueabihf"
134+
arch: "armhf"
135+
features: "--features=raspberry"
89136
runs-on: ubuntu-22.04
90137

91138
steps:
92-
- name: Install dependencies
93-
run: sudo apt-get install musl-tools libudev-dev
94139

95-
- uses: actions/checkout@v3
96-
- uses: dtolnay/rust-toolchain@stable
97-
- uses: Swatinem/rust-cache@v2
140+
- uses: actions/checkout@v4
98141

99-
- run: cargo test --lib
142+
- uses: ./.github/actions/setup-target
143+
with:
144+
arch: ${{ matrix.platform.arch }}
145+
target: ${{ matrix.platform.target }}
146+
147+
- run: cargo test --lib ${{ matrix.platform.features }}
100148

101149
# --------------------------------------------------------------------------
102150
# Lint
103151

104152
clippy:
105-
name: Clippy
153+
name: Clippy (${{ matrix.platform.target }})
154+
strategy:
155+
fail-fast: false
156+
matrix:
157+
platform:
158+
- target: "x86_64-unknown-linux-gnu"
159+
arch: "x86_64"
160+
- target: "aarch64-unknown-linux-gnu"
161+
arch: "arm64"
162+
features: "--features=raspberry"
163+
- target: "armv7-unknown-linux-gnueabihf"
164+
arch: "armhf"
165+
features: "--features=raspberry"
106166
runs-on: ubuntu-22.04
107167

108168
steps:
109-
- name: Install dependencies
110-
run: sudo apt-get install musl-tools libudev-dev
111169

112-
- uses: actions/checkout@v3
113-
- uses: dtolnay/rust-toolchain@stable
170+
- uses: actions/checkout@v4
171+
172+
- uses: ./.github/actions/setup-target
114173
with:
174+
arch: ${{ matrix.platform.arch }}
175+
target: ${{ matrix.platform.target }}
115176
components: clippy
116-
- uses: Swatinem/rust-cache@v2
117177

118-
- run: cargo clippy -- -D warnings -A clippy::too_many_arguments
178+
- run: cargo clippy ${{ matrix.platform.features }} -- -D warnings -A clippy::too_many_arguments
119179

120180
rustfmt:
121181
name: Rustfmt
122182
runs-on: ubuntu-22.04
123183

124184
steps:
125-
- uses: actions/checkout@v3
185+
- uses: actions/checkout@v4
126186
- uses: dtolnay/rust-toolchain@stable
127187
with:
128188
components: rustfmt

0 commit comments

Comments
 (0)