Skip to content

ci(release): publish the Conan package to JFrog Artifactory instead of Cloudsmith - #181

Merged
facontidavide merged 3 commits into
mainfrom
ci/release-to-jfrog
Aug 31, 2026
Merged

facontidavide merged 3 commits into
mainfrom
ci/release-to-jfrog

Conversation

@facontidavide

Copy link
Copy Markdown
Contributor

Summary

Move SDK releases from Cloudsmith to the PlotJuggler JFrog Artifactory Conan repository — the remote pj-official-plugins already resolves and primes (PlotJuggler/pj-official-plugins#278), so a released SDK binary lands exactly where consumers look for it instead of being rebuilt from source there.

  • Remote: https://plotjuggler.jfrog.io/artifactory/api/conan/plotjuggler-conan, defined once as a workflow env. Uploads use the org-level JFROG_USER/JFROG_TOKEN (already visible to this repo — no new secrets). The re-publish guard reads anonymously (anonymous read is enabled on the repository).
  • Guard fix: Artifactory reports an unpublished version as "error": "404: Not Found", not RECIPEUNKNOWN; without this the first release of every version would have fallen into the "proceeding without the guard" branch.
  • Matrix aligned with consumers: ubuntu-22.04, ubuntu-22.04-arm, macos-14, windows-2022, windows-11-arm — the images pj-official-plugins CI/release use, so the published package_ids (gcc 11 / apple-clang 15 arm64 / msvc 194) match what downstream conan install computes. Replaces macos-15-intel (Intel macOS not a supported target) and windows-latest; adds Linux aarch64 and Windows arm64.
  • Release-notes snippet and packaging/conan-center-index/README.md now point at the JFrog remote. No Cloudsmith reference remains in the repo.

Verification

  • Anonymous conan list "plotjuggler_sdk/*" -r plotjuggler-conan works from a clean CONAN_HOME; 0.25.0 (unpublished) returns the 404: Not Found JSON the guard now handles, 0.24.0 returns its revision.
  • The five runners can build the SDK: pj-official-plugins' 2026-08-31 release run compiled plotjuggler_sdk from source on every one of them.
  • YAML parsed; pre-commit green. The workflow itself only runs on a v* tag — first real exercise will be the next SDK release (v0.25.0 is current VERSION, not yet published on JFrog).

Follow-ups

  • CLOUDSMITH_USER / CLOUDSMITH_API_KEY repo secrets become unused after merge and can be deleted.
  • linux-ci.yml / macos-ci.yml / windows-ci.yml still run on macos-15-intel / windows-latest; aligning CI runners with the release matrix is a separate change.

🤖 Generated with Claude Code

facontidavide and others added 2 commits August 31, 2026 16:11
…f Cloudsmith

Switch the release workflow's remote to the PlotJuggler Artifactory Conan
repository (plotjuggler.jfrog.io/artifactory/api/conan/plotjuggler-conan),
the same remote pj-official-plugins resolves and primes, so an SDK release
lands where consumers look for it.

- Upload with the org-level JFROG_USER / JFROG_TOKEN secrets (already
  visible to this repo); the re-publish guard reads anonymously (the
  repository allows anonymous read) and now also recognises Artifactory's
  "404: Not Found" for an unpublished version alongside RECIPEUNKNOWN.
- Build matrix aligned with the consumer images so the published
  package_ids are the ones downstream `conan install` computes:
  ubuntu-22.04, ubuntu-22.04-arm, macos-14, windows-2022, windows-11-arm.
  Replaces macos-15-intel (Intel macOS is not a supported target) and
  windows-latest; adds Linux aarch64 and Windows arm64.
- Release notes and the CCI packaging README point at the JFrog remote.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
@facontidavide

Copy link
Copy Markdown
Contributor Author

Second commit (from an independent Codex review of the diff):

  • workflow_dispatch re-runs derived the version from GITHUB_REF_NAME (= main on a manual run), so every retry / allow_republish run failed the VERSION check — now derived from the tag input, passed via env.
  • The re-publish guard now fails closed on any remote error other than the recognised "not found" (previously it warned and published without the guard).

Runner-image notes, no change made (producer and consumer share the labels, so they migrate together):

  • windows-11-arm moves to VS 2026 (msvc 195) during 21–30 Sept 2026 (runner-images#14602) — SDK versions released before then will fall back to source on that leg until re-released.
  • macos-14 retires 2 Nov 2026 (runner-images#13518) — both repos will need a coordinated move (e.g. macos-15, apple-clang 17, whose binaries JFrog already partially holds).

…osed

Review findings on the JFrog switch (inherited from the Cloudsmith version,
but they break the re-run path this workflow documents):

- workflow_dispatch derived the version from GITHUB_REF_NAME, which is the
  branch ("main") on a manual run, so every retry / allow_republish run
  failed the VERSION check with version "main". Derive tag and version
  from the `tag` input, and pass the input through env instead of inline
  interpolation.
- An unexpected error from the remote (anything but the recognised
  "not found") used to log a warning and publish without the guard; the
  later authenticated upload would then succeed even when the anonymous
  read had failed with 401/403/5xx. Fail closed instead; allow_republish
  remains the escape hatch.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
@facontidavide
facontidavide merged commit 77d689e into main Aug 31, 2026
4 checks passed
@facontidavide
facontidavide deleted the ci/release-to-jfrog branch August 31, 2026 14:37
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