[
https://issues.apache.org/jira/browse/CAMEL-26748?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Work on CAMEL-26748 started by Claus Ibsen.
-------------------------------------------
> camel-jbang - self-update and web installers: switch to a nightly SNAPSHOT
> build of the Camel CLI
> -------------------------------------------------------------------------------------------------
>
> Key: CAMEL-26748
> URL: https://issues.apache.org/jira/browse/CAMEL-26748
> Project: Camel
> Issue Type: Improvement
> Components: camel-jbang
> Reporter: Claus Ibsen
> Assignee: Claus Ibsen
> Priority: Minor
> Fix For: 4.24.0
>
>
> Today {{camel self-update}} and the web installers ({{install.sh}},
> {{install.ps1}}) only install releases from Maven Central. To try the latest
> development code, or a fix before its patch release, you have to build Camel
> yourself or switch to a JBang install.
> Apache already publishes a nightly {{camel-launcher}} build to the Apache
> snapshot repository, including the same {{bin.tar.gz}}/{{bin.zip}} archives
> the installers use, for main and for the maintenance branches (for example
> 4.24.0-SNAPSHOT, 4.22.3-SNAPSHOT, 4.18.6-SNAPSHOT).
> h3. Proposed syntax
> Reuse {{--version}}, next to the existing {{X.Y.Z}}, {{X.Y}} and {{LTS}}
> selectors:
> {code}
> camel self-update --version 4.24.0-SNAPSHOT # newest nightly of 4.24, stays
> on it
> camel self-update --version SNAPSHOT # newest nightly of main,
> follows main
> camel self-update --version LTS # back to a release (or
> --version 4.23.0)
> curl -fsSL https://camel.apache.org/install.sh | sh -s -- --version
> 4.22.3-SNAPSHOT
> {code}
> * {{X.Y.Z-SNAPSHOT}} is recorded as the pin and follows the nightlies of that
> version. Once X.Y.Z is released, the update notice suggests the release
> ({{4.24.0}} sorts above {{4.24.0-SNAPSHOT}}).
> * {{SNAPSHOT}} follows the newest nightly of main (the {{<latest>}} version
> of the snapshot repository metadata).
> * Leaving a snapshot pin with an explicit release {{--version}} is allowed
> (today an explicit {{--version}} is refused on a selector pin).
> * Nexus 2 serves Maven 2 metadata (no {{<snapshotVersions>}}) to clients it
> does not take for Maven 3, such as the JDK HTTP client: resolve the build
> from {{<snapshot><timestamp>}} and {{<buildNumber>}} then.
> h3. Points to address
> # *ASF release policy*: nightly builds are not Apache releases and must not
> be promoted to the general public. Document the option in the launcher and
> contributor docs (not on Getting Started), and print a warning such as
> "development build, not an Apache release" when installing one.
> # *Integrity*: a release is verified against a SHA-256 in a manifest on
> camel.apache.org, a different origin than Maven Central. A nightly only has
> {{.sha1}}/{{.md5}} next to it on repository.apache.org (no {{.sha256}}, no
> signature). Verifying against it catches a broken download, not a tampered
> one. Acceptable for an opt-in developer feature, but document the weaker
> guarantee.
> # *A nightly replaces itself*: {{install.sh}} deletes {{versions/<version>}}
> and moves the new copy in. For a release the content never changes, but a
> nightly keeps its version with new content, so a running {{camel tui}} or
> {{camel run}} would lose its jars. Install each nightly in its own directory
> named after its timestamped version (e.g. {{4.24.0-20261108.143653-24}}).
> # *Knowing which nightly runs*: the catalog version of a nightly is
> {{4.24.0-SNAPSHOT}}, so "is there a newer nightly" needs the timestamped
> version of the running build (from its install directory). {{camel version}}
> shows it, with the UTC time it was built (the release jars carry a fixed
> reproducible-build timestamp, so the file dates do not tell).
> # *camel doctor* counts every directory under {{versions/}} as a separate
> installation, so a release next to a nightly (or two nightlies) reports a
> conflict. Only the active one, or one per version line, should count.
> # *Update notice*: a new nightly lands every day, so a daily "new version
> available" notice is noise. Skip it, or check weekly, for a snapshot pin.
> # *Installers*: {{install.sh}}/{{install.ps1}} accept only {{X.Y.Z}}, {{X.Y}}
> and {{LTS}}, and resolve versions from the camel.apache.org manifests. They
> need a path that resolves the nightly from the snapshot repository metadata.
> {{camel self-update}} downloads the installer from the website on every run,
> so this only works once the website publishes the new scripts.
> # *Pruning*: old nightly directories pile up (115 MB each); keep the newest
> few.
> h3. Out of scope
> Running the CLI from a local build of a Camel checkout. That needs a check on
> every start, not a one-shot install, and belongs in a contributor script
> rather than the released launcher.
> _Claude Code on behalf of Claus Ibsen_
--
This message was sent by Atlassian Jira
(v10.3.26#10030026)