All checks were successful
check / check (push) Successful in 26s
Same fix as breadpad: build inside the shared pinned Arch container (bread-ecosystem/ci/, cloned at the sha in ci/bread-ecosystem.rev) instead of building natively against whatever's on the runner host. Adds check.yml (clippy + test on feature/**/fix/**) as a fast-fail gate before anything reaches main. Turning on clippy -D warnings for the first time surfaced 10 pre-existing warnings (int_plus_one, ptr_arg on &mut Vec params, collapsible_if, collapsible_match) across layout.rs, mirror.rs, profile.rs, and the config/mirror TUI views — all fixed exactly per clippy's suggested diffs, verified behavior-preserving (the mirror_view.rs collapse in particular: confirmed the "do nothing" fallthrough when mirror.result is None is unchanged, since that was already the fallthrough behavior of the original nested if with no matching else on the outer condition). Verified locally: build, clippy, and test all pass through the new container path.
75 lines
3.3 KiB
YAML
75 lines
3.3 KiB
YAML
name: dev release
|
|
|
|
# Publishes a dev-track build on every push to `main` (the trunk
|
|
# branch — there is no separate `dev` branch). See bread-ecosystem's
|
|
# docs/release-channels.md for the release-track policy this is part of.
|
|
on:
|
|
push:
|
|
branches: ['main']
|
|
|
|
jobs:
|
|
build:
|
|
runs-on: [self-hosted, hestia]
|
|
steps:
|
|
- name: checkout
|
|
run: |
|
|
set -euo pipefail
|
|
rm -rf src && mkdir src
|
|
git clone --branch main --depth 1 \
|
|
"https://git.breadway.dev/${GITHUB_REPOSITORY}.git" src
|
|
|
|
- name: build
|
|
run: cd src && bash ci/build.sh cargo build --release --locked
|
|
|
|
- name: compute dev version
|
|
run: |
|
|
set -euo pipefail
|
|
cd src
|
|
# Base the dev version off the latest published stable tag,
|
|
# not Cargo.toml — Cargo.toml can go stale relative to the last
|
|
# real release (seen in practice: breadbox/breadpad/breadcrumbs/
|
|
# breadpaper), which would make a dev build sort as OLDER than
|
|
# what's already installed and bakery would correctly refuse it.
|
|
LATEST_TAG="$(git ls-remote --tags --refs \
|
|
"https://git.breadway.dev/${GITHUB_REPOSITORY}.git" 'v*' \
|
|
| awk -F/ '{print $NF}' | sed 's/^v//' | (grep -v -- '-' || true) | sort -V | tail -1)"
|
|
if [ -n "${LATEST_TAG}" ]; then
|
|
CUR="${LATEST_TAG}"
|
|
else
|
|
CUR="$(grep -m1 '^version' Cargo.toml | sed -E 's/.*"(.*)".*/\1/')"
|
|
fi
|
|
IFS='.' read -r MA MI PA <<< "${CUR}"
|
|
SHA="$(git rev-parse --short HEAD)"
|
|
TS="$(date -u +%Y%m%d%H%M%S)"
|
|
echo "VERSION=${MA}.${MI}.$((PA + 1))-dev.${TS}+${SHA}" >> "$GITHUB_ENV"
|
|
|
|
- name: prepare artifacts
|
|
run: |
|
|
set -euo pipefail
|
|
PKG_DIR="/srv/breadway-dl/dev/breadmon/${VERSION}"
|
|
mkdir -p "${PKG_DIR}"
|
|
cp "src/target/release/breadmon" "${PKG_DIR}/breadmon-x86_64"
|
|
strip "${PKG_DIR}/breadmon-x86_64"
|
|
sha256sum "${PKG_DIR}/breadmon-x86_64" | awk '{print $1}' \
|
|
> "${PKG_DIR}/breadmon-x86_64.sha256"
|
|
cp src/bakery.toml "${PKG_DIR}/bakery.toml"
|
|
ln -sfn "${VERSION}" "/srv/breadway-dl/dev/breadmon/latest"
|
|
|
|
# No GitHub Release upload — dev, like the other non-stable track,
|
|
# is only distributed via dl.breadway.dev/dev/.
|
|
- name: regenerate dev index.json
|
|
env:
|
|
MINISIGN_SEC_KEY: ${{ secrets.BAKERY_MINISIGN_SEC_KEY_PATH }}
|
|
run: |
|
|
set -euo pipefail
|
|
if [ -z "${MINISIGN_SEC_KEY:-}" ]; then
|
|
echo "::error::BAKERY_MINISIGN_SEC_KEY_PATH secret not set — refusing to regenerate dev index.json unsigned (would leave a stale signature mismatched against fresh content and break bakery for everyone on the dev track)"
|
|
exit 1
|
|
fi
|
|
rm -rf /tmp/bread-ecosystem-ci-* 2>/dev/null || true
|
|
# mktemp: a fixed clone path races when multiple repos' dev/beta
|
|
# workflows run close together on the same self-hosted runner.
|
|
ECOSYSTEM_CI_DIR="$(mktemp -d /tmp/bread-ecosystem-ci-XXXXXX)"
|
|
git clone --branch main https://git.breadway.dev/Breadway/bread-ecosystem.git "${ECOSYSTEM_CI_DIR}"
|
|
TRACK=dev bash "${ECOSYSTEM_CI_DIR}/scripts/gen-index.sh"
|
|
rm -rf "${ECOSYSTEM_CI_DIR}"
|