Note (2026-05-20): This project was previously named
ike-example-itsand slotted into the workspace under the 3-letter keyits. It was renamed tointegration-tests-exampleunder the canonical naming policy in IKE-Network/ike-issues#467 so the artifact ID, git repo name, on-disk directory, and workspace.yaml subproject key all match the spelled-out role. GitHub redirects keep old clone URLs working.
End-to-end smoke tests that verify the IKE Network release cascade
works from the perspective of an external consumer. Each IT is a
self-contained POM project under src/it/ that
maven-invoker-plugin executes in a fresh Maven environment,
resolving ike-tooling, ike-docs, and ike-platform artifacts
from Nexus (or from the local repository if already installed).
This is its own repository (split from what was then
ike-example-ws / now workspace-reactor-example, via
IKE-Network/ike-issues#343)
so the IT harness can evolve on its own cadence and so a broken IT
POM never blocks the workspace release cascade.
It plugs into workspace-reactor-example as an optional subproject:
# Standalone:
git clone https://github.com/IKE-Network/integration-tests-example.git
cd integration-tests-example
mvn verify
# As a workspace-reactor-example subproject (cloned into
# ./integration-tests-example/, where the workspace's file-activated
# profile picks it up):
cd workspace-reactor-example
mvn ws:scaffold-init # or:
git clone https://github.com/IKE-Network/integration-tests-example.git
mvn verify -pl integration-tests-exampleWhen the subproject directory is present inside workspace-reactor-example,
the workspace reactor walks it during full builds. When it's absent,
the workspace reactor skips it cleanly. The directory name matches
the artifact, the repo, and the workspace.yaml subproject key —
one name everywhere (IKE-Network/ike-issues#467).
- Artifact coordinates are correct —
network.ike.platform:ike-parent:N,network.ike.docs:ike-doc-maven-plugin:N, etc. - adoc-classifier attachment is produced — for any project
with
src/docs/asciidoc/, the doc-pipeline profile inike-parentauto-activates andmaven-assembly-pluginattaches a<classifier>adoc</classifier><type>zip</type>artifact. (Earlier revisions tested<extensions>true</extensions>plugin resolution for<packaging>ike-doc</packaging>; that machinery was retired inIKE-Network/ike-issues#321.) - Outputs are produced —
target/generated-docs/html/,target/*.jar, etc., depending on the IT. - No unresolved property references — the consumer POM does not rely on properties defined in parent contexts that weren't carried through.
| IT | Purpose |
|---|---|
src/it/scm-lint-multimodule-pass/ |
Multi-module reactor whose root declares <scm> and whose subprojects inherit. Verifies the ike-version-management-extension MISSING_SCM lint correctly walks the git boundary and skips subproject POMs (IKE-Network/ike-issues#496). |
src/it/scm-lint-root-missing-fail/ |
Reactor root sitting at the .git boundary with no <scm> block. Asserts the lint fires with a MISSING-SCM violation that cites issue #496. |
src/it/scm-lint-standalone-pass/ |
Single-module project at the .git repo root with a local <scm>. Sanity check that the lint still permits the original well-formed shape. |
These ITs require ike-version-management-extension at version
2-SNAPSHOT (or later, once released) to be installed in the local
Maven repository — register it via the IT's .mvn/extensions.xml.
Run mvn install in
IKE-Network/ike-version-management-extension
before invoking mvn verify here. Each IT's setup.bsh creates an
empty .git/ directory in the cloned IT project so the extension's
git-boundary walk treats that POM as a repository root; BeanShell
is used rather than Groovy because the bundled Groovy 3.x in
maven-invoker-plugin 3.9.0 cannot decode the Java 25 class files
that the rest of the IKE stack compiles to.
| IT | Purpose |
|---|---|
src/it/doc-only/ |
Minimal <packaging>pom</packaging> project with src/docs/asciidoc/. Asserts that mvn verify renders HTML and attaches the adoc source classifier without additional plugin config. |
src/it/java-plus-docs/ |
<packaging>jar</packaging> project with src/main/java/ and src/docs/asciidoc/. Asserts that both JAR and HTML are produced in a single mvn verify. |
src/it/bom-import/ |
Consumer that imports network.ike.platform:ike-bom via <scope>import</scope> but does not inherit ike-parent. Asserts the BOM's managed dependency versions flatten correctly at consumer build time. |
src/it/workspace-create/ |
Invokes ws:scaffold-init from a scratch directory and asserts the generated workspace POM references network.ike.platform:ike-parent at the released version. |
Cases worth adding as the cascade matures — each captures a real post-mortem regression class:
| IT | Would have caught |
|---|---|
src/it/scaffold-extensions/ |
.mvn/extensions.xml for wagon-ssh-external (#338) reaching external projects via ike:scaffold-publish. |
src/it/built-with-classifier/ |
Curated narrative pulled from the platform-wide supplement.yaml unpacked from ike-build-standards:built-with:zip (#340). |
src/it/sbom-shape/ |
target/bom.json validates against the CycloneDX 1.6 schema and contains expected components for a known-shape consumer (#333). |
src/it/release-cascade/ |
Full ike-tooling → ike-docs → ike-platform → consumer cascade in isolated local repos with synthetic versions. Catches inter-repo coordination bugs of the kind that surfaced in #358 (staging unwrap), #380 (site URL realignment), and #381 (publish logic missed projectId-container layer). |
src/it/site-topology/ |
Releases a multi-module consumer and asserts every subproject × {root, /N/, /latest/} URL on its gh-pages responds 200 — the missing-from-tree case #382 added to verify-release-published. |
src/it/inheritance-enforcer/ |
External consumer that inherits ike-parent without overriding <distributionManagement><site> — asserts the build FAILS at validate with the #383 enforcer message. |
# Full IT suite:
mvn verify
# Single IT (once authored):
mvn verify -Dinvoker.test=doc-onlyBy default the IT settings consult the local repository first. To
force a pull from Nexus (simulating a clean consumer), delete the
relevant artifacts from ~/.m2/repository/network/ike/ before
running.
This project follows the IKE Network's doc-as-code philosophy:
build conventions, documentation standards, and AI-assistant
guidance live as versioned Markdown files in
ike-build-standards
and are unpacked into every consumer's .claude/standards/ at
the validate phase. When a developer — or Claude itself —
opens this project, the agent reads those standards and applies
them automatically; contributors don't have to memorize the
conventions.
The standards most directly relevant to an integration-test
harness are
TESTING.md
(JUnit 5, AssertJ, maven-invoker-plugin for IT cases),
IKE-MAVEN.md
(IKE-specific Maven conventions), and
IKE-RELEASE.md
(release cascade, the workflow the ITs assert behavior against).
See the
full inventory.
- Documentation:
https://ike.network/integration-tests-example/ - Workspace:
IKE-Network/workspace-reactor-example— pluggable harness for the workspace's release cascade - Foundation sites:
ike-tooling·ike-docs·ike-platform - Build standards:
ike-build-standards - Issues:
IKE-Network/ike-issues(cross-project tracker) - Source:
IKE-Network/integration-tests-example
Apache License 2.0. See LICENSE or apache.org/licenses/LICENSE-2.0.
New to IKE development? The Developer Environment guide covers IDE configuration, JDK 25 setup, and the tooling conventions every IKE workspace expects — start there before your first build.