-
Notifications
You must be signed in to change notification settings - Fork 317
133 lines (117 loc) · 3.61 KB
/
test.yml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
on:
push:
tags:
- gping-v*
branches:
- master
pull_request:
workflow_dispatch:
name: CI
jobs:
cross_builds:
name: ${{ matrix.target }}
runs-on: ${{ matrix.os }}
strategy:
fail-fast: false
matrix:
include:
- target: aarch64-apple-darwin
os: macos-latest
- target: x86_64-apple-darwin
os: macos-latest
- target: x86_64-pc-windows-msvc
os: windows-latest
archive: zip
os: [ 'ubuntu-24.04' ]
target:
- armv7-linux-androideabi
- armv7-unknown-linux-gnueabihf
- armv7-unknown-linux-musleabihf
- x86_64-unknown-linux-gnu
- x86_64-unknown-linux-musl
- aarch64-unknown-linux-gnu
- aarch64-unknown-linux-musl
steps:
- uses: actions/checkout@v4
- name: Install Rust
id: rust
uses: actions-rust-lang/setup-rust-toolchain@v1
with:
cache: 'false'
cache-on-failure: false
target: ${{ matrix.target }}
- name: Setup Rust Caching
uses: Swatinem/rust-cache@v2
with:
cache-on-failure: false
prefix-key: ${{ matrix.target }}
key: ${{ steps.rust.outputs.cachekey }}
- name: Test
uses: houseabsolute/actions-rust-cross@v0
with:
command: test
target: ${{ matrix.target }}
args: --locked
- name: Sanity check
if: matrix.target == 'x86_64-unknown-linux-gnu' || matrix.target == 'aarch64-apple-darwin' || matrix.target == 'x86_64-pc-windows-msvc'
run: cargo run --target ${{ matrix.target }} -- --help
- name: Build release
uses: houseabsolute/actions-rust-cross@v0
if: startsWith(github.ref, 'refs/tags/') || github.event_name == 'workflow_dispatch'
with:
command: build
target: ${{ matrix.target }}
args: --release --locked
- name: Publish artifacts and release
if: startsWith(github.ref, 'refs/tags/') || github.event_name == 'workflow_dispatch'
uses: houseabsolute/actions-rust-release@v0
with:
executable-name: gping
target: ${{ matrix.target }}
extra-files: gping.1
create_release:
name: Release
runs-on: ubuntu-latest
if: startsWith(github.ref, 'refs/tags/') || github.event_name == 'workflow_dispatch'
needs:
- cross_builds
steps:
- name: Checkout sources
uses: actions/checkout@v4
- uses: actions/download-artifact@v4
with:
merge-multiple: true
- name: Publish
if: startsWith(github.ref, 'refs/tags/')
uses: softprops/action-gh-release@v2
with:
draft: false
files: |
gping.1
**/*.tar.gz
**/*.zip
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
checks:
name: Checks
runs-on: ubuntu-20.04
steps:
- name: Checkout sources
uses: actions/checkout@v4
- uses: actions/setup-python@v5
with:
python-version: '3.11'
- name: Install stable toolchain
uses: actions-rust-lang/setup-rust-toolchain@v1
with:
cache-on-failure: false
components: rustfmt,clippy
- name: Rustfmt Check
uses: actions-rust-lang/rustfmt@v1
- name: Run cargo check
if: success() || failure()
run: cargo check
- if: success() || failure()
run: cargo clippy --all-targets --all-features --locked -- -D warnings
- if: success() || failure()
uses: pre-commit/[email protected]