Skip to content

chore: Align project structure and update dependencies - #12

Merged
cuioss-oliver merged 24 commits into
mainfrom
chore/align-with-oauthsheriff-structure
Mar 5, 2026
Merged

chore: Align project structure and update dependencies#12
cuioss-oliver merged 24 commits into
mainfrom
chore/align-with-oauthsheriff-structure

Conversation

@cuioss-oliver

Copy link
Copy Markdown
Collaborator

Summary

  • Module restructuring: Collapsed from 8 to 3 clean modules (api-sheriff, integration-tests, benchmarks)
  • OAuthSheriff alignment: Removed copy-paste artifacts, consolidated Dockerfiles, extracted shared properties
  • Dependency cleanup: Removed 17 unused dependencies, extracted oauth-sheriff version to root POM
  • Keycloak update: 26.2.5 → 26.5.4 with SHA256 digest pinning for supply-chain security
  • Management interface: Enabled Quarkus management on separate port 9000 for health/metrics
  • Benchmark pipeline: Implemented WRK-based HTTP benchmark execution with GitHub Pages reporting

Test plan

  • ./mvnw -Ppre-commit clean verify -DskipTests — passes
  • ./mvnw clean install — passes
  • ./mvnw clean verify -Pintegration-tests -pl integration-tests -am — 4/4 tests pass
  • ./mvnw clean verify -pl benchmarks -Pbenchmark — benchmarks run successfully

🤖 Generated with Claude Code

cuioss-oliver and others added 24 commits August 26, 2025 18:16
- Add npm caching to maven.yml workflow (all jobs)
- Add npm caching to maven-release.yml workflow
- Add npm caching to integration-tests.yml workflow
- Add npm caching to benchmark.yml workflow

This prevents "429 Too Many Requests" errors when downloading npm packages
from registry.npmjs.org during builds.

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
Structural refactoring to adopt OAuthSheriff's evolved build infrastructure,
benchmarking architecture, and CI/CD patterns.

P1 - Foundation upgrades:
- Parent POM: cui-java-parent 1.1.4 -> 1.4.4
- Quarkus: 3.23.3 -> 3.32.1, Node v20 -> v22, npm 10.5 -> 10.9.2
- BOM renamed: bom -> api-sheriff-bom, jjwt 0.12.6 -> 0.13.0
- DevUI SPI: quarkus-vertx-http-dev-ui-spi -> quarkus-devui-deployment-spi
- Added .mvn/jvm.config for JDK 22+ compatibility

P2 - Benchmarking architecture:
- Renamed benchmark-library -> benchmark-core
- Renamed benchmark-integration-quarkus -> benchmark-integration-wrk
- Added benchmarking-common dependency (0.4.1) for shared infrastructure
- Replaced old JMH integration code with WRK-based WrkResultPostProcessor
- Replaced 15 bash scripts with single Python benchmark-pages.py
- Removed all HTML/JSON template files (now generated by benchmarking-common)
- Upgraded: gson 2.13.2, hdrhistogram 2.2.2, commons-io 2.21.0

P3 - CI/CD workflow modernization:
- Expanded .github/project.yml with full build configuration
- Replaced inline workflows with reusable ones from cuioss-organization v0.6.2
- Modernized benchmark.yml: GitHub App tokens, Python script, direct git push
- Added dependabot-auto-merge, dependency-review, scorecards, claude workflows

P5 - Documentation:
- Restructured CLAUDE.md to stub referencing agents.md
- Created agents.md with full development guidance
- Removed obsolete doc/ai-rules.md

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Address Gemini review comment: the verifyCuiLoggingGuidelines command
referenced /Users/oliver/git/cui-llm-rules/standards/logging which is
not portable. Changed to a repository-relative reference.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Consolidate all AI guidance back into CLAUDE.md instead of
splitting across two files.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Replace the stub+agents.md split with a single comprehensive CLAUDE.md
covering build commands, code standards, pre-1.0 rules, logging,
testing, OpenRewrite markers, security, and git workflow.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
The module contained only a trivial stub benchmark (single getStatus() call)
with no meaningful JMH tests. Remove it entirely along with all references
in CI workflows, Python script, CLAUDE.md, and JMH dependency management.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
API Sheriff is a standalone Quarkus app, not a reusable extension.
The extension pattern (runtime/deployment split, BOM, separate library)
was unnecessary overhead inherited from the OAuthSheriff template.

Changes:
- Merge api-sheriff-library + api-sheriff-quarkus into unified api-sheriff/
- Replace @buildstep processor with @RegisterForReflection annotations
- Delete bom/, deployment module, ApiSheriffRecorder, ApiSheriffProcessor
- Promote integration-tests from nested to root-level module
- Absorb dependency/plugin management from BOM + quarkus-parent into root POM
- Update Docker, CI/CD, scripts, and docs for new structure

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Remove unnecessary parent POM nesting (benchmarking/benchmark-integration-wrk)
and promote to a single top-level benchmark-integration module. Replace
performance-scoring.adoc with a link to the OAuthSheriff original.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Move application code (QuarkusMain, REST resource) from
api-sheriff-integration-tests into api-sheriff module, making it the
standalone deployable application that produces the native executable.

- Move TestApplication → ApiSheriffApplication in api-sheriff
- Move TestResource → GatewayResource (@path("/api")) in gateway package
- Add application.properties with production defaults to api-sheriff
- Add native profile, Jandex plugin, resteasy-jackson and prometheus deps
- Simplify integration-tests to pure test coordinator (no compile Quarkus deps)
- Update Dockerfiles to COPY runner from api-sheriff/target
- Switch distroless Dockerfile to ubi9-quarkus-micro-image
- Move all test-specific config to docker-compose environment variables
- Update build/start scripts to target api-sheriff module
- Fix OpenRewrite markers in GatewayResource and BaseIntegrationTest

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
…k tests

- Add api-sheriff/src/main/docker/Dockerfile.native for production
  deployments without baked-in certificates
- Fix ApiSheriffIntegrationIT paths from /test/ to /api/ and update
  response assertion to match GatewayResource output
- Add GatewayEndpointBenchmarkTest for /api/health and /api/info
  WRK output parsing validation
- Fix ../mvnw path bug in benchmark-integration pom.xml
- Add deployment section to README.adoc and docker build commands
  to CLAUDE.md

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- Remove quarkus.virtual-threads.shutdown-timeout (non-existent property,
  caused duration parse error)
- Remove api.sheriff.health.enabled (not wired to any @ConfigProperty)

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Test what we deliver: production Dockerfiles now live in
api-sheriff/src/main/docker/ and integration tests use them directly.
Test-specific configuration (TLS truststore, certificates) is injected
at docker-compose level instead of being baked into separate Dockerfiles.

- Dockerfile.native: distroless production image (digest-pinned, nonroot,
  no shell, no baked-in certs)
- Dockerfile.native.jfr: UBI micro with JFR profiling support
- Delete redundant test Dockerfiles from integration-tests module
- docker-compose: use production images with command: for truststore flags
  and volume mounts for certificates
- Fix Dockerfile reference in pom.xml and start script

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Align with OAuthSheriff pattern: Quarkus app logs via file logging to
mounted volume, Keycloak logs via docker logs dump before container
shutdown. Both log files land in target/ for CI artifact collection.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Remove jjwt (3), easymock, weld-junit5, quarkus-config-yaml,
quarkus-hibernate-validator, quarkus-security, quarkus-scheduler,
quarkus-vertx-http, jakarta.servlet-api, jakarta.json-api,
junit-jupiter-params, parsson, rest-assured, slf4j bridges,
awaitility, jboss-logmanager from api-sheriff. Remove dev-ui-tests
from integration-tests. Remove version properties and BOM entries
from parent. None were imported in any Java source file.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Move benchmarking-common version to root-level version.oauth-sheriff
property. Remove gson, HdrHistogram, and commons-io — all transitive
from benchmarking-common.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Wire complete WRK benchmark pipeline following OAuthSheriff's proven
pattern: Dockerfile.wrk, Lua scripts, shell runners, Prometheus
monitoring, and Maven exec-plugin integration to invoke
WrkResultPostProcessor.

New files:
- Dockerfile.wrk (Alpine + wrk + Lua scripts)
- Lua scripts for /q/health/live and /api/health
- Shell scripts: pre-flight health check + 2 benchmark runners
- prometheus.yml for metrics scraping

Modified:
- docker-compose.yml: add Prometheus and WRK services
- pom.xml: add 4 exec-maven-plugin executions in benchmark profile

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
…cessor

Remove 8 unused constants referencing JWT validation endpoints that don't
exist in API Sheriff. Replace test resource files with actual API Sheriff
benchmark data (healthLiveCheck, gatewayHealth) and update all tests to
match the real benchmark names and URLs.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
…d dns:api-sheriff to SAN

Remove dead JVM flags (no effect in native image), redundant QUARKUS_LOG_LEVEL,
verbose network driver_opts (all defaults). Rename network jwt-integration to
api-sheriff. Add dns:api-sheriff to certificate SAN for WRK container connectivity.
Regenerate certificates with updated DNAME and SAN.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
All issuer, health, metrics, and cache properties were copied from
OAuthSheriff but have no @ConfigProperty or @ConfigMapping backing in
the codebase. Quarkus silently ignores them at runtime.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Move JFR-specific Docker configuration (image tag, dockerfile, volume)
out of the base docker-compose.yml into a separate override file, matching
the OAuthSheriff pattern. Shell scripts and Maven profiles now use
`-f` compose flags instead of environment variable substitution.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
…9000

Separate operational endpoints (health, metrics) from application traffic
by enabling the Quarkus management interface on a dedicated plain HTTP port.
This follows the Keycloak pattern already in the project, eliminates TLS
complexity for probes, and allows Prometheus to scrape without
insecure_skip_verify.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Redundant prefix removed since the module is already inside the API-Sheriff
repository. Updated all references across POMs, GitHub Actions workflows,
shell scripts, and CLAUDE.md.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Shorter, cleaner name since the repository context already implies
API Sheriff. Updated all references across POMs, GitHub Actions
workflows, shell scripts, Dockerfile, documentation, and CLAUDE.md.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Pin image to digest for supply-chain security:
quay.io/keycloak/keycloak:26.5.4@sha256:ae8efb0d218d8921334b03a2dbee7069a0b868240691c50a3ffc9f42fabba8b4

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
@gemini-code-assist

Copy link
Copy Markdown

Summary of Changes

Hello, I'm Gemini Code Assist1! I'm currently reviewing this pull request and will post my feedback shortly. In the meantime, here's a summary to help you and other reviewers quickly get up to speed!

This pull request focuses on a major refactoring effort to align the project's architecture with modern best practices and enhance its security and performance capabilities. The changes consolidate the module structure, update critical dependencies, and introduce a robust benchmarking system. The overall impact is a cleaner, more secure, and more performant API Gateway application, with improved development and operational tooling.

Highlights

  • Module Restructuring: The project structure has been significantly streamlined, collapsing from 8 modules to 3 core modules: api-sheriff (the main application), integration-tests, and benchmarks. This simplifies the project layout and improves maintainability.
  • Dependency Management and Cleanup: 17 unused dependencies were removed, and the oauth-sheriff version is now managed in the root POM. Keycloak has been updated to version 26.5.4 with SHA256 digest pinning for enhanced supply-chain security.
  • Quarkus Management Interface: A dedicated Quarkus management interface has been enabled on a separate port (9000) for health and metrics endpoints, following best practices for operational monitoring.
  • WRK-based Benchmarking Pipeline: A new WRK-based HTTP benchmarking pipeline has been implemented, complete with GitHub Pages reporting for performance trend analysis. This replaces the previous JMH-based integration benchmarks.
  • Updated AI Guidance: The CLAUDE.md file has been comprehensively updated to provide detailed guidance for AI tools, covering project overview, build commands, pre-1.0 rules, code standards, logging, testing, Javadoc, OpenRewrite markers, security, dependency management, and Git workflow.
Changelog
  • .github/project.yml
    • Updated project metadata, release configuration, Maven build settings, SonarQube integration, GitHub Pages deployment, and GitHub automation rules.
  • .mvn/jvm.config
    • Added JVM argument to enable native access for all unnamed modules.
  • CLAUDE.md
    • Updated AI development guidelines with new project overview, build commands, pre-1.0 rules, code standards, logging, testing, Javadoc, OpenRewrite markers, security, dependency management, and Git workflow.
  • README.adoc
    • Updated project description, module overview, and deployment instructions to reflect the new project structure and api-sheriff artifact name.
  • api-sheriff/pom.xml
    • Renamed from api-sheriff-library/pom.xml.
    • Updated artifactId, name, and description to reflect the unified application module.
    • Removed dependencyManagement section, consolidating BOM management to the root POM.
    • Integrated Quarkus core, REST, health, and Micrometer dependencies.
    • Removed various test-scoped dependencies, streamlining the test classpath.
    • Added Quarkus Maven plugin and Jandex plugin for Quarkus-specific build steps.
    • Introduced a 'native' profile for native image builds.
  • api-sheriff/src/main/docker/Dockerfile.native
    • Added production Dockerfile for native executable, using a distroless base image and exposing application and management ports.
  • api-sheriff/src/main/docker/Dockerfile.native.jfr
    • Added JFR-enabled Dockerfile for native executable, using a UBI micro base image and exposing application and management ports.
  • api-sheriff/src/main/java/de/cuioss/sheriff/api/ApiSheriff.java
    • Renamed from api-sheriff-library/src/main/java/de/cuioss/sheriff/api/ApiSheriff.java.
    • Updated copyright header.
    • Added @RegisterForReflection annotation for native image compatibility.
    • Refactored logger instance name from log to LOGGER.
  • api-sheriff/src/main/java/de/cuioss/sheriff/api/ApiSheriffApplication.java
    • Renamed from api-sheriff-quarkus-parent/api-sheriff-quarkus-integration-tests/src/main/java/de/cuioss/sheriff/api/integration/TestApplication.java.
    • Updated copyright header, package, class name, and Javadoc to reflect its role as the main application entry point.
  • api-sheriff/src/main/java/de/cuioss/sheriff/api/gateway/GatewayResource.java
    • Renamed from api-sheriff-quarkus-parent/api-sheriff-quarkus-integration-tests/src/main/java/de/cuioss/sheriff/api/integration/TestResource.java.
    • Updated copyright header, package, class name, and Javadoc.
    • Changed base path from /test to /api.
    • Updated info endpoint message to reflect its role as a gateway.
    • Removed unnecessary try-catch block from the health endpoint.
  • api-sheriff/src/main/java/de/cuioss/sheriff/api/gateway/package-info.java
    • Added package-info.java for the new gateway package.
  • api-sheriff/src/main/java/de/cuioss/sheriff/api/package-info.java
    • Renamed from api-sheriff-library/src/main/java/de/cuioss/sheriff/api/package-info.java.
    • Updated copyright header.
  • api-sheriff/src/main/java/de/cuioss/sheriff/api/quarkus/ApiSheriffProducer.java
    • Renamed from api-sheriff-quarkus-parent/api-sheriff-quarkus/src/main/java/de/cuioss/sheriff/api/quarkus/ApiSheriffProducer.java.
    • Updated copyright header.
    • Added @RegisterForReflection annotation for native image compatibility.
    • Refactored logger instance name from log to LOGGER.
  • api-sheriff/src/main/java/de/cuioss/sheriff/api/quarkus/package-info.java
    • Renamed from api-sheriff-library/src/main/java/module-info.java.
    • Updated copyright header and Javadoc for the Quarkus CDI integration package.
  • api-sheriff/src/main/resources/application.properties
    • Added Quarkus application configuration, including HTTP/HTTPS ports, management interface on port 9000, TLS settings, native image arguments, virtual threads, and file logging.
  • api-sheriff/src/test/java/de/cuioss/sheriff/api/ApiSheriffTest.java
    • Renamed from api-sheriff-library/src/test/java/de/cuioss/sheriff/api/ApiSheriffTest.java.
    • Updated copyright header.
  • api-sheriff/src/test/java/de/cuioss/sheriff/api/test/TestDataGenerator.java
    • Added test data generator for API Sheriff tests.
  • benchmarks/Dockerfile.wrk
    • Added Dockerfile for the WRK load testing tool, including Lua scripts.
  • benchmarks/README.adoc
    • Added documentation for WRK-based HTTP benchmarks and a reference to OAuthSheriff for performance scoring details.
  • benchmarks/doc/performance-scoring.adoc
    • Added documentation indicating that performance scoring details are maintained in the OAuthSheriff repository.
  • benchmarks/pom.xml
    • Added Maven POM for the new benchmarks module.
    • Configured WRK-based HTTP benchmarks with profiles for standard and quick runs.
    • Integrated Prometheus for metrics collection during benchmarks.
    • Defined properties for WRK configuration, benchmark history, and GitHub Pages reporting.
  • benchmarks/scripts/benchmark-pages.py
    • Added Python script to manage benchmark history and assemble GitHub Pages deployment artifacts.
  • benchmarks/src/main/java/de/cuioss/sheriff/api/wrk/benchmark/WrkResultPostProcessor.java
    • Added Java class to post-process WRK benchmark results, convert them to a standardized format, and generate reports.
  • benchmarks/src/main/resources/wrk-scripts/api_health_benchmark.sh
    • Added shell script to execute WRK benchmark against the /api/health endpoint.
  • benchmarks/src/main/resources/wrk-scripts/api_health_check.lua
    • Added Lua script for WRK to perform GET requests and validate 200 responses for /api/health.
  • benchmarks/src/main/resources/wrk-scripts/health_live_benchmark.sh
    • Added shell script to execute WRK benchmark against the /q/health/live endpoint.
  • benchmarks/src/main/resources/wrk-scripts/health_live_check.lua
    • Added Lua script for WRK to perform GET requests and validate 200 responses for /q/health/live.
  • benchmarks/src/main/resources/wrk-scripts/pre-benchmark-health-check.sh
    • Added shell script to perform pre-benchmark health checks for Quarkus, Prometheus, and Keycloak services.
  • benchmarks/src/test/java/de/cuioss/sheriff/api/wrk/benchmark/GatewayEndpointBenchmarkTest.java
    • Added unit tests for parsing WRK output for gateway health endpoints.
  • benchmarks/src/test/java/de/cuioss/sheriff/api/wrk/benchmark/WrkResultPostProcessorTest.java
    • Added unit tests for the WrkResultPostProcessor to verify correct parsing and report generation.
  • benchmarks/src/test/resources/wrk-api-health-results.txt
    • Added sample WRK output for the /api/health endpoint for testing purposes.
  • benchmarks/src/test/resources/wrk-health-results.txt
    • Added sample WRK output for the /q/health/live endpoint for testing purposes.
  • integration-tests/docker-compose.jfr.yml
    • Added Docker Compose override file for JFR profiling, including specific build context and volume mounts.
  • integration-tests/docker-compose.yml
    • Renamed from api-sheriff-quarkus-parent/api-sheriff-quarkus-integration-tests/docker-compose.yml.
    • Updated Keycloak image version and added SHA256 digest pinning.
    • Changed API Sheriff service name to api-sheriff and updated its build context and Dockerfile path.
    • Added port mapping for the management interface (9000).
    • Updated environment variables for Quarkus file logging and certificate paths.
    • Added Prometheus and WRK services to the Docker Compose setup.
    • Updated network name from jwt-integration to api-sheriff.
  • integration-tests/pom.xml
    • Renamed from api-sheriff-quarkus-parent/api-sheriff-quarkus-integration-tests/pom.xml.
    • Updated artifactId, name, and description to reflect its role as an integration test coordinator.
    • Removed Quarkus-specific build properties and dependencies, as the application is now in api-sheriff module.
    • Disabled Quarkus build for this module.
    • Simplified integration test profiles (integration-tests, jfr) and updated exec-maven-plugin configurations for Docker commands and native builds.
  • integration-tests/prometheus.yml
    • Added Prometheus configuration file to scrape metrics from the Quarkus application's management interface.
  • integration-tests/scripts/benchmark-with-monitoring.sh
    • Renamed from api-sheriff-quarkus-parent/api-sheriff-quarkus-integration-tests/scripts/benchmark-with-monitoring.sh.
    • Updated internal paths to reflect the new module structure.
  • integration-tests/scripts/build-native-if-needed.sh
    • Renamed from api-sheriff-quarkus-parent/api-sheriff-quarkus-integration-tests/scripts/build-native-if-needed.sh.
    • Updated script to target the api-sheriff module for native executable builds.
  • integration-tests/scripts/dump-keycloak-logs.sh
    • Added script to dump Keycloak container logs to a specified target directory.
  • integration-tests/scripts/start-integration-container.sh
    • Renamed from api-sheriff-quarkus-parent/api-sheriff-quarkus-integration-tests/scripts/start-integration-container.sh.
    • Updated script to reflect new module names, Docker image names, and Docker Compose commands, including JFR override detection.
  • integration-tests/scripts/stop-integration-container.sh
    • Added script to stop Docker containers for API Sheriff integration tests, including JFR image detection.
  • integration-tests/scripts/verify-environment.sh
    • Renamed from api-sheriff-quarkus-parent/api-sheriff-quarkus-integration-tests/scripts/verify-environment.sh.
  • integration-tests/src/main/docker/certificates/generate-certificates.sh
    • Renamed from api-sheriff-quarkus-parent/api-sheriff-quarkus-integration-tests/src/main/docker/certificates/generate-certificates.sh.
    • Updated certificate distinguished name (DNAME) and Subject Alternative Names (SAN) to include api-sheriff.
  • integration-tests/src/main/docker/certificates/generate-truststore.sh
    • Renamed from api-sheriff-quarkus-parent/api-sheriff-quarkus-integration-tests/src/main/docker/certificates/generate-truststore.sh.
    • Updated script description.
  • integration-tests/src/main/docker/certificates/localhost.crt
    • Added new localhost certificate for integration testing.
  • integration-tests/src/main/docker/certificates/localhost.key
    • Added new localhost private key for integration testing.
  • integration-tests/src/main/docker/health-check.sh
    • Renamed from api-sheriff-quarkus-parent/api-sheriff-quarkus-integration-tests/src/main/docker/health-check.sh.
  • integration-tests/src/main/docker/keycloak/benchmark-realm.json
    • Renamed from api-sheriff-quarkus-parent/api-sheriff-quarkus-integration-tests/src/main/docker/keycloak/benchmark-realm.json.
  • integration-tests/src/main/docker/keycloak/integration-realm.json
    • Renamed from api-sheriff-quarkus-parent/api-sheriff-quarkus-integration-tests/src/main/docker/keycloak/integration-realm.json.
  • integration-tests/src/main/resources/application.properties
    • Added placeholder application.properties for integration tests, indicating runtime configuration is handled by Docker Compose.
  • integration-tests/src/main/resources/test-jwks.json
    • Renamed from api-sheriff-quarkus-parent/api-sheriff-quarkus-integration-tests/src/main/resources/test-jwks.json.
  • integration-tests/src/main/resources/test-public-key.pem
    • Renamed from api-sheriff-quarkus-parent/api-sheriff-quarkus-integration-tests/src/main/resources/test-public-key.pem.
  • integration-tests/src/test/java/de/cuioss/sheriff/api/integration/ApiSheriffIntegrationIT.java
    • Renamed from api-sheriff-quarkus-parent/api-sheriff-quarkus-integration-tests/src/test/java/de/cuioss/sheriff/api/integration/ApiSheriffIntegrationIT.java.
    • Updated copyright header, class visibility, and method names.
    • Modified endpoint paths from /test/health to /api/health and /test/info to /api/info.
    • Updated expected message for the info endpoint.
    • Introduced managementBaseUri() for accessing health and metrics endpoints on the dedicated management port.
  • integration-tests/src/test/java/de/cuioss/sheriff/api/integration/BaseIntegrationTest.java
    • Renamed from api-sheriff-quarkus-parent/api-sheriff-quarkus-integration-tests/src/test/java/de/cuioss/sheriff/api/integration/BaseIntegrationTest.java.
    • Updated copyright header.
    • Added DEFAULT_MANAGEMENT_PORT and managementBaseUri() method to provide the base URI for the Quarkus management interface.
  • integration-tests/src/test/resources/keys/test_public_key.pem
    • Renamed from api-sheriff-quarkus-parent/api-sheriff-quarkus-integration-tests/src/test/resources/keys/test_public_key.pem.
  • pom.xml
    • Updated parent cui-java-parent version to 1.4.4.
    • Refactored modules to api-sheriff, integration-tests, and benchmarks, removing bom and old Quarkus-specific modules.
    • Updated project properties, removing old dependency versions and adding version.oauth-sheriff.
    • Introduced a comprehensive dependencyManagement section, importing Quarkus BOM, CUI BOMs, and managing internal module versions.
    • Updated pluginManagement for Quarkus, compiler, Surefire, and Failsafe plugins with consistent configurations.
    • Added a coverage profile with JaCoCo configuration for merged code coverage reports across modules.
Ignored Files
  • Ignored by pattern: .github/workflows/** (9)
    • .github/workflows/benchmark.yml
    • .github/workflows/claude.yml
    • .github/workflows/dependabot-auto-merge.yml
    • .github/workflows/dependency-review.yml
    • .github/workflows/integration-tests.yml
    • .github/workflows/maven-release.yml
    • .github/workflows/maven.yml
    • .github/workflows/release.yml
    • .github/workflows/scorecards.yml
Using Gemini Code Assist

The full guide for Gemini Code Assist can be found on our documentation page, here are some quick tips.

Invoking Gemini

You can request assistance from Gemini at any point by creating a comment using either /gemini <command> or @gemini-code-assist <command>. Below is a summary of the supported commands on the current page.

Feature Command Description
Code Review /gemini review Performs a code review for the current pull request in its current state.
Pull Request Summary /gemini summary Provides a summary of the current pull request in its current state.
Comment @gemini-code-assist Responds in comments when explicitly tagged, both in pull request comments and review comments.
Help /gemini help Displays a list of available commands.

Customization

To customize Gemini Code Assist for GitHub experience, repository maintainers can create a configuration file and/or provide a custom code review style guide (such as PEP-8 for Python) by creating and adding files to a .gemini/ folder in the base of the repository. Detailed instructions can be found here.

Limitations & Feedback

Gemini Code Assist may make mistakes. Please leave feedback on any instances where its feedback is incorrect or counter productive. You can react with 👍 and 👎 on @gemini-code-assist comments. If you're interested in giving your feedback about your experience with Gemini Code Assist for Github and other Google products, sign up here.

You can also get AI-powered code generation, chat, as well as code reviews directly in the IDE at no cost with the Gemini Code Assist IDE Extension.

Footnotes

  1. Review the Privacy Notices, Generative AI Prohibited Use Policy, Terms of Service, and learn how to configure Gemini Code Assist in GitHub here. Gemini can make mistakes, so double check it and use code with caution.

@cuioss-oliver
cuioss-oliver merged commit 9a2b666 into main Mar 5, 2026
17 of 21 checks passed

@gemini-code-assist gemini-code-assist Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Code Review

This pull request includes changes to the project's configuration, documentation, and build process. Specifically, it adds a description and various configurations to .github/project.yml, enables native access in .mvn/jvm.config, updates CLAUDE.md with project structure and build commands, modifies README.adoc to reflect the project's focus, removes api-sheriff-library documentation, and updates several files related to the Quarkus integration, including removing the de.cuioss.sheriff.api.test.TestDataGenerator class. The code review comments suggest removing the --enable-native-access=ALL-UNNAMED flag due to security concerns and improving the robustness of the Docker image size extraction command in integration-tests/scripts/start-integration-container.sh by using the $AVAILABLE_IMAGE variable directly.

Comment thread .mvn/jvm.config
@@ -0,0 +1 @@
--enable-native-access=ALL-UNNAMED

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

high

The use of --enable-native-access=ALL-UNNAMED is a broad flag that disables module encapsulation for native access across all unnamed modules. This can introduce security vulnerabilities and make the application harder to maintain and update, as it bypasses the protections of the Java Platform Module System. It is strongly recommended to avoid this flag. If native access is strictly necessary for a specific dependency, please scope it down to only the required module (e.g., --enable-native-access=your.specific.module). If it is not needed, this file should be removed.


# Show actual image size
IMAGE_SIZE=$(docker images --format "table {{.Repository}}:{{.Tag}}\t{{.Size}}" | grep api-sheriff-integration-tests | awk '{print $2}' | head -1)
IMAGE_SIZE=$(docker images --format "table {{.Repository}}:{{.Tag}}\t{{.Size}}" | grep "api-sheriff:" | grep -v integration | awk '{print $2}' | head -1)

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

medium

The command to extract the Docker image size is a bit brittle. It uses grep "api-sheriff:" | grep -v integration, which might fail or return incorrect results if other images with similar names exist. Since the correct image tag is already determined and stored in the $AVAILABLE_IMAGE variable earlier in the script, it would be more robust to use that variable directly to find the image size.

Suggested change
IMAGE_SIZE=$(docker images --format "table {{.Repository}}:{{.Tag}}\t{{.Size}}" | grep "api-sheriff:" | grep -v integration | awk '{print $2}' | head -1)
IMAGE_SIZE=$(docker images --format "table {{.Repository}}:{{.Tag}}\t{{.Size}}" | grep "^${AVAILABLE_IMAGE}$" | awk '{print $2}' | head -1)

@cuioss-oliver
cuioss-oliver deleted the chore/align-with-oauthsheriff-structure branch July 22, 2026 06:41
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant