Hi All, Moved to a new maven plugin named wso2-release-helper-plugin [1].
Thanks, [1] https://github.com/wso2/maven-tools/tree/master/wso2-release-helper-plugin On Mon, Aug 10, 2015 at 10:07 AM, Jasintha Dasanayake <[email protected]> wrote: > > > On Fri, Aug 7, 2015 at 2:35 PM, Kavith Lokuhewage <[email protected]> wrote: > >> Hi All, >> >> Since now we are going to support multiple goals of release plugin and >> it's anymore not only about pre-prepare, shall we rename the plugin as >> "wso2-maven-release-plugin" instead of calling it >> "wso2-release-pre-prepare-plugin"? >> > > above suggested name make sense that this plugin can be used along to > release a repository, but that's not true right ,so still maven release > plugin also needs to do a release , so renaming into > "wso2-maven-release-plugin" is misleading. > > IMO Actually, this plugin is helping to complete maven-release-plugin > goals , so this is a helper plugin something similar to the maven build > helper plugin. we can rename this as a wso2-maven-release-helper plugin > > >> >> Also shall we assign a plugin goal prefix to this plugin? So that it is >> possible to invoke goals using the prefix instead of full plugin name >> (similar to Apache maven release plugin). >> > > +1 > > Thanks and Regards > /Jasintha > >> >> eg: wso2-release:rollback >> >> WDYT? >> >> Thanks. >> >> On Fri, Aug 7, 2015 at 12:01 PM, Kavith Lokuhewage <[email protected]> >> wrote: >> >>> Hi all, >>> >>> WSO2 maven release prepare plugin [1] was introduced to help Apache >>> maven release plugin to prepare releases of WSO2 specific maven projects >>> (ESB and Registry). These projects contain *artifact.xml* files which >>> consists of meta-data (including versions) of the project artifacts and >>> they need to be updated for both release version (tag) and the next >>> development version(trunk) during the release preparation. WSO2 maven >>> release prepare plugin addresses this requirement. >>> >>> *Current implementation* >>> >>> With Apache maven release plugin, it's possible to configure additional >>> maven plugins as completion goals of preparation goal[2]. >>> >>> Currently, pre-prepare goal of wso2 maven release prepare plugin should >>> be executed as a completion goal of Apache maven release plugin. Current >>> implementation only supports svn. Current implementation >>> is summarized below. >>> >>> - Check out already committed svn tag to a temporary location >>> - Iterate though all maven projects and identify ESB and Registry >>> projects >>> - Read release.properties[3] file and identify release version for >>> that particular project. >>> - Update *artifact.xml *file with release version. >>> - Commit the changes to tag. >>> - Check out trunk to a temporary location. >>> - Iterate though ESB and Registry projects. >>> - Read release.properties[3] file and identify next development >>> version for that particular project. >>> - Update *artifact.xml* file with >>> - commit the changes to trunk. >>> >>> *Current drawbacks and limitations * >>> >>> - Only supports svn. >>> - Implementing support for other scm providers require a lot of >>> effort. >>> - Even-though a common scm-api[4] was used for svn related tasks, >>> implementation is too tied to svn way of doing things (Eg. Tagging in >>> svn >>> vs git). >>> - Checking out a remote repository temporary may affect performance >>> with large repositories and introduces an unnecessary complexity. >>> - doesn't support rollback mode [5] >>> - doesn't support dryRun mode [2] >>> >>> *Proposed implementation* >>> >>> Main goals are to support other scm providers (avoid any scm provider >>> specific implementations) and avoid cloning remote repositories. >>> Rollback and dryRun modes can also be supported with this design. >>> >>> As mentioned under[2], in the release:prepare goal, Apache maven release >>> plugin provides two entry points for other plugins as below. >>> >>> >>> - preparationGoals - Goals to run as part of the preparation step, >>> after transformation from snapshot versions to release version, but >>> before >>> committing. >>> - completionGoals - Goals to run on completion of the preparation >>> step, after transformation back to the next development version but >>> before >>> committing. >>> >>> These two entry points can be used to access already modified projects >>> in the two phases - release preparation and next snapshot preparation - but >>> before committing them to remote repo. New two different goals will be >>> introduced for WSO2 maven release prepare plugin as below. These two >>> can be executed as a preparation goal and a completion goal of Apache maven >>> release plugin. >>> >>> - prepare-release : find ESB and Registry projects in local repo and >>> update *artifact.xml* files with release version for each particular >>> project (captured from release.properties[3] file) >>> - prepare-snapshot : find ESB and Registry projects in local repo and >>> update *artifact.xml* files with next dev version for each >>> particular project (captured from release.properties[3] file) >>> >>> This way, it's possible to have *artifact.xml* files >>> also modified before Apache maven release plugin commits the changes. >>> Yet, Apache maven release plugin does not commit all the changed files >>> in the repository but only commit changed pom.xml files. As of now, there >>> is no way to include changed *artifact.xml* files in Apache maven >>> release plugin commits (there's a configuration to exclude files >>> though). >>> >>> To address above issue, we need to commit changed *artifact.xml* file >>> before Apache maven release plugin commits. It is possible to use >>> scm:checkin goal of maven scm plugin[6] to commit changed files to remote >>> repository. It is possible to use mojo-executor [7] to execute this within >>> mojos in WSO2 maven release prepare plugin. This way it is possible to >>> avoid any scm related logic inside WSO2 maven release prepare plugin >>> and it will have OOB support for all scm providers which are currently >>> supported by maven scm plugin[6]. >>> >>> *rollback **support* >>> >>> A new goal called rollback will also be introduced for WSO2 release >>> prepare plugin. However, Apache release plugin does not provide any >>> entry point for other plugins in release:rollback goal. Hence, this >>> rollback goal of WSO2 maven release prepare plugin will have to be >>> manually invoked in order to rollback changed *artifact.xml* files. >>> >>> Implementation of rollback goal can be done similar to prepare-release >>> and prepare-snapshot goals (using release.properties files and maven >>> scm plugin). However, this introduces the constraint that >>> wso2-release:rollback goal should be executed before executing rollback >>> goal Apache release plugin (since release.properties file will be >>> deleted after rollback of Apache release plugin ). >>> >>> Alternatively, it is possible to introduce a backup file for each >>> modified *artifact.xml* (similar to what Apache release plugin does). >>> Then again an another issue rises - How to cleanup these backup files after >>> a successful release:prepare and a release:perform (release:perform >>> also does not provide an entry point for other plugins)? >>> >>> Please share your thoughts on this. >>> >>> Thanks, >>> >>> [1] >>> https://docs.wso2.com/display/DVS371/Using+Maven+with+Developer+Studio#UsingMavenwithDeveloperStudio-MavenReleaseplug-in >>> >>> [2] >>> http://maven.apache.org/maven-release/maven-release-plugin/prepare-mojo.html >>> >>> [3] Maven release plugin creates a file called release.properties in >>> the root of the repository after finalizing release versions and next >>> development versions for each maven project in the repository. This file >>> also consists of the tag name for the release and scm connection details. >>> This file is created during release : prepare goal of apache maven release >>> plugin and will be cleaned after executing release : perform. >>> >>> [4] http://maven.apache.org/scm/maven-scm-api/ >>> >>> [5] >>> http://maven.apache.org/maven-release/maven-release-plugin/rollback-mojo.html >>> >>> [6] http://maven.apache.org/scm/ >>> >>> [ 7 ] http://timmoore.github.io/mojo-executor/ >>> -- >>> *Kavith Lokuhewage* >>> Software Engineer >>> WSO2 Inc. - http://wso2.com >>> lean . enterprise . middleware >>> Mobile - +9477-9-145-123 | +9471-455-6-401 >>> Linkedin <http://www.linkedin.com/pub/kavith-lokuhewage/49/473/419> >>> Twitter <https://twitter.com/KavithThiranga> >>> >> >> >> >> -- >> *Kavith Lokuhewage* >> Software Engineer >> WSO2 Inc. - http://wso2.com >> lean . enterprise . middleware >> Mobile - +9477-9-145-123 | +9471-455-6-401 >> Linkedin <http://www.linkedin.com/pub/kavith-lokuhewage/49/473/419> >> Twitter <https://twitter.com/KavithThiranga> >> > > > > -- > > *Jasintha Dasanayake* > > *Senior Software EngineerWSO2 Inc. | http://wso2.com > <http://wso2.com/>lean . enterprise . middleware* > > > *mobile :- 0711368118* > -- *Kavith Lokuhewage* Software Engineer WSO2 Inc. - http://wso2.com lean . enterprise . middleware Mobile - +9477-9-145-123 | +9471-455-6-401 Linkedin <http://www.linkedin.com/pub/kavith-lokuhewage/49/473/419> Twitter <https://twitter.com/KavithThiranga>
_______________________________________________ Architecture mailing list [email protected] https://mail.wso2.org/cgi-bin/mailman/listinfo/architecture
