minmon 0.13.0

An opinionated minimal monitoring and alarming tool
Documentation
name: Binary Release

on:
  push:
    tags: [ 'v*.*.*' ]

env:
  CARGO_TERM_COLOR: always
  RUSTFLAGS: -C target-feature=+crt-static

jobs:
  build:
    permissions:
      contents: read

    runs-on: ubuntu-latest
    name: Release for ${{ matrix.platform.target }}

    strategy:
      matrix:
        platform:
          - target: x86_64-unknown-linux-musl
            name: minmon-linux-x86_64
            cross: false
            command: "cargo"

          - target: armv7-unknown-linux-musleabi
            name: minmon-linux-armv7
            cross: true
            command: "cross"

          - target: aarch64-unknown-linux-musl
            name: minmon-linux-aarch64
            cross: true
            command: "cross"

    steps:
      - uses: actions/checkout@v6

      - name: Install musl-tools
        run: sudo apt update && sudo apt install -y musl-tools

      - name: Update rust toolchain
        run: rustup update

      - name: Install cargo-binstall
        if: ${{ matrix.platform.cross }}
        uses: cargo-bins/cargo-binstall@main

      - name: Add rust target
        run: rustup target add ${{ matrix.platform.target }}

      - name: Install cargo-cross
        if: ${{ matrix.platform.cross }}
        run: cargo binstall --no-confirm cross

      - name: Build minmon
        run: ${{ matrix.platform.command }} build --locked --release --no-default-features --features=rustls-tls,docker,http,smtp,systemd --target=${{ matrix.platform.target }}

      - name: Create compressed tar archive
        run: tar -czvf ${{ matrix.platform.name }}.tar.gz -C target/${{ matrix.platform.target }}/release minmon

      - name: Upload build artifact
        uses: actions/upload-artifact@v7
        with:
          name: ${{ matrix.platform.name }}
          path: ${{ matrix.platform.name }}.tar.gz

  release:
    permissions:
      contents: write
      id-token: write
      attestations: write

    needs: build
    runs-on: ubuntu-latest

    steps:
      - name: Download all artifacts
        uses: actions/download-artifact@v8

      - name: Attest Build Provenance
        uses: actions/attest-build-provenance@v4
        with:
          subject-path: '*/minmon-*.tar.gz'

      - name: Draft release
        uses: softprops/action-gh-release@v2
        with:
          draft: true
          generate_release_notes: true
          files: '*/minmon-*.tar.gz'