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