mirror of
https://github.com/ModernRelay/omnigraph.git
synced 2026-07-12 03:12:11 +02:00
Some checks failed
CI / Classify Changes (push) Has been cancelled
CI / Check AGENTS.md Links (push) Has been cancelled
CI / Container Entrypoint (push) Has been cancelled
Release Edge / Prepare edge release (push) Has been cancelled
CI / Test Workspace (push) Has been cancelled
CI / Test omnigraph-server --features aws (push) Has been cancelled
CI / RustFS S3 Integration (cli) (push) Has been cancelled
CI / RustFS S3 Integration (cluster) (push) Has been cancelled
CI / RustFS S3 Integration (engine) (push) Has been cancelled
CI / RustFS S3 Integration (failpoints) (push) Has been cancelled
CI / RustFS S3 Integration (server) (push) Has been cancelled
Release Edge / Build edge omnigraph-linux-arm64 (push) Has been cancelled
Release Edge / Build edge omnigraph-linux-x86_64 (push) Has been cancelled
Release Edge / Build edge omnigraph-macos-arm64 (push) Has been cancelled
Release Edge / Build edge omnigraph-windows-x86_64 (push) Has been cancelled
Release Edge / Smoke Windows installer (push) Has been cancelled
* feat(ci): publish omnigraph-server image to Docker Hub alongside GHCR Docker Hub (docker.io/modernrelay/omnigraph-server) becomes the primary anonymous-pull distribution channel; the step no-ops when the DOCKERHUB_* secrets are unset so forks and the GHCR-only path keep working. Same latest-tag policy as GHCR (real tag pushes only, never dispatch backfills). Docs updated in the same PR (ci.md, deployment.md). * review fixes: preserve digest summary on Hub failure, tolerate unprefixed RepoDigests - Docker Hub push is continue-on-error with an explicit fail-gate AFTER the digest report, so a Hub failure still fails the run but can no longer suppress the summary for the already-pushed GHCR image. - RepoDigests may store Hub images without the docker.io/ prefix depending on Docker version; the digest grep now accepts both forms.
4.8 KiB
4.8 KiB
CI / Release Workflows
.github/workflows/:
- ci.yml: text-only changes skip; otherwise
cargo test --workspace --lockedon ubuntu-latest with protobuf compiler. OpenAPI-drift check that auto-commits the regeneratedopenapi.jsonfor same-repository PRs. Also runs the AGENTS.md cross-link integrity check (scripts/check-agents-md.sh).Test Workspacedoes not run on pull requests. The job is gatedif: github.event_name != 'pull_request', so the full workspace + failpoints suite runs only on push tomain(post-merge), onv*tags, and on manualworkflow_dispatch. This was a deliberate PR-latency trade-off — it was the slowest gate (~15min warm, up to the 75min cold ceiling).RustFS S3 Integrationneeds: test, so it is push-/dispatch-only for the same reason. The fast PR gates remain:Classify Changes,Check AGENTS.md Links, andTest omnigraph-server --features aws.Test Workspaceis correspondingly not in the required-check list (.github/branch-protection.json); see branch-protection.md.- Consequences to internalize: (1) a regression that the suite would catch now lands on
mainand turns the post-merge run red, rather than being blocked pre-merge —maincan briefly break, so runcargo test --workspace --lockedlocally before merging anything non-trivial, or trigger this workflow on your branch via the Actions "Run workflow" button. (2)openapi.jsonis no longer auto-regenerated on PRs (that step is inside thetestjob); for server/API changes, regenerate it locally withOMNIGRAPH_UPDATE_OPENAPI=1 cargo test -p omnigraph-server --test openapiand commit it, or the strict drift check fails the post-mergemainrun. - Applying this policy: removing
Test Workspacefrom the JSON is inert until an admin runs./scripts/apply-branch-protection.sh. Run it immediately after this change merges — until then GitHub still requires aTest Workspacecontext that no longer reports on PRs, which leaves every open PR permanently pending (the job-never-reports trap).
- AWS feature build job:
cargo build/test -p omnigraph-server --features awson ubuntu-latest. - Windows binary build job:
cargo build --release --locked -p omnigraph-cli -p omnigraph-serveron windows-latest with smoke checks foromnigraph.exe version,omnigraph-server.exe --help, and PowerShell installer syntax. - RustFS S3 integration: spins up RustFS in Docker and runs the bucket-gated S3 suites against it. Sharded across parallel runners (
strategy.matrix.shard:engine=s3_storage,server= servers3,cluster=s3_cluster,cli=local_cli_s3_end_to_end_init_load_read_flow,failpoints=failpoints s3_), one suite per shard withfail-fast: falseand a per-shardrust-cachekey. This job carries correctness suites only; the RFC-013write_cost_s3cost gate was removed (cost/perf contracts belong in a dedicated harness, not the correctness path). The tests run in seconds; the wall-clock is the per-shardcargo testcompile of the engine tree, so on a cold cache (anyCargo.lockchange) six serial steps summed past the old 75-min timeout — sharding makes wall-clock the slowest single shard (~40m cold, ~25m warm).needs: test, so likeTest Workspaceit is push-/dispatch-only. Not a required check. - release-edge.yml: on every push to main, retags
edge, builds Linux x86_64 / Linux arm64 / macOS arm64 archives and Windows x86_64 zip + sha256, publishes a rolling prerelease, then smoke-tests the Windows PowerShell installer againstedge. - release.yml: on
v*tags, builds the Linux x86_64 / Linux arm64 / macOS arm64 archives and Windows x86_64 zip release matrix, updates the Homebrew tap (scripts/update-homebrew-formula.sh) by pushing the regenerated formula toModernRelay/homebrew-tap, and smoke-tests the Windows PowerShell installer against the tag. - package.yml: manual ECR image build; emits two image tags per commit (
<sha>,<sha>-aws) via CodeBuild. - publish-image.yml: builds and pushes the public
omnigraph-servercontainer image to GHCR (ghcr.io/modernrelay/omnigraph-server:<tag>) and to Docker Hub (docker.io/modernrelay/omnigraph-server:<tag>, the primary anonymous-pull channel; skipped when theDOCKERHUB_*secrets are unset) onv*tag pushes, plus manualworkflow_dispatchwith an explicit existingv*tag to backfill an image for a past release. Compiles the binaries inside arust:1-bookwormbuilder container to match the Dockerfile's bookworm-slim runtime glibc (host-built ubuntu binaries do not run there), builds with--features omnigraph-server/aws, and moveslatestonly on real tag pushes — never on backfill dispatches. Separate from release.yml so an image-publish failure cannot block the binary release / Homebrew chain.