- Understand Jenkins infrastructures and all the areas it currently supports, document all requirements.
- Identify a modernization plan to implement - (Switch to new platform vs Upgrading)
- Present propsal during tech hours (powerpoint with pros and cons of each tool)
Project Summary
We’re modernizing CI for the Dataverse stack (Java WAR on Payara, backed by PostgreSQL, Solr, and S3-compatible storage like MinIO). Today, Jenkins runs our end-to-end pipeline: builds the WAR, spins an integration environment, executes unit + integration tests, and generates JaCoCo coverage across both. We want feature parity (or better), lower ops overhead, and clear PR feedback while keeping costs sane.
What Jenkins Currently Provides (must keep)
Coverage via JaCoCo (WAR/JVM instrumentation)
Attach -javaagent (or offline instrumentation) so code executed inside Payara is covered.
Produce .exec files for unit + integration runs.
Integration Test Suite (full stack)
Boot ephemeral Payara + Postgres + Solr + MinIO; seed data; run Failsafe/UI smoke; capture logs and JUnit XML.
Deterministic startup (health checks), idempotent fixtures, and stable teardown.
Coverage Merge + Reporting
Merge unit + integration .exec; publish one authoritative HTML + XML report.
Enforce thresholds/gates and expose trends.
Non-negotiable Requirements (tool-agnostic)
Runners & Containers: Support Docker/Compose with writable volumes for coverage and logs; JDK 17.
Parity Profiles: -Pcoverage, -Pintegration, (optional -Pui-smoke) runnable locally and in CI.
Artifacts: JUnit XML, Payara server.log, coverage HTML/XML, merged .exec—retained ≥30 days.
Gates & PR UX: Status checks, diff coverage/annotations, and fail-the-build thresholds.
Security: Proper secrets handling (no long-lived keys); auditability for who can rerun jobs.
Performance: Unit ≤ ~5 min, integration ≤ ~25 min (or sharded), reproducible timings.
Options on the Table
All-in GitHub Actions (self-hosted runner): One platform for PR checks, builds, coverage, and artifacts. Lowest ongoing ops after runner hardening; Actions minutes on self-hosted are $0 (you pay the VM).
Hybrid (GHA for PR/build, Jenkins for heavy integration): Smoothest transition; two systems in play.
Jenkins Upgrade: Minimal change risk; keep everything, modernize with pipeline-as-code and containerized agents.
Project Summary
We’re modernizing CI for the Dataverse stack (Java WAR on Payara, backed by PostgreSQL, Solr, and S3-compatible storage like MinIO). Today, Jenkins runs our end-to-end pipeline: builds the WAR, spins an integration environment, executes unit + integration tests, and generates JaCoCo coverage across both. We want feature parity (or better), lower ops overhead, and clear PR feedback while keeping costs sane.
What Jenkins Currently Provides (must keep)
Coverage via JaCoCo (WAR/JVM instrumentation)
Attach -javaagent (or offline instrumentation) so code executed inside Payara is covered.
Produce .exec files for unit + integration runs.
Integration Test Suite (full stack)
Boot ephemeral Payara + Postgres + Solr + MinIO; seed data; run Failsafe/UI smoke; capture logs and JUnit XML.
Deterministic startup (health checks), idempotent fixtures, and stable teardown.
Coverage Merge + Reporting
Merge unit + integration .exec; publish one authoritative HTML + XML report.
Enforce thresholds/gates and expose trends.
Non-negotiable Requirements (tool-agnostic)
Runners & Containers: Support Docker/Compose with writable volumes for coverage and logs; JDK 17.
Parity Profiles: -Pcoverage, -Pintegration, (optional -Pui-smoke) runnable locally and in CI.
Artifacts: JUnit XML, Payara server.log, coverage HTML/XML, merged .exec—retained ≥30 days.
Gates & PR UX: Status checks, diff coverage/annotations, and fail-the-build thresholds.
Security: Proper secrets handling (no long-lived keys); auditability for who can rerun jobs.
Performance: Unit ≤ ~5 min, integration ≤ ~25 min (or sharded), reproducible timings.
Options on the Table
All-in GitHub Actions (self-hosted runner): One platform for PR checks, builds, coverage, and artifacts. Lowest ongoing ops after runner hardening; Actions minutes on self-hosted are $0 (you pay the VM).
Hybrid (GHA for PR/build, Jenkins for heavy integration): Smoothest transition; two systems in play.
Jenkins Upgrade: Minimal change risk; keep everything, modernize with pipeline-as-code and containerized agents.