uptime-kuma-dashboard/.forgejo/workflows/release.yaml
Marco De Araujo 845c49f664
Some checks failed
Multi-Platform Release Build / build (false, linux/arm64, native) (push) Successful in 5m35s
Multi-Platform Release Build / build (true, build-essential gcc-mingw-w64-x86-64 g++-mingw-w64-x86-64, map[CARGO_TARGET_X86_64_PC_WINDOWS_GNU_LINKER:x86_64-w64-mingw32-gcc CC_x86_64_pc_windows_gnu:x86_64-w64-mingw32-gcc], linux/amd64, x86_64-pc-windows-gnu) (push) Successful in 17m27s
Multi-Platform Release Build / build (true, build-essential libssl-dev pkg-config, map[OPENSSL_DIR:/usr PKG_CONFIG_ALLOW_CROSS:1 PKG_CONFIG_PATH:/usr/lib/pkgconfig:/usr/share/pkgconfig], linux/amd64, x86_64-unknown-linux-gnu) (push) Failing after 4m29s
Multi-Platform Release Build / create-release (push) Has been skipped
Testing workflow
2026-01-02 07:16:37 -04:00

181 lines
6.7 KiB
YAML

name: Multi-Platform Release Build
on:
push:
tags:
- "v*.*.*"
jobs:
build:
runs-on: docker
strategy:
fail-fast: false
matrix:
include:
- target: native
cross: false
platform: linux/arm64
- target: x86_64-unknown-linux-gnu
cross: true
platform: linux/amd64
deps: "build-essential libssl-dev pkg-config"
env:
PKG_CONFIG_ALLOW_CROSS: "1"
OPENSSL_DIR: /usr
PKG_CONFIG_PATH: "/usr/lib/pkgconfig:/usr/share/pkgconfig"
- target: x86_64-pc-windows-gnu
cross: true
platform: linux/amd64
deps: "build-essential gcc-mingw-w64-x86-64 g++-mingw-w64-x86-64"
env:
CC_x86_64_pc_windows_gnu: x86_64-w64-mingw32-gcc
CARGO_TARGET_X86_64_PC_WINDOWS_GNU_LINKER: x86_64-w64-mingw32-gcc
steps:
- name: Checkout code
uses: https://code.forgejo.org/actions/checkout@v4
- name: Setup Rust
uses: https://github.com/dtolnay/rust-toolchain@stable
with:
toolchain: stable
- name: Add Rust target
if: matrix.target != 'native' && !matrix.container
run: rustup target add ${{ matrix.target }}
- name: Cache Rust dependencies
uses: https://code.forgejo.org/actions/cache@v4
with:
path: |
~/.cargo/bin/
~/.cargo/registry/index/
~/.cargo/registry/cache/
~/.cargo/git/db/
target/
key: ${{ runner.os }}-cargo-${{ matrix.target }}-${{ hashFiles('**/Cargo.lock') }}
restore-keys: |
${{ runner.os }}-cargo-${{ matrix.target }}-
${{ runner.os }}-cargo-
- name: Native Build Release
if: matrix.target == 'native'
run: |
NATIVE_TARGET=$(rustc -vV | grep 'host:' | cut -d' ' -f2)
echo "Building for native target: $NATIVE_TARGET"
cargo build --release
TARGET_BINARY="target/release/uptime-kuma-dashboard"
OUTPUT_NAME="uptime-kuma-dashboard-$NATIVE_TARGET"
mkdir -p release-artifacts
cp "$TARGET_BINARY" "release-artifacts/$OUTPUT_NAME"
strip "release-artifacts/$OUTPUT_NAME" 2>/dev/null || true
chmod +x "release-artifacts/$OUTPUT_NAME"
ls -lh "release-artifacts/$OUTPUT_NAME"
- name: Cross-Build Linux x86_64 Release
if: matrix.target == 'x86_64-unknown-linux-gnu'
uses: docker://rust:slim
with:
args: >
sh -c "
echo 'OPENSSL_DIR:' $OPENSSL_DIR
apt-get update && apt-get install -y ${{ matrix.deps }} &&
rustup target add x86_64-unknown-linux-gnu &&
cargo build --release --target x86_64-unknown-linux-gnu &&
mkdir -p /github/workspace/release-artifacts &&
cp target/x86_64-unknown-linux-gnu/release/uptime-kuma-dashboard /github/workspace/release-artifacts/uptime-kuma-dashboard-x86_64-unknown-linux-gnu &&
strip /github/workspace/release-artifacts/uptime-kuma-dashboard-x86_64-unknown-linux-gnu &&
chmod +x /github/workspace/release-artifacts/uptime-kuma-dashboard-x86_64-unknown-linux-gnu &&
ls -lh /github/workspace/release-artifacts/"
env: ${{ matrix.env }}
options: --platform ${{ matrix.platform }}
- name: Cross-Build Windows x86_64 Release
if: matrix.target == 'x86_64-pc-windows-gnu'
uses: docker://rust:slim
with:
args: >
sh -c "
apt-get update && apt-get install -y ${{ matrix.deps }} &&
rustup target add x86_64-pc-windows-gnu &&
cargo build --release --target x86_64-pc-windows-gnu &&
mkdir -p /github/workspace/release-artifacts &&
cp target/x86_64-pc-windows-gnu/release/uptime-kuma-dashboard.exe /github/workspace/release-artifacts/uptime-kuma-dashboard-x86_64-pc-windows-gnu.exe &&
ls -lh /github/workspace/release-artifacts/"
env: ${{ matrix.env }}
options: --platform ${{ matrix.platform }}
- name: Upload artifacts
uses: https://data.forgejo.org/forgejo/upload-artifact@v4
with:
name: binary-${{ matrix.target }}
path: release-artifacts/
retention-days: 1
create-release:
runs-on: docker
needs: build
permissions:
contents: write
steps:
- name: Checkout code
uses: https://code.forgejo.org/actions/checkout@v4
- name: Download all artifacts
uses: https://data.forgejo.org/forgejo/download-artifact@v4
with:
path: all-artifacts/
- name: Prepare release artifacts
run: |
mkdir -p release-artifacts
find all-artifacts -type f -name "uptime-kuma-dashboard-*" -exec cp {} release-artifacts/ \;
ls -lh release-artifacts/
- name: Generate checksums
run: |
cd release-artifacts
sha256sum uptime-kuma-dashboard-* > SHA256SUMS.txt
cat SHA256SUMS.txt
- name: Create Release
uses: https://code.forgejo.org/actions/forgejo-release@v2
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
direction: upload
release-dir: release-artifacts
title: "Release ${{ github.ref_name }}"
tag: ${{ github.ref_name }}
release-notes:: |
## 🚀 Multi-Platform Release
Compiled on runner **${{ env.RUNNER_ARCH }}**
### 📦 Available Binaries
This release includes binaries for the following platforms:
- **Linux x86_64** (Intel/AMD 64-bit)
- **Linux ARM64** (aarch64) - Raspberry Pi 4, ARM servers
- **Windows x86_64** (64-bit)
### 🚀 How to use
#### Linux/ARM:
```bash
# Download the appropriate binary
wget https://your-forgejo.com/releases/download/${{ forgejo.ref_name }}/uptime-kuma-dashboard-<your-target>
# Make executable
chmod +x uptime-kuma-dashboard-*
# Run
./uptime-kuma-dashboard-* --base-url https://your-kuma --slug your-slug
```
#### Windows:
```powershell
# Download uptime-kuma-dashboard-x86_64-pc-windows-gnu.exe
# Run in PowerShell or CMD
.\uptime-kuma-dashboard-x86_64-pc-windows-gnu.exe --base-url https://your-kuma --slug your-slug
```
### ✅ Verify Checksums
```bash
sha256sum -c SHA256SUMS.txt
```
### 🏗️ Build Information
- Runner Architecture: ${{ env.RUNNER_ARCH }}
- Rust Version: 1.84.0
- Build Type: Release (optimized)