Some checks failed
Build / Debian DEB / build (debian-latest) (push) Successful in 10m56s
Build / Debian DEB / build (debian-oldstable) (push) Successful in 11m50s
Build / Debian DEB / build (ubuntu-latest) (push) Successful in 11m54s
Build / Debian DEB / build (ubuntu-previous) (push) Successful in 11m41s
Documentation / Build and Deploy Documentation (push) Successful in 1m55s
Release Docker Image / Build linux-amd64 (release) (push) Successful in 12m1s
Release Docker Image / Build linux-arm64 (release) (push) Successful in 12m30s
Build / Fedora RPM / build (push) Successful in 45m20s
Release Docker Image / Create Multi-arch Release Manifest (push) Successful in 18s
Release Docker Image / Build linux-amd64 (max-perf) (push) Successful in 54m32s
Release Docker Image / Build linux-arm64 (max-perf) (push) Successful in 30m1s
Release Docker Image / Release Binaries (push) Successful in 20s
Release Docker Image / Create Max-Perf Manifest (push) Successful in 24s
Release Docker Image / Mirror Images (push) Successful in 5m4s
Build / Static via Nix / Build conduwuit-haswell-linux-static-amd64-maxperf Binary (push) Failing after 4m48s
Build / Static via Nix / Build conduwuit-linux-static-amd64 Binary (push) Failing after 7m14s
Build / Static via Nix / Build conduwuit-linux-static-arm64 Binary (push) Failing after 4m49s
Build / Static via Nix / Build conduwuit-linux-static-arm64-maxperf Binary (push) Failing after 7m8s
Build / Static via Nix / Release Binaries (push) Has been skipped
tomfos.tr act-runner image removed the possibility to install the latest LLVM using an installer script, so let us also remove the detection and just live with the distro's clang image.
162 lines
6.3 KiB
YAML
162 lines
6.3 KiB
YAML
name: Build / Debian DEB
|
|
|
|
concurrency:
|
|
group: "build-debian-${{ forge.ref }}"
|
|
cancel-in-progress: true
|
|
|
|
on:
|
|
push:
|
|
tags:
|
|
- "v*.*.*"
|
|
workflow_dispatch:
|
|
schedule:
|
|
- cron: '30 0 * * *'
|
|
|
|
jobs:
|
|
build:
|
|
runs-on: ubuntu-latest
|
|
strategy:
|
|
matrix:
|
|
container: [ "ubuntu-latest", "ubuntu-previous", "debian-latest", "debian-oldstable" ]
|
|
container:
|
|
image: "ghcr.io/tcpipuk/act-runner:${{ matrix.container }}"
|
|
|
|
steps:
|
|
- name: Get Debian version
|
|
id: debian-version
|
|
run: |
|
|
VERSION=$(cat /etc/debian_version)
|
|
DISTRIBUTION=$(lsb_release -sc 2>/dev/null)
|
|
echo "version=$VERSION" >> $GITHUB_OUTPUT
|
|
echo "distribution=$DISTRIBUTION" >> $GITHUB_OUTPUT
|
|
echo "Debian distribution: $DISTRIBUTION ($VERSION)"
|
|
#- name: Work around llvm-project#153385
|
|
# id: llvm-workaround
|
|
# run: |
|
|
# if [ -f /usr/share/apt/default-sequoia.config ]; then
|
|
# echo "Applying workaround for llvm-project#153385"
|
|
# mkdir -p /etc/crypto-policies/back-ends/
|
|
# cp /usr/share/apt/default-sequoia.config /etc/crypto-policies/back-ends/apt-sequoia.config
|
|
# sed -i 's/\(sha1\.second_preimage_resistance = \)2026-02-01/\12026-06-01/' /etc/crypto-policies/back-ends/apt-sequoia.config
|
|
# else
|
|
# echo "No workaround needed for llvm-project#153385"
|
|
# fi
|
|
|
|
- name: Checkout repository with full history
|
|
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6
|
|
with:
|
|
fetch-depth: 0
|
|
ref: ${{ github.ref_name }}
|
|
|
|
- name: Cache Cargo registry
|
|
uses: actions/cache@27d5ce7f107fe9357f9df03efb73ab90386fccae # v5
|
|
with:
|
|
path: |
|
|
~/.cargo/registry
|
|
~/.cargo/git
|
|
key: cargo-debian-${{ steps.debian-version.outputs.distribution }}-${{ hashFiles('**/Cargo.lock') }}
|
|
restore-keys: |
|
|
cargo-debian-${{ steps.debian-version.outputs.distribution }}-
|
|
|
|
- name: Setup sccache
|
|
uses: https://git.tomfos.tr/tom/sccache-action@v1
|
|
|
|
- name: Configure sccache environment
|
|
run: |
|
|
echo "RUSTC_WRAPPER=sccache" >> $GITHUB_ENV
|
|
echo "CMAKE_C_COMPILER_LAUNCHER=sccache" >> $GITHUB_ENV
|
|
echo "CMAKE_CXX_COMPILER_LAUNCHER=sccache" >> $GITHUB_ENV
|
|
echo "SCCACHE_CACHE_SIZE=10G" >> $GITHUB_ENV
|
|
# Aggressive GC since cache restores don't increment counter
|
|
echo "CARGO_INCREMENTAL_GC_TRIGGER=5" >> $GITHUB_ENV
|
|
|
|
- name: Setup Rust
|
|
uses: ./.forgejo/actions/setup-rust
|
|
with:
|
|
github-token: ${{ secrets.GH_PUBLIC_RO }}
|
|
|
|
- name: Get package version and component
|
|
id: package-meta
|
|
run: |
|
|
BASE_VERSION=$(cargo metadata --no-deps --format-version 1 | jq -r ".packages[] | select(.name == \"conduwuit\").version" | sed 's/[^a-zA-Z0-9.+]/~/g')
|
|
# VERSION is the package version, COMPONENT is used in
|
|
# apt's repository config like a git repo branch
|
|
VERSION=$BASE_VERSION
|
|
if [[ ${{ forge.ref_name }} =~ ^v+[0-9]\.+[0-9]\.+[0-9]$ ]]; then
|
|
# Use the "stable" component for tagged semver releases
|
|
COMPONENT="stable"
|
|
elif [[ ${{ forge.ref_name }} =~ ^v+[0-9]\.+[0-9]\.+[0-9] ]]; then
|
|
# Use the "unstable" component for tagged semver pre-releases
|
|
COMPONENT="unstable"
|
|
else
|
|
# Use the "dev" component for development builds
|
|
SHA=$(echo "${{ forge.sha }}" | cut -c1-7)
|
|
DATE=$(date +%Y%m%d)
|
|
if [ "${{ forge.ref_name }}" = "main" ]; then
|
|
COMPONENT="dev"
|
|
else
|
|
# Use the sanitized ref name as the component for feature branches
|
|
COMPONENT="dev-$(echo '${{ forge.ref_name }}' | sed 's/[^a-zA-Z0-9.+]/-/g' | tr '[:upper:]' '[:lower:]' | cut -c1-30)"
|
|
fi
|
|
CLEAN_COMPONENT=$(echo $COMPONENT | sed 's/[^a-zA-Z0-9.+]/~/g')
|
|
VERSION="$BASE_VERSION~git$DATE.$SHA-$CLEAN_COMPONENT"
|
|
fi
|
|
echo "component=$COMPONENT" >> $GITHUB_OUTPUT
|
|
echo "version=$VERSION" >> $GITHUB_OUTPUT
|
|
echo "Component: $COMPONENT"
|
|
echo "Version: $VERSION"
|
|
|
|
- name: Install cargo-deb
|
|
run: |
|
|
if command -v cargo-deb &> /dev/null; then
|
|
echo "cargo-deb already available"
|
|
else
|
|
echo "Installing cargo-deb"
|
|
cargo-binstall -y --no-symlinks cargo-deb
|
|
fi
|
|
|
|
- name: Install build dependencies
|
|
run: |
|
|
apt-get update -y
|
|
# Build dependencies for rocksdb
|
|
apt-get install -y liburing-dev clang
|
|
|
|
- name: Run cargo-deb
|
|
id: cargo-deb
|
|
run: |
|
|
DEB_PATH=$(cargo deb --deb-version ${{ steps.package-meta.outputs.version }})
|
|
echo "path=$DEB_PATH" >> $GITHUB_OUTPUT
|
|
|
|
- name: Test deb installation
|
|
run: |
|
|
echo "Installing: ${{ steps.cargo-deb.outputs.path }}"
|
|
|
|
apt-get install -y ${{ steps.cargo-deb.outputs.path }}
|
|
|
|
dpkg -s continuwuity
|
|
|
|
[ -f /usr/bin/conduwuit ] && echo "✅ Binary installed successfully"
|
|
[ -f /usr/lib/systemd/system/conduwuit.service ] && echo "✅ Systemd service installed"
|
|
[ -f /etc/conduwuit/conduwuit.toml ] && echo "✅ Config file installed"
|
|
|
|
- name: Upload deb artifact
|
|
uses: forgejo/upload-artifact@v4
|
|
with:
|
|
name: continuwuity-${{ steps.debian-version.outputs.distribution }}
|
|
path: ${{ steps.cargo-deb.outputs.path }}
|
|
|
|
- name: Publish to Forgejo package registry
|
|
if: ${{ forge.event_name == 'push' || forge.event_name == 'workflow_dispatch' || forge.event_name == 'schedule' }}
|
|
run: |
|
|
OWNER="continuwuation"
|
|
DISTRIBUTION=${{ steps.debian-version.outputs.distribution }}
|
|
COMPONENT=${{ steps.package-meta.outputs.component }}
|
|
DEB=${{ steps.cargo-deb.outputs.path }}
|
|
|
|
echo "Publishing: $DEB in component $COMPONENT for distribution $DISTRIBUTION"
|
|
|
|
curl --fail-with-body \
|
|
-X PUT \
|
|
-H "Authorization: token ${{ secrets.BUILTIN_REGISTRY_PASSWORD || secrets.GITHUB_TOKEN }}" \
|
|
--upload-file "$DEB" \
|
|
"${{ forge.server_url }}/api/packages/$OWNER/debian/pool/$DISTRIBUTION/$COMPONENT/upload"
|