This project contains recipes to assist in the migration of Camel projects.
You can find the recipes in the src/main/resources/META-INF/rewrite directory.
The names of the recipes correspond to the Camel version they support, formatted as [major].[minor].yaml. To migrate from version X.Y to version A.B, apply all recipes with versions greater than X.Y and less than A.B.
For example, to migrate from version 3.8 to 4.4, you need to apply the recipes 4.0.yaml and 4.4.yaml.
Special recipes latest.yaml and 4.10LTS.yaml (or other lts version in the future) can be used for migration to the latest version.
To upgrade to the latest version of Camel, you can execute the following script:
$ mvn -U org.openrewrite.maven:rewrite-maven-plugin:run -Drewrite.recipeArtifactCoordinates=org.apache.camel.upgrade:camel-upgrade-recipes:LATEST -Drewrite.activeRecipes=org.apache.camel.upgrade.CamelMigrationRecipeTo upgrade to the latest version of Camel 4.10 (LTS), you can execute the following script:
$ mvn -U org.openrewrite.maven:rewrite-maven-plugin:run -Drewrite.recipeArtifactCoordinates=org.apache.camel.upgrade:camel-upgrade-recipes:LATEST -Drewrite.activeRecipes=org.apache.camel.upgrade.Camel410LTSMigrationRecipeTo apply specific recipes you can use the following script:
$ mvn -U org.openrewrite.maven:rewrite-maven-plugin:6.0.4:run \
-Drewrite.recipeArtifactCoordinates=org.apache.camel.upgrade:camel-upgrade-recipes:4.8.0 \
-DactiveRecipes=org.apache.camel.upgrade.camel44.CamelMigrationRecipe,org.apache.camel.upgrade.camel45.CamelMigrationRecipe|
Warning
|
This project is not meant for migration of an application based on Camel-Quarkus. Use Quakus migration guide instead. |
Several migration paths to different versions must be covered by the tests. Therefore, the project uses the maven-dependency-plugin to download various versions of certain libraries.
Libraries are not packed into the installed jar.
Project installs also test classes into a test-jar artifact.
This allows other projects (like quarkus-updates) to reuse the tests.
This project is released as standard Apache Camel module.
<!-- versions for camel-spring-boot -->
<spring-boot-version>3.5.10</spring-boot-version>
<springframework-version>6.2.15</springframework-version>
<!-- Should be aligned to quarkus-updates - https://github.com/quarkusio/quarkus-updates/blob/main/pom.xml#L64 -->
<rewrite-recipe-bom.version>3.24.0</rewrite-recipe-bom.version>Check that everything is alright and run:
./mvnw release:prepare -Prelease \
-DreleaseVersion=<CAMEL_UPGRADE_RECIPES_RELEASE_VERSION> \
-DdevelopmentVersion=<next_snapshot> \
-Dtag=<CAMEL_UPGRADE_RECIPES_RELEASE_VERSION>
-Dusername=<asf_username>
-Dpassword=<asf_password>Then perform the release:
./mvnw release:perform -PreleaseGo 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.
Now run:
cd release-utils/scripts/
./upload-source.sh $CAMEL_UPGRADE_RECIPES_VERSION $CAMEL_UPGRADE_RECIPES_VERSIONYou’ll be requested to insert the password to unlock the secret key to sign the artifacts and after uploading to nexus dev repository.
You could verify the result at the following URL:
https://dist.apache.org/repos/dist/dev/camel/camel-upgrade-recipes/<$CAMEL_UPGRADE_RECIPES_VERSION>;
Send an email to dev mailing list to start the vote.
Once the vote for the release has been completed, you need to send the Vote Result mail to mailing list.
Now, you’ll need to release the artifacts from Apache staging repositories to Apache releases repository.
To do this you’ll need to access the Apache Nexus Server.
You’ll need then to promote the release from dist/dev location to dist/release location.
There is an handy script for this:
Now run:
cd release-utils/scripts/
./promote-release.sh $CAMEL_UPGRADE_RECIPES_VERSIONWhen done, release the staging repository.
To do this you’ll need to access https://repository.apache.org/#stagingRepositories. Select proper staging repository and click release.
If the vote email was already sent, send a cancelling vote email. (example)
All changes done during the releasing have to be reverted manually:
-
Staging repository has to be dropped in https://repository.apache.org/#stagingRepositories
-
Both tag and release in github have to be deleted
-
Project version has to be reverted to the value before the release was started. (example commit)
-
Dev folder (example) has to be deleted via svn. See example commands below.
export $VERSION=4.18.0
svn checkout 'https://dist.apache.org/repos/dist/dev/camel/camel-upgrade-recipes' camel-upgrade-recipes-dev
# In case you have performed the above step during some release in the past, you need to update your working copy:
cd camel-upgrade-recipes-dev
svn update .
svn remove $VERSION
# Review and commit the changes:
svn diff
# Commit change
svn commit -m "Cleaning cancelled Camel Upgrade Recipes release *$VERSION)"