Mining/.github/workflows/miner-release.yml
snider bce309b78d docs: Add miner suite documentation and release workflow
- Create miner/README.md documenting standalone C++ mining tools
- Update miner/core and miner/proxy READMEs with EUPL-1.2 license
- Add GitHub Actions workflow for multi-platform miner releases
- Add Makefile targets: build-miner, build-miner-core, build-miner-proxy
- Update main README with standalone miner usage instructions

The miner/ directory contains standalone CPU/GPU miner and stratum
proxy that can be used independently without the GUI. Pre-built
binaries will be published alongside Go releases.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-13 16:46:46 +00:00

251 lines
7 KiB
YAML

name: Miner Release
on:
push:
tags:
- 'miner-v*'
workflow_dispatch:
inputs:
version:
description: 'Version tag (e.g., 0.1.0)'
required: true
default: '0.1.0'
env:
BUILD_TYPE: Release
jobs:
build-linux:
name: Linux ${{ matrix.arch }}
runs-on: ubuntu-latest
strategy:
matrix:
include:
- arch: x64
cmake_arch: x86_64
- arch: arm64
cmake_arch: aarch64
steps:
- name: Checkout
uses: actions/checkout@v4
with:
submodules: recursive
- name: Install dependencies
run: |
sudo apt-get update
sudo apt-get install -y \
build-essential \
cmake \
libuv1-dev \
libssl-dev \
libhwloc-dev \
git
- name: Build miner core
working-directory: miner/core
run: |
mkdir -p build && cd build
cmake .. \
-DCMAKE_BUILD_TYPE=$BUILD_TYPE \
-DWITH_OPENCL=OFF \
-DWITH_CUDA=OFF
cmake --build . --config $BUILD_TYPE -j$(nproc)
- name: Build miner proxy
working-directory: miner/proxy
run: |
mkdir -p build && cd build
cmake .. -DCMAKE_BUILD_TYPE=$BUILD_TYPE
cmake --build . --config $BUILD_TYPE -j$(nproc)
- name: Package binaries
run: |
mkdir -p dist
cp miner/core/build/miner dist/
cp miner/proxy/build/miner-proxy dist/
chmod +x dist/*
cd dist
tar -czvf ../miner-linux-${{ matrix.arch }}.tar.gz *
- name: Upload artifact
uses: actions/upload-artifact@v4
with:
name: miner-linux-${{ matrix.arch }}
path: miner-linux-${{ matrix.arch }}.tar.gz
build-macos:
name: macOS ${{ matrix.arch }}
runs-on: macos-latest
strategy:
matrix:
include:
- arch: x64
cmake_osx_arch: x86_64
- arch: arm64
cmake_osx_arch: arm64
steps:
- name: Checkout
uses: actions/checkout@v4
with:
submodules: recursive
- name: Install dependencies
run: |
brew install cmake libuv openssl hwloc
- name: Build miner core
working-directory: miner/core
env:
OSX_ARCH: ${{ matrix.cmake_osx_arch }}
run: |
mkdir -p build && cd build
cmake .. \
-DCMAKE_BUILD_TYPE=$BUILD_TYPE \
-DCMAKE_OSX_ARCHITECTURES=$OSX_ARCH \
-DWITH_OPENCL=OFF \
-DWITH_CUDA=OFF \
-DOPENSSL_ROOT_DIR=$(brew --prefix openssl)
cmake --build . --config $BUILD_TYPE -j$(sysctl -n hw.ncpu)
- name: Build miner proxy
working-directory: miner/proxy
env:
OSX_ARCH: ${{ matrix.cmake_osx_arch }}
run: |
mkdir -p build && cd build
cmake .. \
-DCMAKE_BUILD_TYPE=$BUILD_TYPE \
-DCMAKE_OSX_ARCHITECTURES=$OSX_ARCH \
-DOPENSSL_ROOT_DIR=$(brew --prefix openssl)
cmake --build . --config $BUILD_TYPE -j$(sysctl -n hw.ncpu)
- name: Package binaries
run: |
mkdir -p dist
cp miner/core/build/miner dist/
cp miner/proxy/build/miner-proxy dist/
chmod +x dist/*
cd dist
tar -czvf ../miner-macos-${{ matrix.arch }}.tar.gz *
- name: Upload artifact
uses: actions/upload-artifact@v4
with:
name: miner-macos-${{ matrix.arch }}
path: miner-macos-${{ matrix.arch }}.tar.gz
build-windows:
name: Windows x64
runs-on: windows-latest
steps:
- name: Checkout
uses: actions/checkout@v4
with:
submodules: recursive
- name: Setup MSVC
uses: microsoft/setup-msbuild@v2
- name: Install dependencies
run: |
vcpkg install libuv:x64-windows openssl:x64-windows
- name: Build miner core
working-directory: miner/core
run: |
mkdir build
cd build
cmake .. `
-DCMAKE_BUILD_TYPE=$env:BUILD_TYPE `
-DCMAKE_TOOLCHAIN_FILE="$env:VCPKG_INSTALLATION_ROOT/scripts/buildsystems/vcpkg.cmake" `
-DWITH_OPENCL=OFF `
-DWITH_CUDA=OFF
cmake --build . --config $env:BUILD_TYPE
- name: Build miner proxy
working-directory: miner/proxy
run: |
mkdir build
cd build
cmake .. `
-DCMAKE_BUILD_TYPE=$env:BUILD_TYPE `
-DCMAKE_TOOLCHAIN_FILE="$env:VCPKG_INSTALLATION_ROOT/scripts/buildsystems/vcpkg.cmake"
cmake --build . --config $env:BUILD_TYPE
- name: Package binaries
run: |
mkdir dist
Copy-Item miner/core/build/$env:BUILD_TYPE/miner.exe dist/
Copy-Item miner/proxy/build/$env:BUILD_TYPE/miner-proxy.exe dist/
Compress-Archive -Path dist/* -DestinationPath miner-windows-x64.zip
- name: Upload artifact
uses: actions/upload-artifact@v4
with:
name: miner-windows-x64
path: miner-windows-x64.zip
release:
name: Create Release
needs: [build-linux, build-macos, build-windows]
runs-on: ubuntu-latest
if: startsWith(github.ref, 'refs/tags/')
steps:
- name: Download all artifacts
uses: actions/download-artifact@v4
with:
path: artifacts
- name: List artifacts
run: ls -la artifacts/*/
- name: Create Release
uses: softprops/action-gh-release@v1
with:
draft: false
prerelease: false
files: |
artifacts/miner-linux-x64/miner-linux-x64.tar.gz
artifacts/miner-linux-arm64/miner-linux-arm64.tar.gz
artifacts/miner-macos-x64/miner-macos-x64.tar.gz
artifacts/miner-macos-arm64/miner-macos-arm64.tar.gz
artifacts/miner-windows-x64/miner-windows-x64.zip
body: |
## Miner Suite
### Downloads
| Platform | Architecture | Download |
|----------|--------------|----------|
| Linux | x64 | `miner-linux-x64.tar.gz` |
| Linux | ARM64 | `miner-linux-arm64.tar.gz` |
| macOS | Intel | `miner-macos-x64.tar.gz` |
| macOS | Apple Silicon | `miner-macos-arm64.tar.gz` |
| Windows | x64 | `miner-windows-x64.zip` |
### Included Binaries
- `miner` - CPU/GPU cryptocurrency miner
- `miner-proxy` - Stratum proxy for mining farms
### Quick Start
```bash
# Extract
tar -xzf miner-linux-x64.tar.gz
# Run miner
./miner -o pool.example.com:3333 -u YOUR_WALLET -p x
# Run proxy
./miner-proxy -o pool.example.com:3333 -u YOUR_WALLET -b 0.0.0.0:3333
```
See [miner/README.md](miner/README.md) for full documentation.
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}