Files

35 lines
1.8 KiB
Markdown

# Exact CI artifact (WJ-026)
`tools/test-ci-artifact` executes unchanged copies of `ci-deploy`, `remote` and
the deployment transport in a temporary Git repository. Its artifact contains
the packaged application supplied to the production acceptance stage. The
fixture manifest identifies that repository's main-branch commit and the JAR's
SHA-256 digest.
The SSH adapter never opens a network connection. It decodes the actual helper
source transmitted by `remote`, checks that it matches the source in the
fixture checkout, and executes its real deployment algorithm with local host
adapters. The resulting selected release and deployed manifest must equal the
input manifest, and the deployed JAR must have the original digest. Dummy
credential files satisfy CI configuration checks without using real keys.
Both Gradle entry points are replaced by failing traps, so an unexpected rebuild
fails the test. The fixture also rejects a manifest naming a different commit
and an artifact changed after validation; neither may reach SSH. A non-main
branch must skip deployment. The successful deployment log must identify the
same commit.
This test covers the CI command, transport and artifact publication boundary.
Its service adapter does not execute the JAR and treats the database as opaque
bytes; real JVM/H2 startup and rollback are covered by the other production
scenarios. It makes no claim about SSH connectivity or provider backup recovery.
WJ-026 runs in `productionAcceptance`; its report is
`build/reports/production/ci-artifact.json`.
Verification: the standalone command-chain probe passed, followed by the
targeted WJ-026 Gradle/Cucumber run on 0.1.87-SNAPSHOT: all four steps passed in
5.628 seconds. The normal CI default includes this scenario alongside all
previous production checks. Completion version: 0.1.88-SNAPSHOT; full CI
verification is pending.