chore: switch to shared ioplane-base image - #1
Conversation
Add CODEOWNERS, dependabot config, issue templates (bug report, feature request), and pull request template.
…codeql, trivy, sonarcloud) Add GitHub Actions workflows for the full CI/CD pipeline: - Release gate: build + quality pipeline on push/PR - Coverage: lcov report + Codecov upload - Release: tag-triggered build, asset packaging, GitHub release - OpenSSF Scorecard: weekly security posture analysis - CodeQL: semantic code analysis for C/C++ - Trivy: container image vulnerability scanning - SonarCloud: code quality and security scanning
…, repository-conventions skills
…iagtool, WORKDIR Add missing development tools to the Containerfile: - ccache 4.11.3 for build acceleration with compression defaults - lcov 2.3 for code coverage reporting - hyperfine 1.19.0 for benchmarking - uftrace 0.19 for function-level profiling - ftracer for lightweight tracing with GDB integration - jq to base dnf install for JSON processing - diagtool and clang-tidy helper scripts from LLVM distribution - WORKDIR /workspace before CMD
…oc style, changelog, skills reference
…uild-release-assets, render-release-notes scripts
…ckages for uftrace build
- Rewrite Containerfile as thin layer on localhost/ioplane-base:latest - Add iohttpparser and liboas as installed ioplane ecosystem libraries - Move yyjson before liboas (build dependency order) - Remove duplicated base tooling (cmake, clang, gcc, gdb, valgrind, etc.) - Update CLAUDE.md with base image build instructions
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 88a2572f9d
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
| - uses: actions/checkout@v6 | ||
|
|
||
| - name: Build dev image | ||
| run: docker build -t iohttp-dev:ci -f deploy/podman/Containerfile . |
There was a problem hiding this comment.
Build shared base image before CI container build
This workflow now runs docker build -f deploy/podman/Containerfile ., but that Containerfile starts from localhost/ioplane-base:latest; no prior step in the job creates or pulls that base image. On GitHub-hosted runners the tag is absent, so image build fails before any checks run (the same pattern is used in the new coverage/release/trivy workflows).
Useful? React with 👍 / 👎.
| REPORT_DIR="${BUILD_DIR}/coverage" | ||
| PROFILE_DIR="${BUILD_DIR}/profiles" | ||
|
|
||
| cmake --preset clang-coverage |
There was a problem hiding this comment.
Use a defined CMake preset in coverage script
The script configures with cmake --preset clang-coverage, but the repository has no clang-coverage preset in CMakePresets.json. This exits immediately with “No such preset”, so scripts/run-coverage.sh cannot generate coverage output and the new coverage workflow cannot succeed.
Useful? React with 👍 / 👎.
| if BOX_DRAWING_RE.search(text): | ||
| fail(f"{path}: contains box-drawing characters; use Mermaid for diagrams") |
There was a problem hiding this comment.
Don’t fail docs lint on existing box-drawing content
This check unconditionally fails when any box-drawing glyph is present, but current numbered docs already contain those characters (for example docs/en/01-architecture.md and docs/ru/01-architecture.md). Since scripts/quality.sh now runs this linter in step 3, the quality/release gate fails on unchanged documentation and blocks CI until all affected docs are rewritten.
Useful? React with 👍 / 👎.
- Add scripts/lib/common.sh (shared quality gate functions from ioplane-base) - Rewrite quality.sh to source common.sh and use ioj_* functions - Add shellcheck gate step - All scripts pass shellcheck --severity=style
Unify agent instructions into a single AGENTS.md read by Claude Code, Codex and Gemini CLI. CLAUDE.md becomes a thin pointer importing it via @AGENTS.md.
Summary
localhost/ioplane-base:latestTest plan