mirror of
https://github.com/0xrsydn/idx-cli.git
synced 2026-11-07 09:45:36 +00:00
The self-hosted publish timer has not produced an upload since it was enabled (manifest last updated 2026-07-14, a manual run), and failures were invisible. Make the job safe to run daily and easy to deploy: - publish-ownership-snapshot.sh: skip the upload when the published manifest already has the latest as-of date (pre-check via discover for XLSX sources, post-build check for legacy PDF); --force to override. Always ends with one line: RESULT: published|up-to-date <as-of> or RESULT: FAILED stage=<stage> (exit N). gh release create no longer requires a git checkout. - check-ownership-snapshot-freshness.sh: exit 1 when the published latest_as_of_date is older than --max-age-days (default 40). - flake: packages.ownership-publisher bundles the scripts with a pinned idx (curl-impersonate + mupdf) and jq/gh/sqlite/curl as bin/idx-ownership-publish and bin/idx-ownership-freshness, so hosts need no checkout, nix develop or cargo build at run time. Built in CI. - contrib/systemd + docs: daily 06:00 UTC timer, run semantics table, freshness alarm, packaged usage. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_017a5Cv5Z1NzdYKgKnTiAF4E
87 lines
1.9 KiB
YAML
87 lines
1.9 KiB
YAML
name: CI
|
|
|
|
on:
|
|
push:
|
|
branches: [main]
|
|
pull_request:
|
|
|
|
jobs:
|
|
test:
|
|
runs-on: ${{ matrix.os }}
|
|
strategy:
|
|
matrix:
|
|
os: [ubuntu-latest]
|
|
|
|
steps:
|
|
- name: Checkout
|
|
uses: actions/checkout@v4
|
|
|
|
- name: Install Rust stable
|
|
uses: dtolnay/rust-toolchain@stable
|
|
|
|
- name: Cache cargo + target
|
|
uses: swatinem/rust-cache@v2
|
|
|
|
- name: Check formatting
|
|
run: cargo fmt --check
|
|
|
|
- name: Clippy
|
|
run: cargo clippy -- -D warnings
|
|
|
|
- name: Test
|
|
run: cargo test
|
|
|
|
- name: Package
|
|
run: cargo package --locked
|
|
|
|
- name: Install Smoke
|
|
run: |
|
|
root="$(mktemp -d)"
|
|
cargo install --path . --locked --root "$root"
|
|
"$root/bin/idx" version
|
|
scripts/live-smoke.sh --bin "$root/bin/idx" --no-build --mode mock
|
|
|
|
nix:
|
|
runs-on: ubuntu-latest
|
|
|
|
steps:
|
|
- name: Checkout
|
|
uses: actions/checkout@v4
|
|
|
|
- name: Install Nix
|
|
uses: cachix/install-nix-action@v30
|
|
|
|
- name: Build default package
|
|
run: nix build .#default
|
|
|
|
- name: Run default app
|
|
run: nix run .#default -- version
|
|
|
|
- name: Build ownership publisher
|
|
run: |
|
|
nix build .#ownership-publisher
|
|
./result/bin/idx-ownership-publish --help
|
|
|
|
install-script:
|
|
runs-on: ${{ matrix.os }}
|
|
strategy:
|
|
fail-fast: false
|
|
matrix:
|
|
os: [ubuntu-latest, macos-14]
|
|
|
|
steps:
|
|
- name: Checkout
|
|
uses: actions/checkout@v4
|
|
|
|
- name: ShellCheck
|
|
if: runner.os == 'Linux'
|
|
run: |
|
|
shellcheck -s sh install.sh
|
|
shellcheck scripts/install-sh-test.sh
|
|
|
|
- name: Test install.sh with sh
|
|
run: scripts/install-sh-test.sh
|
|
|
|
- name: Test install.sh with dash
|
|
if: runner.os == 'Linux'
|
|
run: INSTALL_SH_SHELL=dash scripts/install-sh-test.sh
|