[ 
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)

Reply via email to