| = Apache Camel Update Recipes |
| |
| 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. |
| |
| == How to run from cmd |
| |
| 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.CamelMigrationRecipe |
| ``` |
| |
| |
| To 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.Camel410LTSMigrationRecipe |
| ``` |
| |
| |
| To 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 https://github.com/quarkusio/quarkus/wiki/Migration-Guide-3.0[Quakus migration guide] instead. |
| ==== |
| |
| == JUnit testing |
| |
| 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. |
| |
| == Test jar |
| |
| Project installs also test classes into a `test-jar` artifact. |
| This allows other projects (like https://github.com/quarkusio/quarkus-updates/[quarkus-updates]) to ruse the tests. |
| |
| == Releasing |
| |
| This project is released as standard Apache Camel module. |
| |
| ⚠️ Check that release notes are up-to-date! |
| |
| Check that everything is alright and run: |
| |
| ```bash |
| ./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: |
| |
| ```bash |
| ./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. |
| |
| Now run: |
| |
| ```bash |
| cd release-utils/scripts/ |
| ./upload-source.sh $CAMEL_UPGRADE_RECIPES_VERSION $CAMEL_UPGRADE_RECIPES_VERSION |
| ``` |
| |
| You'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. |
| |
| ## Post Release |
| |
| 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: |
| |
| ```bash |
| cd release-utils/scripts/ |
| ./promote-release.sh $CAMEL_UPGRADE_RECIPES_VERSION |
| ``` |
| |
| When 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. |
| |
| |
| ## Applying OpenRewrite best practices |
| |
| On pull requests, a GitHub Action is run to apply OpenRewrite best practices to the codebase. |
| To minimize changes, you can run the following command locally to apply the same best practices: |
| |
| ``` |
| mvn -Popenrewrite rewrite:run |
| ``` |