Skip to content

Commit f3f7985

Browse files
committed
docs: add release documentation and automation workflows
1 parent e8d03ed commit f3f7985

3 files changed

Lines changed: 526 additions & 0 deletions

File tree

Lines changed: 234 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,234 @@
1+
name: Package Release
2+
3+
on:
4+
push:
5+
tags:
6+
- 'v*'
7+
8+
permissions:
9+
contents: write
10+
packages: write
11+
12+
jobs:
13+
release:
14+
runs-on: ubuntu-latest
15+
steps:
16+
- name: Checkout repository
17+
uses: actions/checkout@v4
18+
19+
- name: Install Rust toolchain
20+
uses: actions-rs/toolchain@v1
21+
with:
22+
toolchain: stable
23+
override: true
24+
components: rustfmt, clippy
25+
26+
- name: Install cargo-deb
27+
run: cargo install cargo-deb
28+
29+
- name: Install system dependencies
30+
run: |
31+
sudo apt-get update
32+
sudo apt-get install -y \
33+
build-essential \
34+
pkg-config \
35+
libssl-dev \
36+
zstd
37+
38+
- name: Cache cargo registry
39+
uses: actions/cache@v3
40+
with:
41+
path: |
42+
~/.cargo/registry
43+
~/.cargo/git
44+
target
45+
key: ${{ runner.os }}-cargo-${{ hashFiles('**/Cargo.lock') }}
46+
47+
- name: Create LICENSE file for cargo-deb
48+
run: cp LICENSE-Apache-2.0 LICENSE
49+
50+
- name: Temporarily disable panic abort for building
51+
run: |
52+
sed -i 's/panic = "abort"/# panic = "abort"/' .cargo/config.toml
53+
54+
- name: Build binaries
55+
run: |
56+
cargo build --release --package terraphim_server
57+
cargo build --release --package terraphim_tui --features repl-full
58+
59+
- name: Build Debian packages
60+
run: |
61+
cargo deb --package terraphim_server
62+
cargo deb --package terraphim_tui
63+
64+
- name: Build Arch Linux packages
65+
run: |
66+
# Create source tarball
67+
VERSION=${GITHUB_REF#refs/tags/v}
68+
git archive --format=tar.gz --prefix=terraphim-server-$VERSION/ $GITHUB_REF -o terraphim-server-$VERSION.tar.gz
69+
70+
# Create package structure
71+
mkdir -p arch-packages/terraphim-server/usr/bin
72+
mkdir -p arch-packages/terraphim-server/etc/terraphim-ai
73+
mkdir -p arch-packages/terraphim-server/usr/share/doc/terraphim-server
74+
mkdir -p arch-packages/terraphim-server/usr/share/licenses/terraphim-server
75+
76+
# Copy server files
77+
cp target/release/terraphim_server arch-packages/terraphim-server/usr/bin/
78+
cp terraphim_server/default/*.json arch-packages/terraphim-server/etc/terraphim-ai/
79+
cp README.md arch-packages/terraphim-server/usr/share/doc/terraphim-server/
80+
cp LICENSE-Apache-2.0 arch-packages/terraphim-server/usr/share/licenses/terraphim-server/
81+
82+
# Create server PKGINFO
83+
cat > arch-packages/terraphim-server/.PKGINFO << EOF
84+
pkgname = terraphim-server
85+
pkgbase = terraphim-server
86+
pkgver = $VERSION-1
87+
pkgdesc = Terraphim AI Server - Privacy-first AI assistant backend
88+
url = https://terraphim.ai
89+
builddate = $(date +%s)
90+
packager = Terraphim Contributors <team@terraphim.ai>
91+
size = $(stat -c%s target/release/terraphim_server)
92+
arch = x86_64
93+
license = Apache-2.0
94+
depend = glibc
95+
depend = openssl
96+
provides = terraphim-server
97+
EOF
98+
99+
# Create TUI package structure
100+
mkdir -p arch-packages/terraphim-tui/usr/bin
101+
mkdir -p arch-packages/terraphim-tui/usr/share/doc/terraphim-tui
102+
mkdir -p arch-packages/terraphim-tui/usr/share/licenses/terraphim-tui
103+
104+
# Copy TUI files
105+
cp target/release/terraphim-tui arch-packages/terraphim-tui/usr/bin/
106+
cp README.md arch-packages/terraphim-tui/usr/share/doc/terraphim-tui/
107+
cp LICENSE-Apache-2.0 arch-packages/terraphim-tui/usr/share/licenses/terraphim-tui/
108+
109+
# Create TUI PKGINFO
110+
cat > arch-packages/terraphim-tui/.PKGINFO << EOF
111+
pkgname = terraphim-tui
112+
pkgbase = terraphim-tui
113+
pkgver = $VERSION-1
114+
pkgdesc = Terraphim TUI - Terminal User Interface for Terraphim AI
115+
url = https://terraphim.ai
116+
builddate = $(date +%s)
117+
packager = Terraphim Contributors <team@terraphim.ai>
118+
size = $(stat -c%s target/release/terraphim-tui)
119+
arch = x86_64
120+
license = Apache-2.0
121+
depend = glibc
122+
depend = openssl
123+
provides = terraphim-tui
124+
EOF
125+
126+
# Create Arch packages
127+
cd arch-packages
128+
tar -I 'zstd -19' -cf terraphim-server-$VERSION-1-x86_64.pkg.tar.zst terraphim-server/
129+
tar -I 'zstd -19' -cf terraphim-tui-$VERSION-1-x86_64.pkg.tar.zst terraphim-tui/
130+
cd ..
131+
132+
- name: Create release directory
133+
run: |
134+
VERSION=${GITHUB_REF#refs/tags/v}
135+
mkdir -p release/$VERSION
136+
cp target/debian/*.deb release/$VERSION/
137+
cp arch-packages/*.pkg.tar.zst release/$VERSION/
138+
139+
- name: Create installation scripts
140+
run: |
141+
VERSION=${GITHUB_REF#refs/tags/v}
142+
cat > release/$VERSION/install.sh << 'EOF'
143+
#!/bin/bash
144+
# Terraphim AI Installation Script
145+
# Auto-generated for release VERSION
146+
147+
set -e
148+
VERSION="VERSION"
149+
150+
echo "Installing Terraphim AI $VERSION..."
151+
# Installation logic would go here
152+
EOF
153+
154+
chmod +x release/$VERSION/install.sh
155+
156+
- name: Create release README
157+
run: |
158+
VERSION=${GITHUB_REF#refs/tags/v}
159+
cat > release/$VERSION/README.md << EOF
160+
# Terraphim AI v$VERSION Installation Guide
161+
162+
## Quick Install Options
163+
164+
### Option 1: Docker (Recommended)
165+
curl -fsSL https://raw.githubusercontent.com/terraphim/terraphim-ai/main/release/$VERSION/docker-run.sh | bash
166+
167+
### Option 2: Debian/Ubuntu
168+
wget https://github.com/terraphim/terraphim-ai/releases/download/v$VERSION/terraphim-server_$VERSION-1_amd64.deb
169+
sudo dpkg -i terraphim-server_$VERSION-1_amd64.deb
170+
171+
### Option 3: Arch Linux
172+
wget https://github.com/terraphim/terraphim-ai/releases/download/v$VERSION/terraphim-server-$VERSION-1-x86_64.pkg.tar.zst
173+
sudo pacman -U terraphim-server-$VERSION-1-x86_64.pkg.tar.zst
174+
EOF
175+
176+
- name: Restore panic abort setting
177+
run: sed -i 's/# panic = "abort"/panic = "abort"/' .cargo/config.toml
178+
179+
- name: Create GitHub Release
180+
uses: softprops/action-gh-release@v1
181+
with:
182+
name: Release ${{ github.ref_name }}
183+
body: |
184+
## Terraphim AI ${{ github.ref_name }}
185+
186+
### 🚀 Installation Options
187+
188+
#### Docker (Recommended)
189+
```bash
190+
curl -fsSL https://raw.githubusercontent.com/terraphim/terraphim-ai/main/release/${{ github.ref_name }}/docker-run.sh | bash
191+
```
192+
193+
#### Debian/Ubuntu
194+
```bash
195+
wget https://github.com/terraphim/terraphim-ai/releases/download/${{ github.ref_name }}/terraphim-server_${{ github.ref_name }}-1_amd64.deb
196+
sudo dpkg -i terraphim-server_${{ github.ref_name }}-1_amd64.deb
197+
```
198+
199+
#### Arch Linux
200+
```bash
201+
wget https://github.com/terraphim/terraphim-ai/releases/download/${{ github.ref_name }}/terraphim-server-${{ github.ref_name }}-1-x86_64.pkg.tar.zst
202+
sudo pacman -U terraphim-server-${{ github.ref_name }}-1-x86_64.pkg.tar.zst
203+
```
204+
205+
### 📦 Available Packages
206+
- **terraphim-server**: Main HTTP API server with semantic search
207+
- **terraphim-tui**: Terminal User Interface with interactive REPL
208+
209+
### 🔧 Features
210+
- Privacy-first AI assistant that operates locally
211+
- Semantic search across multiple knowledge repositories
212+
- Knowledge graph integration with concept extraction
213+
214+
🤖 Automated release built with GitHub Actions
215+
files: |
216+
target/debian/*.deb
217+
arch-packages/*.pkg.tar.zst
218+
release/${{ github.ref_name }}/install.sh
219+
release/${{ github.ref_name }}/README.md
220+
draft: false
221+
prerelease: false
222+
env:
223+
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
224+
225+
- name: Clean up
226+
run: |
227+
rm -f LICENSE
228+
rm -f *.tar.gz
229+
rm -rf arch-packages/
230+
231+
- name: Notify release completion
232+
run: |
233+
echo "✅ Release ${{ github.ref_name }} completed successfully!"
234+
echo "📦 Available at: https://github.com/${{ github.repository }}/releases/tag/${{ github.ref_name }}"

0 commit comments

Comments
 (0)