Skip to content

Disable duplicate Nix workflows - keep only test.yml and release.yml #18

Disable duplicate Nix workflows - keep only test.yml and release.yml

Disable duplicate Nix workflows - keep only test.yml and release.yml #18

Workflow file for this run

name: Release Build
on:
push:
tags:
- "v*.*.*"
workflow_dispatch:
permissions:
contents: write
packages: write
issues: write
pull-requests: write
env:
CARGO_TERM_COLOR: always
RUST_BACKTRACE: 1
jobs:
create-release:
runs-on: ubuntu-latest
outputs:
upload_url: ${{ steps.create_release.outputs.upload_url }}
version: ${{ steps.version.outputs.version }}
steps:
- name: Get version from tag
id: version
run: echo "version=${GITHUB_REF#refs/tags/v}" >> $GITHUB_OUTPUT
- name: Create Release
id: create_release
uses: actions/create-release@v1
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
tag_name: ${{ github.ref_name }}
release_name: Release ${{ github.ref_name }}
draft: false
prerelease: false
build-linux:
needs: create-release
runs-on: ubuntu-latest
container:
image: ubuntu:latest
steps:
- uses: actions/checkout@v3
- name: Install build dependencies
run: |
apt-get update
apt-get install -y \
build-essential \
curl \
numactl \
pciutils \
ethtool \
dmidecode \
ipmitool \
pkg-config \
libssl-dev \
musl-tools \
musl-dev \
libssl-dev:amd64
- name: Install Rust toolchain
uses: actions-rs/toolchain@v1
with:
toolchain: stable
override: true
# Add the musl target
target: x86_64-unknown-linux-musl
- name: Set environment variables for musl
run: |
echo "OPENSSL_DIR=/usr" >> $GITHUB_ENV
echo "PKG_CONFIG_ALLOW_CROSS=1" >> $GITHUB_ENV
echo "PKG_CONFIG_PATH=/usr/lib/x86_64-linux-gnu/pkgconfig" >> $GITHUB_ENV
echo "PKG_CONFIG_SYSROOT_DIR=/" >> $GITHUB_ENV
- name: Build Release Binary (musl)
run: |
cargo build --release --target x86_64-unknown-linux-musl
mkdir -p build/release
# Rename the musl-based binary
cp target/x86_64-unknown-linux-musl/release/hardware_report build/release/hardware_report-linux-x86_64
# Optional: 'strip' the binary to reduce size
strip build/release/hardware_report-linux-x86_64
- name: Create tarball
run: |
cd build/release
tar czf hardware_report-linux-x86_64-${{ needs.create-release.outputs.version }}.tar.gz hardware_report-linux-x86_64
sha256sum hardware_report-linux-x86_64-${{ needs.create-release.outputs.version }}.tar.gz > hardware_report-linux-x86_64-${{ needs.create-release.outputs.version }}.tar.gz.sha256
- name: Upload Release Asset
uses: actions/upload-release-asset@v1
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
upload_url: ${{ needs.create-release.outputs.upload_url }}
asset_path: build/release/hardware_report-linux-x86_64-${{ needs.create-release.outputs.version }}.tar.gz
asset_name: hardware_report-linux-x86_64-${{ needs.create-release.outputs.version }}.tar.gz
asset_content_type: application/gzip
- name: Upload SHA256 checksum
uses: actions/upload-release-asset@v1
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
upload_url: ${{ needs.create-release.outputs.upload_url }}
asset_path: build/release/hardware_report-linux-x86_64-${{ needs.create-release.outputs.version }}.tar.gz.sha256
asset_name: hardware_report-linux-x86_64-${{ needs.create-release.outputs.version }}.tar.gz.sha256
asset_content_type: text/plain
build-debian:
needs: create-release
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- name: Install build dependencies
run: |
sudo apt-get update
sudo apt-get install -y \
build-essential \
curl \
pkg-config \
libssl-dev \
dpkg-dev \
debhelper
- name: Install Rust toolchain
uses: actions-rs/toolchain@v1
with:
toolchain: stable
override: true
- name: Build release binary
run: cargo build --release
- name: Create Debian package structure
run: |
VERSION=${{ needs.create-release.outputs.version }}
mkdir -p debian-pkg/hardware-report_${VERSION}_amd64/{DEBIAN,usr/bin,usr/share/doc/hardware-report}
# Copy binary
cp target/release/hardware_report debian-pkg/hardware-report_${VERSION}_amd64/usr/bin/
# Create control file
cat > debian-pkg/hardware-report_${VERSION}_amd64/DEBIAN/control << EOF
Package: hardware-report
Version: ${VERSION}
Architecture: amd64
Maintainer: Kenny Sheridan <kenny@sfcompute.com>
Description: Hardware information collection tool
A tool for generating detailed hardware information reports from Linux servers,
outputting the data in TOML format for infrastructure standardization.
Depends: numactl, ipmitool, ethtool, util-linux, pciutils
Priority: optional
Section: utils
EOF
# Create copyright file
cat > debian-pkg/hardware-report_${VERSION}_amd64/usr/share/doc/hardware-report/copyright << EOF
Format: https://www.debian.org/doc/packaging-manuals/copyright-format/1.0/
Upstream-Name: hardware_report
Source: https://github.com/sfcompute/hardware_report
Files: *
Copyright: 2024 Kenny Sheridan
License: MIT
EOF
# Build the package
dpkg-deb --build debian-pkg/hardware-report_${VERSION}_amd64
mv debian-pkg/hardware-report_${VERSION}_amd64.deb .
# Generate checksum
sha256sum hardware-report_${VERSION}_amd64.deb > hardware-report_${VERSION}_amd64.deb.sha256
- name: Upload Debian package
uses: actions/upload-release-asset@v1
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
upload_url: ${{ needs.create-release.outputs.upload_url }}
asset_path: hardware-report_${{ needs.create-release.outputs.version }}_amd64.deb
asset_name: hardware-report_${{ needs.create-release.outputs.version }}_amd64.deb
asset_content_type: application/vnd.debian.binary-package
- name: Upload Debian package checksum
uses: actions/upload-release-asset@v1
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
upload_url: ${{ needs.create-release.outputs.upload_url }}
asset_path: hardware-report_${{ needs.create-release.outputs.version }}_amd64.deb.sha256
asset_name: hardware-report_${{ needs.create-release.outputs.version }}_amd64.deb.sha256
asset_content_type: text/plain