forked from 0x676e67/http2
-
Notifications
You must be signed in to change notification settings - Fork 0
152 lines (125 loc) · 3.95 KB
/
CI.yml
File metadata and controls
152 lines (125 loc) · 3.95 KB
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
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
name: CI
on:
push:
tags: ["v*"]
pull_request:
workflow_dispatch:
env:
RUST_BACKTRACE: 1
permissions:
contents: write
packages: write
jobs:
style:
name: Check Style
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v6
- name: Install Rust
uses: dtolnay/rust-toolchain@stable
with:
components: rustfmt
- run: cargo fmt --all --check
test:
name: Test
needs: [style]
runs-on: ubuntu-latest
env:
RUSTFLAGS: -Dwarnings
strategy:
matrix:
rust:
- nightly
- beta
- stable
steps:
- name: Checkout
uses: actions/checkout@v6
- name: Install Rust (${{ matrix.rust }})
uses: dtolnay/rust-toolchain@master
with:
toolchain: ${{ matrix.rust }}
- name: Install libssl-dev
run: sudo apt-get update && sudo apt-get install libssl-dev
- name: Build without unstable flag
run: cargo build
- name: Check with unstable flag
run: cargo check --features unstable
- name: Check with tracing flag
run: cargo check --features tracing
- name: Check with parking_lot flag
run: cargo check --features parking_lot
- name: Run lib tests and doc tests
run: cargo test
- name: Run integration tests
run: cargo test -p h2-tests
- name: Run h2spec
run: ./ci/h2spec.sh
if: matrix.rust == 'stable'
#clippy_check:
# runs-on: ubuntu-latest
# steps:
# - uses: actions/checkout@v6
# - name: Run Clippy
# run: cargo clippy --all-targets --all-features
msrv:
name: Check MSRV
needs: [style]
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v6
- name: Get MSRV from package metadata
id: msrv
run: grep rust-version Cargo.toml | cut -d '"' -f2 | sed 's/^/version=/' >> $GITHUB_OUTPUT
- name: Install Rust (${{ steps.metadata.outputs.msrv }})
id: msrv-toolchain
uses: dtolnay/rust-toolchain@master
with:
toolchain: ${{ steps.msrv.outputs.version }}
- name: Pin some dependencies for MSRV
run: |
cargo update --package tokio-util --precise 0.7.11
cargo update --package tokio --precise 1.38.1
cargo update --package indexmap --precise 2.11.3
cargo update --package hashbrown --precise 0.15.0
cargo update --package once_cell --precise 1.20.3
cargo update --package tracing --precise 0.1.41
cargo update --package tracing-subscriber --precise 0.3.19
cargo update --package tracing-core --precise 0.1.33
cargo update --package itoa --precise 1.0.15
- run: cargo check -p http2
crates:
name: Release
runs-on: ubuntu-latest
environment: Linux
needs: [style, msrv, test]
steps:
- uses: actions/checkout@v6
- name: Get tag
if: startsWith(github.ref, 'refs/tags/')
id: tag
uses: dawidd6/action-get-tag@v1
with:
strip_v: true
- name: Tag Check
run: |
echo "tag=${{ steps.tag.outputs.tag }}" >> $GITHUB_ENV
echo "tag=${{ steps.tag.outputs.tag }}" >> $GITHUB_OUTPUT
if [ -z "${{ steps.tag.outputs.tag }}" ]; then
echo "tag=latest" >> $GITHUB_OUTPUT
echo "tag=latest" >> $GITHUB_ENV
fi
- uses: katyo/publish-crates@v2
if: startsWith(github.ref, 'refs/tags/')
with:
registry-token: ${{ secrets.CARGO_REGISTRY_TOKEN }}
ignore-unpublished-changes: true
- name: Upload binaries to GitHub Release
uses: softprops/action-gh-release@v3
if: startsWith(github.ref, 'refs/tags/')
with:
token: ${{ secrets.GITHUB_TOKEN }}
prerelease: ${{ contains(github.ref, 'alpha') || contains(github.ref, 'beta') }}
generate_release_notes: true