Skip to content

Commit

Permalink
doc: Camel K 2.0 independent release process
Browse files Browse the repository at this point in the history
  • Loading branch information
squakez committed May 3, 2023
1 parent 3085f26 commit 0cf1f96
Show file tree
Hide file tree
Showing 2 changed files with 89 additions and 14 deletions.
17 changes: 3 additions & 14 deletions README.adoc
Original file line number Diff line number Diff line change
Expand Up @@ -6,24 +6,13 @@ image:https://img.shields.io/github/license/openshift/origin.svg?maxAge=2592000[
image:https://img.shields.io/badge/zulip-join_chat-brightgreen.svg["Chat on Zulip", link="https://camel.zulipchat.com"]
image:https://github.com/apache/camel-k-runtime/workflows/Build/badge.svg["Build Status", link="https://github.com/apache/camel-k-runtime/actions?query=workflow%3ABuild"]

This repository contains the Apache Camel-K Runtime bits used by the https://github.com/apache/camel-k[_main project_]
This repository contains the Apache Camel-K Runtime bits used by the https://github.com/apache/camel-k[ Camel K project_]. This is a lightweight dependency used on top of Camel Quarkus, required by Camel K operator to set all the runtime configuration on Kubernetes.

== How to bump the main dependencies

In order to simplify the maintenance, you can use a script in `/script/` directory which take care of bumping the versions for the project. As we maintain a BOM which is not inheriting the main project parent, this is very handy to keep versions aligned. Instructions how to run the script:
....
Usage: ./script/bump.sh [options]
--version Bump Camel K runtime version
--camel Bump Camel version
--camel-quarkus Bump Camel-Quarkus version
--quarkus Bump Quarkus version
--graalvm Bump GraalVM version
--help This help message
In order to simplify the maintenance, you can use a script in `/script/` directory which take care of bumping the versions for the project, aligning it with Camel Quarkus version: `./script/bump.sh --camel-quarkus 2.16.0`

Example: ./script/bump.sh --version 3.20.1-SNAPSHOT --camel 3.20.1
....

NOTE: starting from version 3.20, Camel K Runtime will need to use the same dependency notation of Camel.
The project has an automatic action (`./script/sync_cq.sh`) running every night by Github Actions which is in charge to align the set of dependencies required by Camel Quarkus, according to the release.

== Instructions for local debugging

Expand Down
86 changes: 86 additions & 0 deletions release.adoc
Original file line number Diff line number Diff line change
@@ -0,0 +1,86 @@
= Releasing Apache Camel K runtime

This procedure describes all the steps required to release a new version of Apache Camel K runtime dependency.
It is not intended to be final, but rather a working document that needs to be updated when new requirements are found or
the technical process changes.


The https://github.com/apache/camel-k-runtime[Camel K Runtime project] is not a standalone project, it's meant to be used with Camel K. However, since it depends on Camel Quarkus project, the release process is going to be independent and the versioning notation is going to be aligned with the one used by https://github.com/apache/camel-quarkus[Camel Quarkus].

Follow the https://github.com/apache/camel/blob/main/docs/user-manual/modules/ROOT/pages/release-guide.adoc[Camel release guide] in order to setup the Maven environment and gpg for the release.

To prepare a release and check problems:
```
./mvnw release:prepare -DdryRun -Prelease
```

Check the signatures of the files, then clean and prepare the actual release:

```
./mvnw release:clean -Prelease
./mvnw release:prepare -Prelease
```

Then perform the release:

```
./mvnw release:perform -Prelease
```

Go to https://repository.apache.org/ and close the staging repository.

A URL will be generated for the repository, like: https://repository.apache.org/content/repositories/orgapachecamel-xxxx. The URL needs to be communicated during the voting process.


The apache-camel-k-runtime-<version>-source-release.zip file present in path `/org/apache/camel/k/apache-camel-k-runtime/<version>/` (and sha512 sum, if present) will need to be copied in the Apache dev SVN at https://dist.apache.org/repos/dist/dev/camel/camel-k-runtime/<version>.

If the sha512 file is missing, one should be generated before committing to SVN.

Commit all files to the SVN.

Voting can start for camel-k-runtime, or a combined vote with camel-k can be started later.

[[testing]]
== Do some testing

In order to test the runtime, you can use any Camel K operator with version 2 onward (ideally, latest). When installing it, you need to provide the staging repository wich contains the Camel K runtime to be released.

```
kamel install --maven-repository=https://repository.apache.org/content/repositories/orgapachecamel-$APACHE_NEXUS_RUNTIME_REPO_ID
...
kamel run Test.java -t camel.runtime-version=<released_version>
```

[[voting]]
== Voting

An email should be sent to [email protected] asking to test the staged artifacts. Voting will be left open for at least 72 hours.

[[finalizing]]
== Finalizing the release

After the voting is complete with success, the artifacts can be released.

Release the staging repository at: https://repository.apache.org.
Artifacts committed on https://dist.apache.org/repos/dist/dev/ before the voting process need to be copied to the
Apache dist repository on: https://dist.apache.org/repos/dist/release/camel.

Run a script to promote the release from dev to release

```
cd release-utils/scripts/
./promote-release.sh <released_version>
```

Wait for maven mirrors to sync the new artifacts. This can take more than 1 hour sometimes.

Binary files can be now released on Github, together with release notes generated in previous step.
Files need to be uploaded manually to a new Github release.

Before announcing the release, a simple test should be done to verify that everything is in place (running a "Hello World" integration
with the released runtime (`kamel run Test.java -t camel.runtime-version=<released_version>`).
Do a simple final test.

The release can be now announced to [email protected] and [email protected].

A PMC member with access to the @ApacheCamel Twitter account should announce the release on Twitter as well.

0 comments on commit 0cf1f96

Please sign in to comment.