-
Notifications
You must be signed in to change notification settings - Fork 0
191 lines (175 loc) · 6.55 KB
/
intelnav-release.yml
File metadata and controls
191 lines (175 loc) · 6.55 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
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
name: IntelNav CLI release
# Builds prebuilt intelnav / intelnav-node / intelnav-chunk / bench_chain
# binaries for every (OS × arch) we realistically support, so a user
# can `curl | tar | run` instead of `git clone && cargo build`.
#
# Each job emits `intelnav-<os-arch>-<short-sha>.tar.gz` with:
# bin/intelnav — chat client (TUI)
# bin/intelnav-node — host daemon (libp2p + control RPC + chunk + forward)
# bin/intelnav-chunk — one-off chunker / fetcher CLI
# bin/bench_chain — local bench harness
# LICENSE
# README.md — short "how to pair with libllama" blurb
# INTELNAV_VERSION — git rev, read by `intelnav doctor`
#
# Paired with `IntelNav/llama.cpp@intelnav-release.yml`, which
# produces the matching `libllama-*.tar.gz` tarballs — together they
# form the complete offline-install bundle.
on:
workflow_dispatch:
inputs:
make_release:
description: "Upload artifacts to a GitHub Release (requires a tag)."
type: boolean
default: false
push:
tags:
- 'intelnav-cli-v*'
concurrency:
group: ${{ github.workflow }}-${{ github.head_ref && github.ref || github.run_id }}
cancel-in-progress: true
jobs:
# ---------------------------------------------------------------------
# linux-x64 — covers the mainstream Linux + WSL2 install.
# ---------------------------------------------------------------------
linux-x64:
runs-on: ubuntu-22.04
steps:
- uses: actions/checkout@v4
with: { fetch-depth: 0 }
- name: Install system deps
run: sudo apt-get update -qq && sudo apt-get install -y build-essential pkg-config libssl-dev
- name: Rust toolchain
run: rustc --version && cargo --version
- uses: actions/cache@v4
with:
path: |
~/.cargo/registry
~/.cargo/git
target
key: intelnav-release-linux-x64-${{ hashFiles('**/Cargo.lock') }}
restore-keys: intelnav-release-linux-x64-
- name: Build release binaries
run: |
cargo build --release \
-p intelnav-cli --bin intelnav \
-p intelnav-node --bin intelnav-node \
-p intelnav-model-store --features serve,p2p --bin intelnav-chunk
cargo build --release \
-p intelnav-runtime --example bench_chain
- name: Package
shell: bash
run: bash .github/actions/intelnav-cli-pack.sh linux-x64
- uses: actions/upload-artifact@v4
with:
name: intelnav-linux-x64
path: dist/*.tar.gz
# ---------------------------------------------------------------------
# macos-arm64 — M-series Macs (first M1 runner that ships on GH CI).
# ---------------------------------------------------------------------
macos-arm64:
runs-on: macos-14
steps:
- uses: actions/checkout@v4
with: { fetch-depth: 0 }
- name: Rust toolchain
run: rustc --version && cargo --version
- uses: actions/cache@v4
with:
path: |
~/.cargo/registry
~/.cargo/git
target
key: intelnav-release-macos-arm64-${{ hashFiles('**/Cargo.lock') }}
restore-keys: intelnav-release-macos-arm64-
- name: Build release binaries
run: |
cargo build --release \
-p intelnav-cli --bin intelnav \
-p intelnav-model-store --features serve,p2p --bin intelnav-chunk
cargo build --release \
-p intelnav-runtime --example bench_chain
- name: Package
shell: bash
run: bash .github/actions/intelnav-cli-pack.sh macos-arm64
- uses: actions/upload-artifact@v4
with:
name: intelnav-macos-arm64
path: dist/*.tar.gz
# ---------------------------------------------------------------------
# windows-x64 — MSVC toolchain, default for GH windows runners.
# ---------------------------------------------------------------------
windows-x64:
runs-on: windows-latest
steps:
- uses: actions/checkout@v4
with: { fetch-depth: 0 }
- name: Rust toolchain
run: rustc --version; cargo --version
- uses: actions/cache@v4
with:
path: |
~/.cargo/registry
~/.cargo/git
target
key: intelnav-release-windows-x64-${{ hashFiles('**/Cargo.lock') }}
restore-keys: intelnav-release-windows-x64-
- name: Build release binaries
shell: bash
run: |
cargo build --release \
-p intelnav-cli --bin intelnav \
-p intelnav-model-store --features serve,p2p --bin intelnav-chunk
cargo build --release \
-p intelnav-runtime --example bench_chain
- name: Package
shell: bash
run: bash .github/actions/intelnav-cli-pack.sh windows-x64
- uses: actions/upload-artifact@v4
with:
name: intelnav-windows-x64
path: dist/*.tar.gz
# ---------------------------------------------------------------------
# Publish to a GitHub Release on tag push. Skipped on push without a
# tag and on workflow_dispatch unless `make_release` is set.
# ---------------------------------------------------------------------
publish-release:
# Wait for all three target jobs but only require linux-x64 to
# succeed. macos / windows are nice-to-have in 0.1.x — if either
# fails we still ship a usable Linux release.
needs: [linux-x64, macos-arm64, windows-x64]
if: |
always() && needs.linux-x64.result == 'success' &&
(startsWith(github.ref, 'refs/tags/intelnav-cli-v') || inputs.make_release)
runs-on: ubuntu-22.04
permissions:
contents: write
attestations: write
id-token: write
steps:
- uses: actions/checkout@v4
- name: Download artifacts
uses: actions/download-artifact@v4
with:
path: artifacts
- name: Collect artifacts
id: collect
run: |
mkdir -p dist
find artifacts -name '*.tar.gz' -exec cp {} dist/ \;
ls -la dist/
{
echo "paths<<EOF"
ls dist/*.tar.gz
echo "EOF"
} >> "$GITHUB_OUTPUT"
- name: Generate build-provenance attestation
uses: actions/attest-build-provenance@v3
with:
subject-path: ${{ steps.collect.outputs.paths }}
- name: Publish
uses: softprops/action-gh-release@v2
with:
files: dist/*.tar.gz
fail_on_unmatched_files: true
generate_release_notes: true