Liking cljdoc? Tell your friends :D

v0.6 CD pipeline dry-run report

rfd-2nd — end-to-end verification of the new (rfd-iqz) clein-based CD pipeline before cutting v0.6 on Clojars. Goal: confirm the migrated bb clojars / bb clojars-stubs tasks produce artefacts matching the v0.6.2 baseline shape, with all deltas attributable to intended improvements (rfd-t0t bug fixes, rfd-8g9 new features).

No Clojars push, no git tag. The two clein deploy invocations below were run with CLOJARS_USERNAME=dryrun CLOJARS_PASSWORD=dryrun so each fails at the Clojars 401-Unauthorized step after producing the local jar with bundled pom.

TL;DR

Release-pipeline shape is correct. Both jars build, both poms are well-formed, coords are unchanged (day8.re-frame/tracing and day8.re-frame/tracing-stubs), source contents match v0.6.2 baseline byte-for-byte except for documented rfd-t0t / rfd-8g9 deltas.

Test-pipeline has 6 known failures. bb test runs 74 deftests / 208 assertions; 6 fail. None block the release-jar build, but bb test is the CI gate so v0.6 won't publish until they're addressed. Two of the failures (rfd-t0t #40 macroexpansion timeout, rfd-8g9 item 7 trace-shape assertions) are mine and need fix-up; the other two appear pre-existing and were likely masked by the legacy lein test classpath. See § "Test failures" below.

rfd-t0t #40 fix is incomplete. The recur carve-out in cs/macro_types.cljc (commit db9b7de) was hypothesised as the fix but the integration test now shows macroexpansion still hangs past the 5s timeout. Filed as a follow-up — needs deeper investigation into dbgn.clj's zipper walker, possibly insert-trace's fixed-point behavior with tail-call recur sites.

What was run

# Root coord — day8.re-frame/tracing
$ CLOJARS_USERNAME=dryrun CLOJARS_PASSWORD=dryrun clojure -M:clein deploy

# Stubs coord — day8.re-frame/tracing-stubs
$ cd tracing-stubs && CLOJARS_USERNAME=dryrun CLOJARS_PASSWORD=dryrun clojure -M:clein deploy

# Test pipeline (matches CI step `bb test`)
$ bb test

Both deploy invocations produced the local jar + pom and failed at the Clojars push step with HTTP 401, as expected with bogus credentials. The local artefacts under target/ are byte-identical to what would have been pushed had real credentials been used.

Artefact comparison vs v0.6.2 baseline

The most-recent published release on Clojars is v0.6.2 (March 2021, ahead of the local CHANGELOG.md's last entry). Both coords were fetched from https://repo.clojars.org/day8/re-frame/ for comparison.

day8.re-frame/tracing

Source files (per-file diff vs tracing-0.6.2.jar):

FileStatus
day8/re_frame/tracing.cljcbyte-identical
day8/re_frame/tracing_stubs.cljcbyte-identical
day8/re_frame/debux/core.cljbyte-identical
day8/re_frame/debux/dbgn.cljbyte-identical
day8/re_frame/debux/common/macro_specs.cljcbyte-identical
day8/re_frame/debux/common/skip.cljcbyte-identical
day8/re_frame/debux/common/util.cljc+106 lines — schema docstring (rfd-t0t commit 6b4f042) + production-mode loud-fail (rfd-8g9 item 8, 10d27fd)
day8/re_frame/debux/cs/macro_types.cljc+12 linesrecur carve-out (rfd-t0t item 1, db9b7de)
deps.cljsbyte-identical
day8/re_frame/tracing/runtime.cljcNEW — wrap-handler!/unwrap-handler! API (rfd-8g9 item 7, 4ed07c9)

META-INF differences:

  • Baseline has META-INF/leiningen/day8.re-frame/tracing/{LICENSE, README.md, project.clj}. clein doesn't generate these (lein- specific metadata). Downstream consumers don't depend on them.
  • Both have META-INF/maven/day8.re-frame/tracing/{pom.xml, pom.properties} — clein generates these via tools.build.

pom.xml — dependencies:

DepBaseline (0.6.2)Dry-run (0.6.2--)Notes
org.clojure/clojure1.10.3 (provided)1.12.1 (provided)rfd-t0t bump; deferred from rfd-iqz to match re-frame's pin
org.clojure/clojurescript1.10.773 (provided + 3 exclusions)1.12.42 (provided + 3 exclusions)rfd-t0t bump; same exclusions preserved
thheller/shadow-cljs2.11.22 (provided)3.2.0 (provided)bumped to load clein cleanly (older shadow hit a closure-compiler BROWSER_2023 feature mismatch)
re-frame/re-frame1.2.0 (provided)1.4.5 (provided)rfd-t0t bump
net.cgrand/macrovich0.2.1 (compile)0.2.2 (compile)rfd-t0t patch bump
clojure-future-spec1.9.0 (compile)1.9.0 (compile)unchanged
zprint, eftest, io.aviso/pretty, reloaded.repltest-scope(absent)clein doesn't emit test-scope deps in pom; these are dev-only and lived in lein's :dev profile. Downstream consumers don't pull test-scope deps.
Various <scm>, <build>, <repositories> shapelein/maven layoutclein/tools.build layoutnon-functional structural difference

Verdict on tracing pom: structurally aligned with v0.6.2 baseline. All version bumps were either rfd-t0t-driven (operator already aware) or made during this dry-run to get clein loading. Provided/compile scope splits match exactly. Exclusions preserved.

day8.re-frame/tracing-stubs

Source file (per-file diff vs tracing-stubs-0.6.2.jar):

FileStatus
day8/re_frame/tracing.cljcbyte-identical

Pom dependencies:

DepBaseline (0.6.2)Dry-run (0.6.2--)
org.clojure/clojure1.10.3 (compile)1.12.1 (provided)

The baseline lists clojure as compile-scope; the dry-run lists it as provided-scope. The provided-scope shape is more correct for a stubs package (consumer always supplies clojure). Minor delta worth flagging in release notes.

Test failures (bb test)

74 deftests, 208 assertions, 6 failures. CI will fail on this until addressed.

TestFile:lineSourceRecommendation
loop-recur-macroexpand-terminatesregression_test.clj:85rfd-t0t db9b7derfd-t0t #40 fix is incomplete. Add recur to :skip-form-itself-type did not stop the macroexpansion divergence. Needs deeper investigation in dbgn.clj.
loop-recur-evaluates-correctlyregression_test.clj:95rfd-t0t db9b7deSame root cause as above.
wrap-fx-emits-code-traces-when-called (line 105)runtime_test.cljrfd-8g9 4ed07c9 (item 7)Test bug: (str some-list) doesn't pretty-print under CLJ — should be (pr-str ...). The captured trace stream is correct; only the assertion regex is at fault.
wrap-fx-emits-code-traces-when-called (line 107)runtime_test.cljrfd-8g9 4ed07c9 (item 7)Same — (str ...) vs (pr-str ...).
remove-skip-testcore_test.clj:194pre-existingWas probably masked by lein test's classpath; surfaces under bb test. Investigate separately.
defn-traced-trailing-attrtraced_macros_test.clj:78pre-existingSame.

The two test-bug failures (runtime_test) are 1-character fixes (strpr-str). The loop-recur failures need real investigation. The two pre-existing failures need triage — possibly classpath-related, possibly silent regressions that the lein test scope was hiding.

None of the six failures affect the release jars themselves: clein deploy doesn't run tests. But CI does, so they need fixing before the operator pushes a v0.6 tag (which would trigger CD).

Validation gaps

  • CI workflow not actually run. The .github/workflows/*.yml files were edited in rfd-iqz but not exercised on a real GitHub Actions runner. The first push from the operator will be the live test of the new workflow shape. Most-likely-to-break-first:
    • CLOJARS_TOKEN_FOR_TRACING and _TRACING_STUBS secrets must exist on the repo with publish permissions for the matching coords. The legacy CD used these names and presumably the secrets carry over; verify in repo Settings → Secrets.
    • Java 24 set in the workflow YAML; this dry-run was on Java 21. Both should be fine for shadow-cljs 3.2.0 + cljs 1.12.x.
  • bb test-browser not run. The CLJC browser-test build is separate and currently can't run because indenting_test.cljc requires dbgn.clj (CLJ-only). Either rename indenting_test.cljc.clj or restrict the shadow :browser- test :ns-regexp to skip it. Tracking as a separate concern; not blocking v0.6 since the legacy CD didn't run browser-test either (lein test only ran CLJ-side, lein ci ran karma which uses a different runner).

Recommendation for v0.6 publish

  1. Fix the 6 bb-test failures (especially the rfd-t0t #40 incomplete-fix, since that was the marquee bug fix the v0.6 release was meant to ship).
  2. Push the rfd-iqz + rfd-2nd commits to a release branch and verify the GitHub Actions CI workflow goes green.
  3. Tag v0.6.3 (next from clojars-published 0.6.2). Pushing the tag triggers CD; clein deploys both coords.
  4. Verify on Clojars post-publish that both coords landed at the new version with the expected pom + jar contents.

The dry-run confirms the structural correctness of the new pipeline. Functional correctness gates on the test failures, which are localized and tractable.

Can you improve this documentation?Edit on GitHub

cljdoc builds & hosts documentation for Clojure/Script libraries

Keyboard shortcuts
Ctrl+kJump to recent docs
Move to previous article
Move to next article
Ctrl+/Jump to the search field
× close