Skip to content

Latest commit

 

History

History
131 lines (90 loc) · 4.1 KB

File metadata and controls

131 lines (90 loc) · 4.1 KB

HackMe Release Pipeline

Build release bundle

# Prefer: VERSION="$(cat scripts/release/CURRENT_VERSION)"  # → 0.1.0-rc16
VERSION=0.1.0-rc16 bash scripts/release/make_release_bundle.sh

Output:

  • Windows zip includes hackme.exe, workerpoh.exe, minersign.exe, start_hackme_public_pool.bat (recommended), start_hackme_desktop_mode.bat, start_hackme_dashboard.bat, and RELEASE_QUICKSTART.md. Solo/local-only mining launchers were removed.
  • dist/release_<VERSION>/hackme_<VERSION>_windows.zip
  • dist/release_<VERSION>/hackme_<VERSION>_linux.tar.gz
  • dist/release_<VERSION>/SHA256SUMS.txt
  • dist/release_<VERSION>/BUILD_INFO.txt
  • dist/release_<VERSION>/RELEASE_MANIFEST.json
  • dist/release_<VERSION>/latest.json — L1 update channel (schema hackme.release.latest.v1)
  • dist/release_<VERSION>/SMOKE_REPORT.txt

Update channel (L1 — before apt)

Shared latest.json is generated by scripts/release/generate_latest_json.sh at the end of every bundle (and after refresh_release_manifest.sh).

Publish both:

  1. GitHub Release asset: latest.json (+ archives already published)
  2. Site mirror: https://hackme.tech/dist/latest.json (copy from this release, or symlink current)

Miners self-update (preserves .env / data / logs):

# Linux desktop or /opt/hackme
bash update_hackme_miner.sh
# HackMe OS in-place (same L1, INSTALL_DIR=/opt/hackme)
bash update_hackme_os_binaries.sh
# Offline / CI gate against local dist
bash scripts/tests/update_channel_gate.sh
# Windows (installer preferred; -PreferZip for zip-only installs)
powershell -ExecutionPolicy Bypass -File update_hackme_miner.ps1
# or: update_hackme_miner.bat

L2 (.deb / nfpm) and L3 (apt repo) — local tooling ready; do not publish until D0:

VERSION=0.1.0-rc16 bash scripts/release/linux/build_deb_from_dist.sh
bash scripts/release/apt/build_local_apt_repo.sh   # unsigned local file:// repo
# see scripts/release/apt/README.md

Optional local re-pack (inject updaters into linux tar, refresh SHA — no publish):

bash scripts/release/repack_linux_with_updaters.sh

Publish feed (when ready — not during dry-run):

bash scripts/ops/publish_latest_json.sh
UPLOAD_GH=1 bash scripts/ops/publish_latest_json.sh   # needs gh
NODE_SSH=hackme-vps bash scripts/ops/deploy_hackme_site.sh   # rsyncs dist/latest.json

Dashboard: Updates button → GET /api/updates/check (compares local Version to latest.json).

Verify existing bundle

bash scripts/release/verify_artifacts.sh "dist/release_<VERSION>"

Run smoke checks only

bash scripts/release/smoke_artifacts.sh "dist/release_<VERSION>"

Nightly-style pipeline

VERSION=nightly_$(date -u +%Y%m%dT%H%M%SZ) bash scripts/release/release_nightly.sh

Windows installer (Inno Setup) — recommended for miners

make_release_bundle.sh builds HackMe-Setup-<VERSION>.exe when Inno Setup is available.

Linux (Docker):

VERSION=0.1.0-rc16 bash scripts/release/make_release_bundle.sh
# or after bundle:
bash scripts/release/windows/build_installer.sh 0.1.0-rc16

Windows:

pwsh -File scripts/release/windows/build_installer.ps1 -Version 0.1.0-rc16

The wizard installs to Program Files\HackMe, creates Start menu + desktop shortcuts, writes registry keys, runs setup_hackme_miner.bat (pool token + hackme.env). ZIP remains as an advanced fallback.

HackMe OS (Linux mining rigs)

Bootable live ISO — CPU isolation, RT scheduler, GPU performance mode, auto rig profile, public pool worker.

export HACKME_RELEASE_POOL_MINER_TOKEN="$(cat .secrets/hackme_coordinator_worker_token)"
VERSION=0.1.0-rc16 bash scripts/release/iso/build_hackme_miner_iso.sh

→ dist/release_<VERSION>/HackMe-OS-<VERSION>-amd64.iso

Details: docs/HACKME_OS.md.

Publish site + downloads on VPS

From a machine with SSH access:

NODE_SSH=hackme-vps NODE_DEPLOY_DIR=/opt/hackme bash scripts/ops/deploy_hackme_site.sh

Set SKIP_DIST=1 for HTML-only. Default syncs web/site/ and full dist/.