forked from ndhkaeru/codebase-mcp
-
Notifications
You must be signed in to change notification settings - Fork 0
153 lines (128 loc) · 4 KB
/
release.yml
File metadata and controls
153 lines (128 loc) · 4 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
153
name: Release
on:
push:
tags:
- "v*.*.*"
env:
CARGO_TERM_COLOR: always
CARGO_NET_RETRY: 10
RUSTUP_MAX_RETRIES: 10
permissions:
contents: write
jobs:
verify:
name: Verify release commit
runs-on: ubuntu-latest
timeout-minutes: 30
steps:
- uses: actions/checkout@v4
- name: Install Rust stable
uses: dtolnay/rust-toolchain@stable
- name: Cache Rust artifacts
uses: Swatinem/rust-cache@v2
- name: Run tests
run: cargo test --locked
build:
name: Build (${{ matrix.target }})
needs: verify
runs-on: ${{ matrix.os }}
timeout-minutes: 30
strategy:
fail-fast: false
matrix:
include:
- os: windows-latest
target: x86_64-pc-windows-msvc
artifact: codebase-mcp-windows-x64
binary: codebase-mcp.exe
package_name: codebase-mcp-windows-x64.exe
- os: windows-latest
target: aarch64-pc-windows-msvc
artifact: codebase-mcp-windows-arm64
binary: codebase-mcp.exe
package_name: codebase-mcp-windows-arm64.exe
steps:
- uses: actions/checkout@v4
- name: Install Rust stable
uses: dtolnay/rust-toolchain@stable
with:
targets: ${{ matrix.target }}
- name: Cache Rust artifacts
uses: Swatinem/rust-cache@v2
with:
key: ${{ matrix.target }}
- name: Build
run: cargo build --release --locked --target ${{ matrix.target }}
- name: Prepare release binary (Windows)
shell: pwsh
run: |
$packageName = "${{ matrix.package_name || format('{0}.exe', matrix.artifact) }}"
Copy-Item target/${{ matrix.target }}/release/${{ matrix.binary }} $packageName
- name: Upload artifact
uses: actions/upload-artifact@v4
with:
name: ${{ matrix.artifact }}
path: ${{ matrix.package_name || format('{0}.exe', matrix.artifact) }}
if-no-files-found: error
release:
name: Create GitHub Release
needs: build
runs-on: ubuntu-latest
steps:
- name: Checkout full history for tags and changelog
uses: actions/checkout@v4
with:
fetch-depth: 0
- name: Download all artifacts
uses: actions/download-artifact@v4
with:
path: artifacts
merge-multiple: true
- name: Generate checksums
run: |
cd artifacts
mapfile -d '' files < <(find . -maxdepth 1 -type f -name "*.exe" -print0 | sort -z)
if [ "${#files[@]}" -eq 0 ]; then
echo "No release artifacts found" >&2
exit 1
fi
sha256sum "${files[@]}" > codebase-mcp-${{ github.ref_name }}-sha256sums.txt
- name: Generate changelog
id: changelog
run: |
PREV_TAG=$(git tag --sort=-version:refname | sed -n '2p')
if [ -z "$PREV_TAG" ]; then
COMMITS=$(git log --pretty=format:"- %s (%h)" HEAD | head -50)
else
COMMITS=$(git log --pretty=format:"- %s (%h)" "${PREV_TAG}..HEAD" | head -50)
fi
{
echo "notes<<EOF"
echo "$COMMITS"
echo "EOF"
} >> "$GITHUB_OUTPUT"
- name: Create GitHub Release
uses: softprops/action-gh-release@v2
with:
name: ${{ github.ref_name }}
tag_name: ${{ github.ref_name }}
body: |
## What's Changed
${{ steps.changelog.outputs.notes }}
---
## Installation
Download the binary for your platform, then configure your MCP client:
### Claude Desktop
```json
{
"mcpServers": {
"codebase-mcp": {
"command": "/path/to/codebase-mcp",
"args": []
}
}
}
```
files: artifacts/**
draft: false
prerelease: ${{ contains(github.ref_name, '-') }}