Skip to content

Commit b9e1922

Browse files
authored
ci: add commit-lint in CI (modelcontextprotocol#50)
no need too many workflows's yaml file, for ci we just need one. Signed-off-by: jokemanfire <[email protected]>
1 parent 4e6b222 commit b9e1922

File tree

5 files changed

+149
-152
lines changed

5 files changed

+149
-152
lines changed

.github/workflows/ci.yml

Lines changed: 149 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,149 @@
1+
name: CI
2+
3+
on:
4+
push:
5+
branches: [ main, release ]
6+
tags:
7+
- 'release-*'
8+
pull_request:
9+
branches: [ main, release ]
10+
11+
env:
12+
CARGO_TERM_COLOR: always
13+
ARTIFACT_DIR: release-artifacts
14+
15+
jobs:
16+
commit-lint:
17+
name: Lint Commit Messages
18+
runs-on: ubuntu-latest
19+
if: github.event_name == 'pull_request'
20+
steps:
21+
- uses: actions/checkout@v3
22+
with:
23+
fetch-depth: 0
24+
25+
- name: Setup Node.js
26+
uses: actions/setup-node@v3
27+
with:
28+
node-version: '16'
29+
30+
- name: Install commitlint
31+
run: |
32+
npm install --save-dev @commitlint/cli @commitlint/config-conventional
33+
echo "module.exports = {extends: ['@commitlint/config-conventional']}" > commitlint.config.js
34+
35+
- name: Lint commit messages
36+
run: npx commitlint --from ${{ github.event.pull_request.base.sha }} --to ${{ github.event.pull_request.head.sha }} --verbose
37+
38+
fmt:
39+
name: Code Formatting
40+
runs-on: ubuntu-latest
41+
steps:
42+
- uses: actions/checkout@v3
43+
44+
- name: Install Rust
45+
uses: dtolnay/rust-toolchain@stable
46+
47+
- name: Check formatting
48+
run: cargo fmt --all -- --check
49+
50+
clippy:
51+
name: Lint with Clippy
52+
runs-on: ubuntu-latest
53+
steps:
54+
- uses: actions/checkout@v3
55+
56+
- name: Install Rust
57+
uses: dtolnay/rust-toolchain@stable
58+
59+
- name: Cache dependencies
60+
uses: actions/cache@v3
61+
with:
62+
path: |
63+
~/.cargo/registry
64+
~/.cargo/git
65+
target
66+
key: ${{ runner.os }}-cargo-${{ hashFiles('**/Cargo.lock') }}
67+
restore-keys: ${{ runner.os }}-cargo-
68+
69+
- name: Run clippy
70+
run: cargo clippy --all-targets --all-features -- -D warnings
71+
72+
test:
73+
name: Run Tests
74+
runs-on: ubuntu-latest
75+
steps:
76+
- uses: actions/checkout@v3
77+
78+
# install nodejs
79+
- name: Setup Node.js
80+
uses: actions/setup-node@v3
81+
with:
82+
node-version: '20'
83+
84+
- name: Install uv
85+
uses: astral-sh/setup-uv@v5
86+
87+
- name: Install Rust
88+
uses: dtolnay/rust-toolchain@stable
89+
90+
- name: Set up Python
91+
run: uv python install
92+
93+
- name: Create venv for python
94+
run: uv venv
95+
96+
- name: Cache dependencies
97+
uses: actions/cache@v3
98+
with:
99+
path: |
100+
~/.cargo/registry
101+
~/.cargo/git
102+
target
103+
key: ${{ runner.os }}-cargo-${{ hashFiles('**/Cargo.lock') }}
104+
restore-keys: ${{ runner.os }}-cargo-
105+
106+
- name: Run tests
107+
run: cargo test --all-features
108+
109+
release:
110+
name: Release crates
111+
runs-on: ubuntu-latest
112+
if: github.ref == 'refs/heads/release' || startsWith(github.ref, 'refs/tags/release')
113+
needs: [fmt, clippy, test]
114+
steps:
115+
- uses: actions/checkout@v3
116+
117+
- name: Install Rust
118+
uses: dtolnay/rust-toolchain@stable
119+
120+
- name: Cache dependencies
121+
uses: actions/cache@v3
122+
with:
123+
path: |
124+
~/.cargo/registry
125+
~/.cargo/git
126+
target
127+
key: ${{ runner.os }}-cargo-${{ hashFiles('**/Cargo.lock') }}
128+
restore-keys: ${{ runner.os }}-cargo-
129+
130+
- name: Cargo login
131+
run: cargo login ${{ secrets.CRATES_TOKEN }}
132+
133+
- name: Publish macros dry run
134+
run: cargo publish -p rmcp-macros --dry-run
135+
continue-on-error: true
136+
137+
- name: Publish rmcp dry run
138+
run: cargo publish -p rmcp --dry-run
139+
continue-on-error: true
140+
141+
- name: Publish macro
142+
if: ${{ startsWith(github.ref, 'refs/tags/release') }}
143+
continue-on-error: true
144+
run: cargo publish -p rmcp-macros
145+
146+
- name: Publish rmcp
147+
if: ${{ startsWith(github.ref, 'refs/tags/release') }}
148+
continue-on-error: true
149+
run: cargo publish -p rmcp

.github/workflows/clippy.yml

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

.github/workflows/fmt.yml

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

.github/workflows/release.yml

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

.github/workflows/test.yml

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

0 commit comments

Comments
 (0)