Skip to content

Commit 0f124d0

Browse files
author
Zero
committed
Merge package manager release artifacts
2 parents d9e53a2 + 83c8751 commit 0f124d0

7 files changed

Lines changed: 205 additions & 8 deletions

File tree

.github/workflows/release.yml

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -81,6 +81,8 @@ jobs:
8181
path: |
8282
dist/*.tar.gz
8383
dist/*.zip
84+
dist/*.deb
85+
dist/*.rpm
8486
dist/SHA256SUMS
8587
8688
upload-s3:
@@ -110,7 +112,7 @@ jobs:
110112
run: |
111113
VERSION=${{ github.ref_name }}
112114
mkdir -p upload/${VERSION}
113-
find dist -maxdepth 1 -type f \( -name "*.tar.gz" -o -name "*.zip" -o -name "SHA256SUMS" \) | while read f; do
115+
find dist -maxdepth 1 -type f \( -name "*.tar.gz" -o -name "*.zip" -o -name "*.deb" -o -name "*.rpm" -o -name "SHA256SUMS" \) | while read f; do
114116
cp "$f" upload/${VERSION}/
115117
done
116118

.goreleaser.yml

Lines changed: 49 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,21 @@ builds:
2828
-s -w
2929
-X main.version={{ .Version }}
3030
-X github.com/KKingZero/Cobra-AI/zypheron-go/internal/updater.CurrentVersion={{ .Version }}
31+
- id: zypheron-linux-package
32+
dir: zypheron-go
33+
main: ./cmd/zypheron/main.go
34+
binary: zypheron
35+
env:
36+
- CGO_ENABLED=1
37+
goos:
38+
- linux
39+
goarch:
40+
- amd64
41+
ldflags:
42+
- >-
43+
-s -w
44+
-X main.version={{ .Version }}
45+
-X github.com/KKingZero/Cobra-AI/zypheron-go/internal/updater.CurrentVersion={{ .Version }}
3146
3247
archives:
3348
- id: default
@@ -41,10 +56,44 @@ archives:
4156
- zip
4257
name_template: >-
4358
{{ .ProjectName }}-{{ .Os }}-{{ .Arch }}
59+
files:
60+
- LICENSE
61+
- NOTICE
62+
- docs/INSTALL.md
63+
- docs/CLI_REFERENCE.md
4464

4565
checksum:
4666
name_template: SHA256SUMS
4767

68+
nfpms:
69+
- id: linux-packages
70+
package_name: zypheron
71+
ids:
72+
- zypheron-linux-package
73+
file_name_template: "{{ .ConventionalFileName }}"
74+
vendor: Zypheron
75+
homepage: https://github.com/KKingZero/Zypheron-CLI
76+
maintainer: Zypheron Maintainers <maintainers@zypheron.net>
77+
description: |-
78+
AI-native offensive security CLI for terminal-first recon, scanning,
79+
AI-assisted workflows, and operator tooling.
80+
license: MIT
81+
formats:
82+
- deb
83+
- rpm
84+
bindir: /usr/bin
85+
section: utils
86+
priority: optional
87+
contents:
88+
- src: LICENSE
89+
dst: /usr/share/doc/zypheron/LICENSE
90+
- src: NOTICE
91+
dst: /usr/share/doc/zypheron/NOTICE
92+
- src: docs/INSTALL.md
93+
dst: /usr/share/doc/zypheron/INSTALL.md
94+
- src: docs/CLI_REFERENCE.md
95+
dst: /usr/share/doc/zypheron/CLI_REFERENCE.md
96+
4897
changelog:
4998
sort: asc
5099
filters:

README.md

Lines changed: 37 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -54,7 +54,12 @@ Deferred for the OSS RC:
5454

5555
## Install
5656

57-
Three install paths — pick one.
57+
Package-manager artifacts are generated on tagged releases, but public apt,
58+
Homebrew, AUR, and DNF repository publishing requires the matching external
59+
repos/taps to be configured. Until those are live, use the source bootstrap or
60+
release binary installer.
61+
62+
Install paths — pick one.
5863

5964
### 1. Bootstrap from source (recommended)
6065

@@ -138,7 +143,36 @@ ZYPHERON_INSTALL_DIR="$HOME/.local/bin" curl -sSfL https://download.zypheron.net
138143

139144
The release installer detects OS/arch, downloads the matching archive + `SHA256SUMS`, verifies the checksum, and installs the `zypheron` binary.
140145

141-
### 3. Pentest tools only (per-distro installers)
146+
### 3. Package managers
147+
148+
Tagged releases build `.deb` and `.rpm` artifacts. Homebrew and AUR use
149+
source-build templates under [packaging/](packaging/) so SQLite-backed features
150+
are built with CGO enabled on the user's system.
151+
152+
Direct package artifact installs:
153+
154+
```bash
155+
# Debian / Ubuntu / Kali / Parrot
156+
curl -LO https://download.zypheron.net/v2.0.0/zypheron_2.0.0_linux_amd64.deb
157+
sudo apt install ./zypheron_2.0.0_linux_amd64.deb
158+
159+
# Fedora / RHEL-family
160+
curl -LO https://download.zypheron.net/v2.0.0/zypheron_2.0.0_linux_amd64.rpm
161+
sudo dnf install ./zypheron_2.0.0_linux_amd64.rpm
162+
```
163+
164+
Once the package repositories are published, the intended commands are:
165+
166+
```bash
167+
sudo apt install zypheron
168+
brew install KKingZero/zypheron/zypheron
169+
yay -S zypheron
170+
sudo dnf install zypheron
171+
```
172+
173+
See [docs/INSTALL.md](docs/INSTALL.md) for the publication checklist.
174+
175+
### 4. Pentest tools only (per-distro installers)
142176

143177
Standalone installers for external tools (hydra, nuclei, amass, metasploit, ropper, volatility3, one_gadget, ghidra, SecLists, rockyou). Use these when you already have the Zypheron CLI installed and just need the tool ecosystem.
144178

@@ -171,7 +205,7 @@ Arch-only flags:
171205
| `ZYPHERON_AUR_HELPER=paru\|yay` | Preferred AUR helper (default: paru, falls back to yay, bootstraps paru-bin if neither present) |
172206
| `ZYPHERON_ALLOW_AUR_SKIPREVIEW=1` | Skip interactive PKGBUILD review (off by default, not recommended) |
173207

174-
### 4. Optional: C2 frameworks (Sliver, Empire)
208+
### 5. Optional: C2 frameworks (Sliver, Empire)
175209

176210
Interactive installer, never auto-runs from the main installers.
177211

docs/INSTALL.md

Lines changed: 42 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -8,8 +8,9 @@ There are four supported install paths:
88

99
1. Source bootstrap — [setup-hybrid.sh](../scripts/install/setup-hybrid.sh) (Zypheron CLI itself)
1010
2. Release binary — [scripts/install.sh](../scripts/install.sh) (packaged CLI download)
11-
3. Pentest tool ecosystem — per-distro installers (`install-tools.sh`, `install-tools-arch.sh`, `install-tools-rpm.sh`)
12-
4. C2 frameworks — optional interactive [install-c2.sh](../scripts/install/install-c2.sh) (Sliver, Empire)
11+
3. Package managers — apt, Homebrew, AUR, and RPM/DNF artifacts from GoReleaser
12+
4. Pentest tool ecosystem — per-distro installers (`install-tools.sh`, `install-tools-arch.sh`, `install-tools-rpm.sh`)
13+
5. C2 frameworks — optional interactive [install-c2.sh](../scripts/install/install-c2.sh) (Sliver, Empire)
1314

1415
## Option 1: Bootstrap From Source
1516

@@ -60,7 +61,44 @@ The release installer:
6061
- verifies checksums when local checksum tools are available
6162
- installs the `zypheron` binary into the target directory
6263

63-
## Option 3: Pentest Tool Ecosystem
64+
## Option 3: Package Managers
65+
66+
Release tags build Linux package artifacts through GoReleaser:
67+
68+
- `.deb` packages for Debian, Ubuntu, Kali, Parrot, Mint, Pop!_OS, and other apt-based systems
69+
- `.rpm` packages for Fedora, RHEL, Rocky, Alma, CentOS Stream, Oracle Linux, Amazon Linux 2023, and other RPM/DNF systems
70+
71+
Homebrew and AUR use source-build templates under [packaging/](../packaging/) so SQLite-backed features are built with CGO enabled on the user's system.
72+
73+
Until the external package repositories are published, install the package artifacts directly from the release or CDN:
74+
75+
```bash
76+
# Debian / Ubuntu / Kali / Parrot
77+
curl -LO https://download.zypheron.net/v2.0.0/zypheron_2.0.0_linux_amd64.deb
78+
sudo apt install ./zypheron_2.0.0_linux_amd64.deb
79+
80+
# Fedora / RHEL-family
81+
curl -LO https://download.zypheron.net/v2.0.0/zypheron_2.0.0_linux_amd64.rpm
82+
sudo dnf install ./zypheron_2.0.0_linux_amd64.rpm
83+
```
84+
85+
Once package repositories are live, the intended commands are:
86+
87+
```bash
88+
sudo apt install zypheron
89+
brew install KKingZero/zypheron/zypheron
90+
yay -S zypheron
91+
sudo dnf install zypheron
92+
```
93+
94+
Publishing requirements:
95+
96+
- **apt** — upload generated `.deb` files to an apt repository provider such as Cloudsmith, Gemfury, Packagecloud, or a self-hosted signed apt repo.
97+
- **Homebrew** — create `KKingZero/homebrew-zypheron`, fill `packaging/homebrew/Formula/zypheron.rb.template` with the release version and source tarball SHA256, then publish it as `Formula/zypheron.rb`.
98+
- **AUR** — create the `zypheron` AUR package, fill `packaging/aur/PKGBUILD.template` with the release version and source tarball SHA256, then publish it with `.SRCINFO`.
99+
- **DNF/RPM** — generated `.rpm` files can be installed directly now; `dnf install zypheron` requires publishing them to a signed yum/dnf repository.
100+
101+
## Option 4: Pentest Tool Ecosystem
64102

65103
Standalone installers that provision the external tools Zypheron workflows call (hydra, john, nuclei, amass, metasploit, ropper, volatility3, one_gadget, ghidra, SecLists, rockyou).
66104

@@ -100,7 +138,7 @@ Arch-only flags:
100138

101139
Each installer writes a structured log to `$ZYPHERON_INSTALL_LOG`, tracks per-step status (ok / warn / fail / skip), and runs a verification pass confirming installed binaries resolve on `PATH`. Exit codes: `0` success, `1` any failed step, `2` fewer than three core tools verified.
102140

103-
## Option 4: C2 Frameworks (Sliver, Empire)
141+
## Option 5: C2 Frameworks (Sliver, Empire)
104142

105143
Never auto-installed. Run the interactive installer when you want them:
106144

packaging/README.md

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
Package manager publishing templates
2+
====================================
3+
4+
Tagged releases build `.deb` and `.rpm` artifacts through GoReleaser.
5+
6+
Homebrew and AUR should build from source for now because the CLI uses
7+
go-sqlite3, which requires CGO for SQLite-backed features. The current release
8+
archive build remains `CGO_ENABLED=0` to preserve existing cross-platform
9+
archive generation, so do not publish those archives as Homebrew or AUR binary
10+
packages until the release build is moved to CGO-capable cross builds or the
11+
SQLite driver is migrated to a pure-Go implementation.
12+
13+
Publishing checklist:
14+
15+
1. Create a tag such as `v2.0.0`.
16+
2. Compute the GitHub source tarball SHA256:
17+
`curl -L https://github.com/KKingZero/Zypheron-CLI/archive/refs/tags/v2.0.0.tar.gz | sha256sum`
18+
3. Replace `@VERSION@` and `@SOURCE_SHA256@` in the templates.
19+
4. Publish `homebrew/Formula/zypheron.rb.template` to `KKingZero/homebrew-zypheron`.
20+
5. Publish `aur/PKGBUILD.template` to the `zypheron` AUR package.

packaging/aur/PKGBUILD.template

Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
# Maintainer: Zypheron Maintainers <maintainers at zypheron dot net>
2+
3+
pkgname=zypheron
4+
pkgver=@VERSION@
5+
pkgrel=1
6+
pkgdesc="AI-native offensive security CLI for real operator workflows"
7+
arch=("x86_64" "aarch64")
8+
url="https://github.com/KKingZero/Zypheron-CLI"
9+
license=("MIT")
10+
depends=("glibc")
11+
makedepends=("go")
12+
source=("${pkgname}-${pkgver}.tar.gz::https://github.com/KKingZero/Zypheron-CLI/archive/refs/tags/v${pkgver}.tar.gz")
13+
sha256sums=("@SOURCE_SHA256@")
14+
15+
build() {
16+
cd "Zypheron-CLI-${pkgver}/zypheron-go"
17+
export CGO_ENABLED=1
18+
go build \
19+
-ldflags "-s -w -X main.version=${pkgver} -X github.com/KKingZero/Cobra-AI/zypheron-go/internal/updater.CurrentVersion=${pkgver}" \
20+
-o zypheron \
21+
./cmd/zypheron
22+
}
23+
24+
package() {
25+
cd "Zypheron-CLI-${pkgver}"
26+
install -Dm755 "zypheron-go/zypheron" "${pkgdir}/usr/bin/zypheron"
27+
install -Dm644 "LICENSE" "${pkgdir}/usr/share/licenses/zypheron/LICENSE"
28+
install -Dm644 "NOTICE" "${pkgdir}/usr/share/doc/zypheron/NOTICE"
29+
install -Dm644 "docs/INSTALL.md" "${pkgdir}/usr/share/doc/zypheron/INSTALL.md"
30+
install -Dm644 "docs/CLI_REFERENCE.md" "${pkgdir}/usr/share/doc/zypheron/CLI_REFERENCE.md"
31+
}
Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
class Zypheron < Formula
2+
desc "AI-native offensive security CLI for real operator workflows"
3+
homepage "https://github.com/KKingZero/Zypheron-CLI"
4+
url "https://github.com/KKingZero/Zypheron-CLI/archive/refs/tags/v@VERSION@.tar.gz"
5+
sha256 "@SOURCE_SHA256@"
6+
license "MIT"
7+
8+
depends_on "go" => :build
9+
10+
def install
11+
cd "zypheron-go" do
12+
ENV["CGO_ENABLED"] = "1"
13+
system "go", "build",
14+
"-ldflags", "-s -w -X main.version=#{version} -X github.com/KKingZero/Cobra-AI/zypheron-go/internal/updater.CurrentVersion=#{version}",
15+
"-o", bin/"zypheron",
16+
"./cmd/zypheron"
17+
end
18+
end
19+
20+
test do
21+
assert_match version.to_s, shell_output("#{bin}/zypheron --version")
22+
end
23+
end

0 commit comments

Comments
 (0)