diff --git a/README.adoc b/README.adoc index 624af2873..14c9bbdd1 100644 --- a/README.adoc +++ b/README.adoc @@ -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 diff --git a/release.adoc b/release.adoc new file mode 100644 index 000000000..8ed520a0b --- /dev/null +++ b/release.adoc @@ -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--source-release.zip file present in path `/org/apache/camel/k/apache-camel-k-runtime//` (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/. + +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= +``` + +[[voting]] +== Voting + +An email should be sent to dev@camel.apache.org 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 +``` + +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=`). +Do a simple final test. + +The release can be now announced to dev@camel.apache.org and users@camel.apache.org. + +A PMC member with access to the @ApacheCamel Twitter account should announce the release on Twitter as well.